2009-10-09 Chris Toshok <toshok@ximian.com>
[moon.git] / src / ChangeLog
blobd06230266e89ad85f661d9cbaae781051dc0f089
1 2009-10-09  Chris Toshok  <toshok@ximian.com>
3         * control.cpp (Control::OnPropertyChanged): drt #438 shows that
4         you can set Template = null to clear the template's visual tree.
5         bizarre, but true.
6         (Control::ClearTemplate): set template_root to NULL after we
7         remove it.
9         r: jackson
11 2009-10-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13         * playlist.cpp: Quick fix to view NASA's LCROSS satellite crash into
14         the moon live on NASA TV's asx streams.
16 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
18         * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
19         which may happen quite often and in common code paths.
21         r: alan
23 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
25         * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
26         invoking the property changed handler the values we have might have
27         gotten deleted. Clone them before calling the property changed handler
28         so that we don't access deleted values. Makes #544211 not crash.
30         r: alan
32 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34         * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
35         when returning early.
37         r: alan
39 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
41         * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
43         * dependencyproperty.g.cpp: Regenerated.
45         r: alan
47 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
49         * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
51         r: spouliot
53 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
55         * audio.cpp: AudioSource::Dispose: lock around field accesses,
56         and move the fields into a local variables so we can clean up
57         with the mutex unlocked.
59         r: spouliot
61 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
63         * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
64         end up with a null stream, so don't spam the console with warnings.
66         r: spouliot
68 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
70         * mediaplayer.cpp: Open: seek to the initial pts.
72         * playlist.cpp: When we re-open a media after stopping it, don't do
73         it async since we might end up doing things in the wrong order.
75         Fixes #476180.
77         r: spouliot
79 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
81         * deployment.cpp|h: Make shutdown an async/iterative process to ensure
82         we don't accidentally get deadlocked while shutting down. Change shutdown
83         sequence to first ensure no media threads are running, then do managed
84         shutdown unloading the appdomain, and do nothing more until the appdomain
85         has unloaded successfully (calling mono_domain_finalize which we used to is
86         very wrong since it assumes all managed threads have been aborted, when only
87         mono_domain_unload actually aborts threads - we ended up executing code in
88         other managed threads with freed objects everywhere). Added an
89         AppDomainUnloadedEvent so that the plugin can know when the appdomain has
90         been unloaded and free itself. Dispose the types when the deployment is
91         disposed, and delete them types when the deployment is destroyed. This way we
92         make sure that the types are available until all the objects have been
93         deleted. This also fixes different code paths / deletion points
94         depending on whether we built with object tracking or not. This also
95         removes the need for the is_dead variable. Maintain a counter of the number of
96         deployments alive so that we know when runtime can be shut down.
98         * dependencyobject.cpp: Don't emit events while we're shutting down.
99         Deployment::is_dead is dead now, remove checks, replaced with Deployment::
100         IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
101         thread.
103         * dependencyproperty.cpp|h: Add a Dispose method which clears out any
104         refs the default value might have (but keep a default value, we depend
105         in some places on having a default value).
107         * type.cpp: Dispose: call Dispose on the DP.
109         * type.h:
110         * type.h.in: Remove 'disposed' field: no longer needed.
112         r: andreia
114 2009-10-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
116         * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
117         This ensures that we don't keep the (default) 5s buffer of media in
118         memory while stopped. Add lots of checks for a stopped media so that
119         we don't refill the buffer after clearing it.
120         Makes MS DRT #238, #239 and #244 require a lot less memory.
122         * playlist.cpp: Call Play on the media too when we start playing.
124 2009-10-05  Jeffrey Stedfast  <fejj@novell.com>
126         * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
127         silently drop repeated key-press events.
129         r: spuliot
131 2009-10-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
133         * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
134         issue where we'd create more MediaFrames than the delayed unref
135         mechanism could free, so we'd run out of memory.
137         r: spouliot
139 2009-10-05  Alan McGovern  <amcgovern@novell.com>
141         * cbinding.h:
142         * cbinding.cpp:
143         * dependencyobject.h:
144         * dependencyobject.cpp: Store the starting_generation and
145           only_unemitted flags on the EmitContext so that the values
146           are used when we call DoEmitCurrentContext from managed
147           code. r: toshok
149 2009-10-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
151         * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
152         if we there is already a request pending.
154         r: spouliot
156 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
158         Gets drt #412 a bit closer to passing.
160         * textblock.cpp (TextBlock): Initialize our own FontDescription
161         needed so we can tell the layout engine what the base font to use
162         for calculating BlockLineHeight proportions.
163         (TextBlock): Delete our FontDescription.
164         (UpdateFontDescription): New method to update our own
165         FontDescription and notify the layout engine of any changes.
166         (UpdateLayoutAttributes): Call UpdateFontDescription().
167         (UpdateFontDescriptions): Same.
169         * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
170         distance to the baseline given the base font.
171         (TextLayout::OverrideLineHeight): Don't check line_height against
172         NAN, check it against 0 instead. NAN means that we use the
173         containing TextBlock's font height as a base.
174         (TextLayout::LineHeightOverride): New method to figure out the
175         line height value to use when using BlockLineHeight strategy.
176         (TextLayout::DescendOverride): Given the overridden LineHeight,
177         calculate the baseline offset using the proportional distance
178         calculated in SetBaseFont().
179         (TextLayout::Layout): Instead of using 0 as the overridden line
180         descent, use the value calculated from DescendOverride(). Also use
181         LineHeightOverride() instead of line_height directly.
183         r: spouliot
185 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
187         * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
188         disposed, that ensures that the queue is cleared up even if the
189         MmsPlaylistEntry itself leaks.
191         r: spouliot
193 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
195         * pipeline-asf.cpp: Fix some potential leaks.
197         r: spouliot
199 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
201         * fonts.h (class TextFont): Make some of the getters const.
203         r: shana
205 2009-10-01  Andreia Gaita  <avidigal@novell.com>
207         * utils.cpp: if there's no Application instance, use the root temp
208         dir to store, and track the created path directly on deployment so
209         it can be cleared up in the end.
211         r: spouliot
213 2009-10-01  Alan McGovern  <amcgovern@novell.com>
215         * runtime.cpp: WalkTreeForLoaded has already been called on
216           this element as part of the previous call to AttachLayer.
218 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
220         * dependencyobject.h: Make GetUnsafeDeployment available always, media
221         code might use it to get the deployment of the object instead of the
222         current deployment.
224         * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
225         deployment instance to wait until there is nothing more executing in 
226         the thread pool regarding that deployment.
228         * deployment.cpp|h: Maintain a list of all the Media instances created
229         and dispose them when the deployment shuts down.
231         r: spouliot
233 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
235         * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
236         some code duplication in all our Emit methods.
238         r: alan
240 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
242         * audio.cpp: Dispose: make sure the audio really stops.
244         r: alan
246 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
248         * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
249         thread-safe, since managed code may clear them up on the finalizer
250         thread.
252         * cbinding.cpp|h: Regenerated.
254         r: alan
256 2009-09-30  Alan McGovern  <amcgovern@novell.com>
258         * runtime.cpp: If the surface has been zombified, don't handle
259           the plugin focus in/out event. r: toshok
261 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
263         * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
264         null checks.
266 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
268         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
269         decoding async. This ensures we don't reenter managed code when the
270         frame comes from MediaStreamSource.
272         r: spouliot
274 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
276         * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
277         for the queue, it may blow up when the process shuts down because the
278         media thread might still be running when the list is destroyed causing
279         random crashes.
281         r: spouliot
283 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
285         * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
286         specifying the max number of threads, and use static memory for all of
287         them.
289         r: spouliot
291 2009-09-30  Andreia Gaita  <avidigal@novell.com>
293         * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
294         paths that get created in applications, so they can be released even
295         if the Application instance leaks.
297         * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
298         which keeps the base temp path of all files and resources for an
299         application.
301         * utils.cpp: use the Application GetResourceRoot as a base path for
302         all temporary files.
304         r: alan
306 2009-09-30  Alan McGovern  <amcgovern@novell.com>
308         * runtime.cpp: When the plugin gets focus or loses focus, we
309           have to emit the corresponding event on the currently
310           focused element - not on the TopLevel. Note that if we focus
311           out of the plugin, we emit LostFocus on the currently
312           focused element but do *not* set the current focused element
313           to null. Lastly when handling the mouse down event, we
314           should not try to focus elements in the hitlist from the
315           mouse click. This mostly fixes DRT 745. r: rolf
317 2009-09-30  Alan McGovern  <amcgovern@novell.com>
319         * textbox.h:
320         * validators.h:
321         * validators.cpp: IsInputMethodEnabled defaults to true and
322           also needs a validator to ensure that it's only set on 
324         * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
325           true and also needs a validator to ensure that it's only set
326           on TextBoxes
328 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
330         * pipeline.cpp: Reset more state when a seek completes.
332         r: alan
334 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
336         * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
337         call to MediaThreadPool::AddWork, since otherwise we have a race
338         condition between setting the is_disposed variable to true and adding
339         the work.
341         r: alan
343 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
345         * mediaelement.cpp: Stop immediately when the we're deattached from the
346         visual tree.
348         r: andreia
350 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
352         * deployment.h: Fix typo in comment.
354 2009-09-29  Chris Toshok  <toshok@ximian.com>
356         * dependencyobject.cpp (EventObject::StartEmit): when we copy the
357         list of closures to invoke, don't copy ones that are
358         pending_removal.  This fixes the crash due to re-entering in drt
359         502 in a way that doesn't break the existing plugin behavior.
360         (EventObject::DoEmitCurrentContext): revert the
361         !closure->pending_removal change that caused plugin event listener
362         breakage in the xaml tests.
364         r: andreia
366 2009-09-29  Larry Ewing  <lewing@novell.com>
368         * border.cpp (InsideObject): improve Border::InsideObject to
369         handle the actual drawn bounds.
371         Fixes #2022.
373         r: jackson
374         
375 2009-09-29  Jeffrey Stedfast  <fejj@novell.com>
377         * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
378         to be more consistent with the managed method names. Don't set
379         Handled to true, since anything that makes it this far should also
380         bubble up.
382         r:toshok
384 2009-09-28  Andreia Gaita  <avidigal@novell.com>
386         * application.cpp, bitmapimage.cpp,
387           file-downloader.cpp, fontmanager.cpp,
388           pipeline-ui.cpp, pipeline.cpp,
389           utils.cpp: uniform usage of glib io calls
391         r: toshok
393 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
395         * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
396         the current deployment as it was when returning from it.
398         r: lewing
399         
400 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
402         * mediaelement.cpp|h: When receiving markers from the pipeline, store them
403         in a general list and only move them into a TimelineCollection just before
404         checking if they are to be emitted. This avoids locking a mutex during a
405         potentially large time, as well as trying to emit an event on the pipeline
406         thread (collection changed event when adding markers to the
407         TimelineCollection).
409         r: spouliot
411 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
413         * audio.cpp: Follow refcounting rules with the AlsaPlayer.
415         r: alan
417 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
419         * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
420         locked. CreateInstance: Add a couple of comments.
422         r: alan
424 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
426         * deployment.cpp|h: No need for the downloaders field to be a pointer
427         when it'll always exist. Move the downloader abort code to the node's
428         destructor, this way we ensure that the downloader is always aborted.
429         Reinitialize: clear the downloaders list instead of creating a new one
430         (and leaking the previous one).
432         r: spouliot
434 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
436         * audio.cpp|h: AudioPlayer can't derive from EventObject, since 
437         EventObject is tied to a particular deployment, while AudioPlayer is
438         process-wide. Implement simple refcounting in AudioPlayer to work
439         around this and keep the old behaviour.
441         * type.h:
442         * value.h:
443         * cbinding.h:
444         * type-generated.cpp: Regenerated.
446         r: alan, spouliot
448 2009-09-28  Chris Toshok  <toshok@ximian.com>
450         * frameworkelement.h|cpp (class FrameworkElement): remove the
451         empty SetValueWithErrorImpl implementation.
453         r: jeff
455 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
457         * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
458         MS DRT #244 (and possibly others) where we'd end up raising the
459         MediaOpened event while still parsing xaml (the test didn't have time
460         to attach an handler to the event before it was raised).
462         r: spouliot
464 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
466         * mediaelement.cpp: Stop when we're detached. This helps with a
467         resource "leak": if the user code just removes the mediaelement from
468         the visual tree and forgets about it, we'd continue playing until the
469         gc kicks in and finds out it should free the mediaelement.
471         r: spouliout
473 2009-09-28  Chris Toshok  <toshok@ximian.com>
475         * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
476         call closure functions when the closure is pending removal.  if
477         it's a managed delegate it will likely have already been
478         collected.  This fixes the regression of drt #502.
480         r: spouliot
482 2009-09-24  Stephen Shaw  <sshaw@decriptor.com>
484         * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
485         Method now returns a value
487         r: lewing
489 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
491         * mediaelement.cpp|h: Remove unused methods.
493         r: sde
495 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
497         * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
499         r: sde
501 2009-09-23  Chris Toshok  <toshok@ximian.com>
503         * uielement.cpp (UIElement::EmitGotFocus): this event passes
504         RoutedEventArgs, not EventArgs.
505         (UIElement::EmitLostFocus): same.
507         * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
508         make both MouseButtonEventArgs and MouseWheelEventArgs subclass
509         from MouseEventArgs.  Move MouseEventArgs::GetButton and
510         ::GetClickCount to MouseButtonEventArgs.
512         * runtime.cpp (Surface::CreateArgsForEvent): for the button
513         events, create a MouseButtonEventArgs.
515         * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
516         button handling methods.
518         * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
520         r: lewing
522 2009-09-23  Chris Toshok  <toshok@ximian.com>
524         * uielement.h (class UIElement): add event metadata.
526         * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
527         LoadedEvent.
528         (UIElement::ClearLoaded): same with Unloaded.
530         * type-generated.cpp, type.h, value.h: regen.
532         * transform.h (class Matrix): add event metadata.
534         * timeline.h (class TimelineGroup): add event metadata.
536         * textbox.h (class TextBox): add event metadata.
537         (class PasswordBox): add event metadata.
539         * stylus.h (class StylusPoint): add event metadata.
541         * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
542         captured/pendingReleaseCapture before emitting the event,
543         otherwise we could get into an infinite loop between handler and
544         ReleaseMouseCapture.
545         (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
547         * namescope.h (class NameScope): add event metadata.
549         * multiscaleimage.h (class MultiScaleImage): add event metadata.
551         * mediaelement.h (class MediaElement): add event metadata.
553         * media.h (class MediaBase): add event metadata.
555         * frameworkelement.h (class FrameworkElement): add event metadata.
557         * deployment.h (class Deployment): add event metadata.
559         * dependencyproperty.h: remove PropertyChangedEventArgs from here.
561         * eventargs.h: and put it here.
563         * dependencyproperty.h|cpp: replace the emitting count with a
564         stack of EmitContexts.  This is since the managed layer calls a
565         function to actually perform the emit, and the managed code
566         doesn't have access to the context.
567         (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
568         can replace the normal emit machinery with a delegate into managed
569         that calls the OnEvent method.
570         (StartEmit): push the new context onto the stack
571         (DoEmit): if there's an on_event handler, call that and let it do
572         the work.  otherwise call DoEmitCurrentContext.
573         (DoEmitCurrentContext): move the actual invoking of event closures
574         here.
575         (FinishEmit): pop the context off the stack.
576         (DependencyObject::ProviderValueChanged): we have to allocate
577         PropertyChangedEventArgs on the heap now that it's refcounted.
578         (DependencyObject::NotifyListenersOfPropertyChange): same.
579         (DependencyObject::collection_item_changed): same.
580         
581         * control.h (class Control): add event metadata.
583         * control.cpp (Control::OnPropertyChanged): when emitting
584         IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
586         * collection.h (class Collection): add event metadata.
588         * brush.h (class ImageBrush): add event metadata.
590         * bitmapsource.h (class BitmapSource): add event metadata.
592         * bitmapimage.h (class BitmapImage): add event metadata.
594         * application.h (class Application): add event metadata.
596         * cbinding.h|cpp: regen.
598         r: spouliot, andriea
600 2009-09-23  Stephane Delcroix  <sdelcroix@novell.com>
602         * multiscaleimage.cpp: fix the vp_h computation. vp_h is
603         vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
605 2009-09-21  Stephane Delcroix  <sdelcroix@novell.com>
607         * multiscaleimage.h|cpp: stop the animations when setting
608         UseSprings to false. Set the values to the target values
609         of the animations too.
611         r: toshok
613 2009-09-18  Jackson Harper  <jackson@ximian.com>
615         * xaml.cpp|h: Use flags passed to createfromstring now for
616         validating templates and importing the default namespace.
617         * value.h
618         * collection.cpp|h: Implement a resource dictionary collection,
619         this is a collection of dictionaries used for the
620         MergedDictionaries property of ResourceDictionaries
621         * resources.cpp|h: Implement the merged dictionaries property and
622         check them when looking up items in a dictionary.
623         * dependencyproperty.g.cpp:
624         * types-generated.cpp:
625         * cbinding.c|h: regen
626         
627 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
629         * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
630         media before asserting that it isn't null.
632         r: sde
634 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
636         * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
637         buffering_time of 1 ms, otherwise we'll do nothing at all since we have
638         the requested amount of buffer (nothing at all), but buffering progress
639         is is still at 0% (since we didn't buffer anything). Don't change the
640         buffering progress calculation, since playback would fail (there would
641         be nothing to play).
643         r: sde
645 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
647         * mms-downloader.cpp: Remove old debugging code that was stripping out
648         everything after a ? in a url.
650         r: sde
652 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
654         * xaml.cpp: Honor the debug configuration option instead of enabling it
655         all the time.
657         * glyphs.cpp: Move debug code into conditional expression.
659         * debug.h: DEBUG is resolved to nothing at all in release builds, so
660         when checking if debug is defined in complex expressions we need to
661         use 'defined (DEBUG)', since otherwise the expression becomes bogus.
662         Also Move #include "runtime.h" outside of the conditional code, this
663         way we don't have different include requirements in other headers
664         depending on debug/release configuration.
666         r: sde
668 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
670         * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
671         specifying whether the current thread should be registered with the
672         deployment or not.
673         
674         This fixes a minor catch with the media threads: they need to register
675         the current thread with the deployment before calling
676         SetCurrentDeployment, but they can't call GetDeployment to get the
677         deployment to register the thread with before calling
678         SetCurrentDeployment since it would trigger a deployment mis-matched
679         warning.
681         * pipeline.cpp|h: Add a thread pool to manage media threads instead of
682         creating one thread per Media instance.
684         * pipeline-asf.cpp: Updated according to Media API changes.
686         r: geoff
688 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
690         * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
691         it.
693         r: sde
695 2009-09-16  Larry Ewing  <lewing@novell.com>
697         * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
698         not DependencyObject so that property changes actually work.
700         r: kangaroo
702 2009-09-14  Jeffrey Stedfast  <fejj@novell.com>
704         * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
706         * application.cpp (GetResourceAsPath): ExtractAll using
707         CanonModeResource (everything gets lowercased).
709         * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
710         .dll's get lowercased).
711         (xap_create_from_file): Canonicalize the AppManifest.xaml file
712         name.
714         * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
715         argument to specify whether it is canonicalizing a Xap file, a
716         resource name, or just fixing path separators. When in Xap mode,
717         don't downcase Dll base names.
718         (ExtractAll): When extracting a Xap, symlink a fully lowercased
719         filename to the unmodified .dll name.
721         r: spouliot
723 2009-09-16  Larry Ewing  <lewing@novell.com>
725         * tilesource.h: make tileblendtime unamanaged so we can use it
726         when creating the fade animation.
727         
728         * multiscaleimage.cpp (Render): use the duration from the
729         tilesource for the fade animation.  This probably needs to listen
730         to change events but more testing is required.
732         r: toshok
733         
734 2009-09-16  Larry Ewing  <lewing@novell.com>
736         * style.h: make IsSealed field internal. 
738 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com>
740         * messagebox.h: Remove tab to please the generator
742         r: lewing
744 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com> 
746         * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
747         or format
749         r: sde
751 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
753         * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the 
754         resource loader from the main thread.
756         r: sde
758 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
760         * ChangeLog:
761         * bitmapimage.cpp: don't leak get_res_aborter.
763         r: sde
765 2009-09-16  Stephane Delcroix  <sdelcroix@novell.com>
767         * multiscaleimage.h|cpp: StopDownloading () abort and clean the
768         downloaders. Call it from the dtor, InvalidateTileLayer and
769         OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
771         r: rolf
773 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
775         * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
776         and add a 'description' field to ease understanding of what is going
777         on in the pipeline.
779         r: sde
781 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
783         * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
785         r: lewing
787 2009-09-15  Larry Ewing  <lewing@novell.com>
789         * control.h: Mark IsTemplateItem as internal.
791         * mediaelement.h: mark DownloadProgress as readonly.
793         * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
794         readonly.
796 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
798         * messagebox.cpp|h: New. MessageBox implementation
799         * Makefile.am: Add new files to the build
801         r: toshok
803 2009-09-15  Stephane Delcroix  <sdelcroix@novell.com>
805         * multiscaleimage.cpp: set the surface pointer to NULL after
806         destroying.
808         r: spouliot
810 2009-09-16  Chris Toshok  <toshok@ximian.com>
812         * dependencyobject.cpp (EventObject::Emit): don't return early
813         when we have a pre-emit handler, even if the list is empty.  Also,
814         don't do the pre-emit handler here.
815         (EventObject::DoEmit): instead do it here.
817 2009-09-14  Chris Toshok  <toshok@ximian.com>
819         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
820         ParserErrorEventArgs overload to MoonError::FillIn to simplify
821         this a little bit.
822         (XamlLoader::CreateFromStringWithError): same.
823         (XamlLoader::HydrateFromStringWithError): same.
825         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
826         MoonError to the ErrorEventArgs, instead of the multiple args.
828         * playlist.cpp: same.
830         * asf/asf.cpp: same.
832         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
833         the ErrorEventArgs, instead of the multiple args.
834         (Downloader::NotifyFailed): same.
836         * runtime.cpp (Surface::EmitError): same.
838         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
840         * pipeline.cpp: same.
842         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
843         we need to free the string we pass to MoonError::FillIn now that
844         it frees.
845         (DependencyObject::IsValueValid): same.
846         (DependencyObject::RegisterAllNamesRootedAt): same.
847         (DependencyObject::ReadLocalValueWithError): same.
848         (DependencyObject::GetValueWithError): same.
849         (DependencyObject::GetValueNoDefaultWithError): same.
850         (DependencyObject::SetParent): same.
852         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
853         ImageFailed.
854         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
855         ImageFailedEvent, after reffing them.
857         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
858         an error, we need to fill in the moon error with the appropriate
859         exception, code, and msg.  the calldata to the Emit call is now an
860         ImageErrorEventArgs again, which we construct using the
861         moon_error.
862         (BitmapImage::DownloaderFailed): same sort of change.
863         (BitmapImage::CreateLoader): same.
865         * bitmapimage.h (class BitmapImage): rename "error" field to
866         "gerror" to make it clearer what it is in the code.
868         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
869         we get a little more indication of where it comes from.  this enum
870         is not long for this world, if I can help it.
872         * media.h|cpp (Image::image_failed): pass in the calldata to
873         ImageFailed.
874         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
875         ImageFailedEvent, after reffing them.
877         * error.h|cpp: move all the eventargs subclasses from here
878         to eventargs.h.
879         (class MoonError): add a non-empty ctor, copy ctor and operator=.
880         Also, remove the char* vs. const char* apis.  make them all const
881         char*, and dup the passed in string.  Lastly, add a FillIn
882         overload that takes a ParserErrorEventArgs.
884         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
885         info in an embedded MoonError.
886         (ExceptionRoutedEventArgs): remove this class.  Nothing in
887         unmanaged code uses it.
889 2009-09-14  Sebastien Pouliot  <sebastien@ximian.com>
891         * xaml.cpp: remove dead code
893         r: jackson
895 2009-09-14  Chris Toshok  <toshok@ximian.com>
897         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
898         ParserErrorEventArgs overload to MoonError::FillIn to simplify
899         this a little bit.
900         (XamlLoader::CreateFromStringWithError): same.
901         (XamlLoader::HydrateFromStringWithError): same.
903         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
904         MoonError to the ErrorEventArgs, instead of the multiple args.
906         * playlist.cpp: same.
908         * asf/asf.cpp: same.
910         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
911         the ErrorEventArgs, instead of the multiple args.
912         (Downloader::NotifyFailed): same.
914         * runtime.cpp (Surface::EmitError): same.
916         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
918         * pipeline.cpp: same.
920         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
921         we need to free the string we pass to MoonError::FillIn now that
922         it frees.
923         (DependencyObject::IsValueValid): same.
924         (DependencyObject::RegisterAllNamesRootedAt): same.
925         (DependencyObject::ReadLocalValueWithError): same.
926         (DependencyObject::GetValueWithError): same.
927         (DependencyObject::GetValueNoDefaultWithError): same.
928         (DependencyObject::SetParent): same.
930         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
931         ImageFailed.
932         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
933         ImageFailedEvent, after reffing them.
935         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
936         an error, we need to fill in the moon error with the appropriate
937         exception, code, and msg.  the calldata to the Emit call is now an
938         ImageErrorEventArgs again, which we construct using the
939         moon_error.
940         (BitmapImage::DownloaderFailed): same sort of change.
941         (BitmapImage::CreateLoader): same.
943         * bitmapimage.h (class BitmapImage): rename "error" field to
944         "gerror" to make it clearer what it is in the code.
946         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
947         we get a little more indication of where it comes from.  this enum
948         is not long for this world, if I can help it.
950         * media.h|cpp (Image::image_failed): pass in the calldata to
951         ImageFailed.
952         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
953         ImageFailedEvent, after reffing them.
955         * error.h|cpp: move all the eventargs subclasses from here
956         to eventargs.h.
957         (class MoonError): add a non-empty ctor, copy ctor and operator=.
958         Also, remove the char* vs. const char* apis.  make them all const
959         char*, and dup the passed in string.  Lastly, add a FillIn
960         overload that takes a ParserErrorEventArgs.
962         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
963         info in an embedded MoonError.
964         (ExceptionRoutedEventArgs): remove this class.  Nothing in
965         unmanaged code uses it.
967 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
969         * audio-alsa.cpp|h:
970         * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
971         need to play something, and clean up when we stop playing audio.
973         * mutex.h: Add support for recursive mutexes.
975         r: geoff
977 2009-09-14  Stephane Delcroix  <sdelcroix@novell.com>
979         * deepzoomimagetilesource.h:
980         * multiscaleimage.h|cpp:
981         * tilesource.h|cpp:
982         * uielement.h: drop some manually written cbindings in favor of
983         generated ones.
985         * cbinding.h|cpp: regen
987         r: rolf
989 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
991         * audio.cpp: It should be safe to delete audio sources on any
992         thread.
994         r: sde
996 2009-09-11  Larry Ewing  <lewing@novell.com>
998         * deployment.cpp, deployment.h: add OutOfBrowserSettings,
999         ExternalPartCollection, ExternalPart and ExtensionPart to allow
1000         more SL 3 compat.
1002         r: toshok
1004 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1006         * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
1007         wherever we used to access the field directly. Fixes a very rare
1008         multi-thread issue.
1010         r: spouliot
1012 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1014         * pipeline-asf.cpp: Add a null check.
1016         r: spouliot
1018 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1020         * runtime.h: Fix typo in sanity message.
1022 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1024         * audio.cpp: WriteFull: have a local copy of the stream pointer,
1025         it may get changed on the main thread.
1027         r: spouliot
1029 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1031         * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
1032         the audio stream in all code paths.
1034         r: spouliot
1036 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1038         * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
1039         it should be safe since the tick call is removed upon destruction.
1041         r: spouliot
1043 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1045         * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
1046         AudioPlayer is disposed due to refcounting reaching 0. This way
1047         we can keep the instance lock for as little time as possible
1048         (to do the ref), instead of during the entire Add/Remove calls,
1049         which may end up deadlocking deep inside pulse in rare circumstances
1050         (we try to add an audio source on one thread(requires a global pa lock)
1051         when removing another audio source on another thread as a response to
1052         an event from pa which may already have the global pa lock).
1054         * type.h:
1055         * value.h:
1056         * cbinding.h:
1057         * type-generated.cpp: Regenerated
1059         r: sde
1061 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1063         * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
1064         pointer instead of subcache, layer, x and y. Avoids some tree waliking
1065         in the cache trees.
1067         r: spouliot
1069 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1071         * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix 
1072         qtree_remove to take guint64 indices, qtree_next_sibling for 
1073         future usage.
1075         r: rolf
1077 2009-09-10  Jackson Harper  <jackson@ximian.com>
1079         * namescope.h: Add an accessor for the names hashtable so we can
1080         use them in plugin-debug.
1082         r: spouliot
1084 2009-09-10  Jackson Harper  <jackson@ximian.com>
1086         * xaml.cpp|h: Add flags to the callback data
1087         - Add a pinvoke function that allows propertys to be delayed in
1088         their set call until after the element is fully parsed.  This
1089         allows things like adding elements to a Selector and setting its
1090         index in xaml.
1092         r: spouliot
1093         
1094 2009-09-10  Larry Ewing  <lewing@novell.com>
1096         * multiscaleimage.cpp (RenderSingle): work around the cairo
1097         limitations by doing the viewport/msi intersection and clipping in
1098         viewport space.
1100         r: sde
1102 2009-09-10  Stephane Delcroix  <sdelcroix@novell.com>
1104         * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
1105         receive on Render is already clipped to the control size.
1106         Wrap the clipping to image size in a conditional to avoid clipping
1107         with really huge rectangles. That it a bug in cairo, as shown in 
1108         drt 2013, 2014. In those cases, the rendering will (visually) leak
1109         for the low order layers.
1111         r: spouliot
1113 2009-09-09  Jackson Harper  <jackson@ximian.com>
1115         * xaml.cpp: When we are setting attributes we want to set
1116         everything with a backing dependency property before we set things
1117         that require managed. We also delay the setting of attributes with
1118         an explicit managed namespace reference.  NOTE: We dont delay
1119         setting attributes that have a DP but are forced into managed
1120         because of their type.
1121         - We can share SetUnknownAttribute functions because the default
1122         xmlns is inited to NULL.
1124         r: rolf
1126 2009-09-09  Stephane Delcroix  <sdelcroix@novell.com>
1128         * multiscaleimage.cpp: Clear () the SubImagesCollection on 
1129         source changed. Speed things up when reusing the same MSI
1130         over and over with different sources. drt #2004 is now passing
1131         every times.
1133         r: rolf
1135 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1137         * downloader.h, layout.h, list.h: Add missing virtual destructors
1139         r: toshok
1141 2009-09-08  Chris Toshok  <toshok@ximian.com>
1143         * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
1144         for ProviderValueChanged's @set_parent.
1145         (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
1146         true in the visual walking case, and false in the
1147         textblock->inline case.
1148         (PROP_ADD): pass true.
1149         (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
1150         (InheritedPropertyValueProvider::PropagateInheritedProperty):
1151         do a deep traversal of the tree, looking for children who have a
1152         mapped property from the changed one (MapPropertyToDescendant
1153         returns NULL if there's no mapping).  Once we find a suitable
1154         descendant, call ProviderValueChanged on it with "true" for
1155         notify_listeners.  This will take care of notifying further down
1156         the tree if need be, and we can skip that branch.  For textblocks
1157         we also have to iterate over the inlines to propagate the property
1158         change notification.
1159         (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
1160         traverse the entire subtree looking for classes which can inherit
1161         properties from above them.  when we find one, get the inherited
1162         value.  if it's non-null, notify that the property has changed,
1163         and keep trace of this property (we only notify once for a given
1164         subtree, since the normal ProviderValueChanged notifications will
1165         handle the rest for that property.)
1166         (walk_tree): this recursive function does the bulk of the work for
1167         ::PropagateInheritedPropertiesOnAddingToTree
1169         * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
1170         add an additional argument (set_parent), which is true for every
1171         instant except when TextBox is propagating inherited brushes to
1172         its constituent inlines.  In this case, the textbox is still the
1173         parent of the brush.  At least for the time being.  In a perfect
1174         world all the changed handling would live in the leaf
1175         nodes (i.e. in the Inlines themselves)
1176         (DependencyObject::ClearValue): track api change
1177         (DependencyObject::SetValueWithErrorImpl): same.
1178         (DependencyObject::GetValue): add an overload for allowing both
1179         starting and ending precedences, and implement the other two
1180         overloads in terms of it.
1181         (DependencyObject::GetValueSkippingPrecedence): remove, no longer
1182         used.
1184         * uielement.cpp (UIElement::ElementAdded): propagate all
1185         inheritable properties into the subtree we're adding, before
1186         calling Loaded.
1188         r: andreia
1189         
1190 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1192         * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
1193         redirections (drt 874)
1195         * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
1196         bitmapimage policy;
1198         * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
1200         r: spouliot
1202 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1204         * downloader.cpp: Skip redirection check if the source url is a
1205         local file.
1207         r: sde
1209 2009-09-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1211         * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
1212         event from the downloader after cancelling a resource request, this 
1213         is no longer true, so emit ImageFailed manually after calling Abort.
1215         r: sde
1217 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1219         * deepzoomimagetilesource.cpp: don't render if any MSI extends
1220         is 0. avoid rendering an extra layer in some cases.
1222         r: rolf
1224 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1226         * deepzoomimagetilesource.h|cpp: replace downloader usage by
1227         Application::GetResource (). Parses the xml stream as it comes,
1228         instead of all at once.
1230         r: kangaroo
1232 2009-09-07  Chris Toshok  <toshok@ximian.com>
1234         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
1235         don't bail out early if both values are null, as the property
1236         might be AlwaysChange.
1237         (DependencyObject::ClearValue): same.
1239         r: kangaroo
1241 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
1243         * multiscaleimage.cpp: the tileLayer parameter is not the number 
1244         of layers to invalidate.
1246         r: shana
1248 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
1250         * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
1251         full cache, but only the requested tiles.
1253         r: shana
1255 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
1257         * multiscaleimage.cpp:
1258         * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
1259         the cache, aborting the downloaders, invalidating, etc...) on dzits 
1260         urisource changed that is done on msi sourcechanged.
1262         r: shana
1264 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
1266         * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
1267         the OnSourcePropertyChanged handling outside of OnPropertyChanged.
1268         No longer keep a source instance variable, as we can get it with
1269         GetSource ().
1271         r: jackson
1273 2009-09-04  Larry Ewing  <lewing@novell.com>
1275         * multiscaleimage.cpp (RenderSingle): clip our rendering to the
1276         image bounds so that when we are scaling up we don't end up with
1277         blurry images.
1279         r: sde
1281 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
1283         * utils.h|cpp: add a void* arg to the Cancellable api
1285         * application.cpp:  remove the downloader notifications on 
1286         Cancel ().
1288 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
1290         * multiscaleimage.cpp: on source change, don't only Abort() the
1291         dlders, but also reset the internal state of the dlders to Free
1293         r: alan
1295 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1297         * multiscaleimage.cpp: reset the Viewport to its default values
1298         on source change. Eventually fixes drt#511.
1300         r:lewing
1302 2009-09-03  Jeffrey Stedfast  <fejj@novell.com>
1304         * textbox.h: Nuke the CallInitialize metadata from TextBox.
1306 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1308         * deepzoomimagetilesource.h: add Generate* attributes
1310 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1312         * multiscaleimage.h: drop the GenrateJSBinding attributes
1314 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1316         * xaml.cpp:
1317         * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
1318         move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
1319         that we have to strip an eventual leading / on ctor but not on
1320         SetUriSource.
1322 2009-09-02  Andreia Gaita  <avidigal@novell.com>
1324         * dependencyobject.cpp: move the storage cleanup to Dispose, they
1325         will need to invoke handlers and other things that require the
1326         object to still be alive. fixes crash on drt 109
1328         r: lewing
1330 2009-09-02  Jackson Harper  <jackson@ximian.com>
1332         * dependencyproperty.cpp: If the explicitly mentioned type does
1333         not contain the property, try looking for the property on the
1334         current lookup obejct.  Allows things like (UIElement.Height) on a
1335         Grid object.
1337         r: shana
1339 2009-09-02  Jeffrey Stedfast  <fejj@novell.com>
1341         * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
1342         UpdateLayoutAttributes(). We can't rely on it being called as a
1343         result of setting the Text property since the overall Text
1344         property value might not have changed.
1345         (TextBlock::OnCollectionItemChanged): Same here.
1346         (TextBlock::OnPropertyChanged): Same for when the Inlines property
1347         changes. In the FontSource case, don't set invalidate to
1348         false. Also set dirty to true.
1349         (SetTextInternal): Changed to return void, no need to return bool
1350         anymore.
1352         r: alan
1354 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
1356         * layout.cpp (TextLayoutGlyphCluster::Render): If the background
1357         brush is null, don't bother drawing a background.
1359         r: lewing
1361 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
1363         * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
1364         brush is null, don't render the text.
1366         r: spouliot
1368 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com> 
1370         * utils.cpp (CopyFileTo): Close the destination file handle if 
1371         the source (filename) cannot be opened.
1373         r: jeff
1375 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
1377         * uielement.cpp (UIElement::Paint): Don't leak a copy of the 
1378         region when *not* using FTB rendering.
1380         r: jeff
1382 2009-09-01  Larry Ewing  <lewing@novell.com>
1384         * frameworkelement.cpp: clear LastRenderSize before we emit so
1385         that we don't end up in a possible recursion.
1387         Fixes http://www.worldwidetelescope.org/webclient/
1388         
1389         r: toshok
1391 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
1393         * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
1394         error code when an invalid xap file is encoutered.
1396         re: jackson
1398 2009-08-31  Sebastien Pouliot  <sebastien@ximian.com>
1400         * debug.cpp: Delete frame if we're not using it in the loop
1401         * resources.cpp: Don't leak Value instance on error
1403         re: kangaroo
1405 2009-08-30  Andreia Gaita  <avidigal@novell.com>
1407         clock leak fixes.
1409         * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
1410         move it to the Timeline class so all timelines can clear their clocks.
1411         Removed private root_clock, all timelines should use the timeline
1412         clock variable
1414         * timeline.[h|cpp]: TeardownClock removes the clock from the parent
1415         ClockGroup and clears the ref on the clock so it can be destroyed
1416         (which in turn will release the ref on the timeline so it too gets
1417         destroyed).
1418         DispatcherTimer doesn't have to destroy it's clock, the timeline
1419         dispose takes care of that. Added TeardownClock for DispatcherTimer
1420         so it stops the clock before disposing.
1421         Removed private root_clock, all timelines should use the timeline
1422         clock variable
1424         * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
1425         group Dispose goes down the hierarchy of clocks and starts clearing
1426         clocks (via timeline TeardownClock) from bottom to top, so
1427         everything is guaranteed to die before the root clock gets
1428         destroyed.
1430         * timemanager.cpp: Dispose root clock before releasing it
1432         r: toshok
1434 2009-08-30  Andreia Gaita  <avidigal@novell.com>
1436         * textblock.cpp: drop the run reference, it's already reffed on the
1437         collection
1439         r: toshok
1441 2009-08-28  Alan McGovern  <amcgovern@novell.com>
1443         * control.h:
1444         * control.cpp:
1445         * contentcontrol.cpp: ContentControl is not in charge of
1446           expanding its content template, the users of ContentControl
1447           have to do that. When applying a ControlTemplate, if it
1448           expands to an empty element or one which is not a UIElement,
1449           we ignore the template and instead apply the default
1450           element. r: toshok
1452 2009-08-27  Jeffrey Stedfast  <fejj@novell.com>
1454         * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
1455         Mouse events anymore (except the special internal MultiClick
1456         event). Managed code will now call our public On$Event() methods
1457         when appropriate.
1458         (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
1459         true. Doesn't seem like SL ever does.
1461         r:alan
1463 2009-08-27  Stephane Delcroix  <sdelcroix@novell.com>
1465         * tilesource.h: rely on the generator for internal properties.
1467         * tilesource,cpp:
1468         * deepzoomimagetilesource.cpp: use the accesors instead of the
1469         fields.
1471 2009-08-27  Andreia Gaita  <avidigal@novell.com>
1473         * dependencyobject.cpp: list should only be cleared, not destroyed,
1474         storage_hash still needs it
1476         r: alan
1478 2009-08-26  Chris Toshok  <toshok@ximian.com>
1480         * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
1481         we free it.
1483         r: jackson
1485 2009-08-16  Chris Toshok  <toshok@ximian.com>
1487         * value.h.in, value.cpp: remove Value::Set.  it's unnecessary.
1489         * validators.cpp (Validators::BalanceValidator): use the
1490         assignment operator instead of ::Set, which no longer exists.
1491         (Validators::VolumeValidator): same.
1492         (Validators::CursorValidator): don't assign the pointer, assign
1493         the value.  This should have caused bugs...
1495         r: jackson
1496         
1497 2009-08-26  Jeffrey Stedfast  <fejj@novell.com>
1499         * validators.cpp (FloatValidator): New validator to make sure a
1500         value is within range for a float.
1502         * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
1503         origin_y state variables. We can just query these on demand.
1504         (Render): Simplified slightly.
1505         (GetTransformOrigin): Get rid of unused variable.
1506         (GetOriginPoint): Just use the ascender rather than the height and
1507         the descender. Simpler that way.
1509         * glyphs.h: Changed default OriginX and OriginY values to what
1510         they should be according to the moon-unit tests (also makes drt
1511         #246 pass).
1513         r:toshok
1515 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1517         * cbinding.h:
1518         * template.h:
1519         * cbinding.cpp:
1520         * template.cpp: Allow FrameworkTemplates to be expanded in
1521           managed code. Using that, expand the ItemsPanelTemplate in
1522           ItemsControl when it is available. r: toshok
1524 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
1526         * security.c: Fixed typos in last "a11y" commit.
1528 2009-08-26  Chris Toshok  <toshok@ximian.com>
1530         * textbox.cpp (TextBoxBase::SetSurface): only call
1531         gtk_im_context_set_client_window if @surface is non-null.  this
1532         quiets down some of the gtk warnings on shutdown.
1534         r: lewing
1535         
1536 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1538         * type.h:
1539         * value.h:
1540         * cbinding.h:
1541         * type-generated.cpp: regen r: shana
1543 2009-08-26  Andreia Gaita  <avidigal@novell.com>
1545         * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
1546         public methods that DOs and Clocks use to control an animation:
1547             - when a new storage is attached and there is already one on
1548                 the property, Disable removes the handlers from the previous
1549                 storage;
1550             - when a storage is detached, the previous one is enabled via
1551                 Enable, which attaches the handlers;
1552             - when a clock is stopped, it calls Stop, which detaches
1553                 everything and resets the property;
1554             - when cloning, SwitchTarget is used to replace the DO and its
1555                 handlers on the storage, to avoid having to clone all the
1556                 storages every time.
1558         Storages are now only deleted when the clock stops, is destroyed
1559         or when the DO they're attached to is destroyed. IsLonely was
1560         removed (meaningless now), as well as the resettable flag (only
1561         enabled animations reset)
1563         * dependencyobject.[h|cpp]: a DO can have more than one animation
1564         running on the same DP, and they need to be stored so that when a
1565         DO is cloned, all running animations are updated to the new DO -
1566         - this way, when they stop they update the current DO and not the
1567         one they were originally attached to. This fixes the animation
1568         problems on togglebuttons and other objects that have several
1569         animations overlapping each other. The storage_hash now stores a
1570         List* of AnimationStorage::Node objects with all existing animations
1571         for every DP, and the animation storage cloning process doesn't clone
1572         the storages, it merely creates a new List* with the existing storages
1573         and updates them to the newly cloned DO.
1575         r: alan
1577 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1579         * template.cpp: NNull check 'result' before using it. r:shana
1581 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
1583         * security.c: Mark MoonAtkBridge.dll as platform assembly.
1585 2009-08-25  Chris Toshok  <toshok@ximian.com>
1587         * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
1588         when IsEnabledProperty has changed.  we need to do it after the
1589         focus handling has happened, though, as
1590         FocusManager.GetFocusedElement() returns the currently focused
1591         thing in handlers for IsEnabledChanged.  Fixes the rendering of
1592         disabled elements in drt #432.
1594         r: andreia
1595         
1596 2009-08-26  Jackson Harper  <jackson@ximian.com>
1598         * dependencyproperty.cpp: Allow setting properties that are
1599         attached on their owner type without parens. r: toshok
1601 2009-08-26  Jackson Harper  <jackson@ximian.com>
1603         * xaml.cpp|h: Expose a function for parsing bools so the plugin
1604         code can use our bool parsing code. (Handle ints).
1606         r: shana && kangaroo
1608 2009-08-25  Jeffrey Stedfast  <fejj@novell.com>
1610         * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
1611         invalidate unless one of the fonts has actually changed.
1613         r:spouliot
1615 2009-08-25  Jackson Harper  <jackson@ximian.com>
1617         * type.cpp: Function was still in the header but somehow lost its
1618         implementation.  We dont use it anywhere but its useful for
1619         debugging. r: kangaroo
1621 2009-08-25  Alan McGovern  <amcgovern@novell.com>
1623         * control.h:
1624         * template.h:
1625         * control.cpp:
1626         * template.cpp:
1627         * contentcontrol.cpp: Add support for using
1628           ContentControl.ContentTemplate when it is available. If
1629           there is no Control.Template, ContentControl.ControlTemplate
1630           is used. If that isn't available, we call into managed code
1631           and get the fallback root. r: toshok
1633 2009-08-24  Jackson Harper  <jackson@ximian.com>
1635         * dependencyobject.cpp: Hydrated objects are registered in their
1636         parent namescope so we need to unregister them there also. r: toshok
1638 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
1640         * fontmanager.cpp (AddResource): Need to free the path string
1641         before returning on success.
1643         * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
1644         leak the various lists.
1646         r:toshok
1648 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
1650         * grid.cpp (DestroyMatrices): Need to use delete[] to free the
1651         matrices.
1653         r:toshok
1655 2009-08-21  Alan McGovern  <amcgovern@novell.com>
1657         * control.cpp:
1658         * template.cpp: Whenever any template is expanded, the
1659           template namescope should be locked. r: jackson
1661 2009-08-21  Alan McGovern  <amcgovern@novell.com>
1663         * grid.cpp: When assigning sizes to grid segments, if the
1664           current UIElement spans across star segments, then extra
1665           height will only be assigned to those star segments.
1666           Otherwise extra height will be assigned to Auto and Pixel
1667           segments. r: sde
1669 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
1671         * textbox.cpp (TextBoxBase::Emit*Async): Removed.
1672         (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
1673         (TextBox::EmitTextChanged): Same.
1674         (PasswordBox::EmitTextChanged): Same.
1676         * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
1678         * dependencyobject.cpp (EventObject::EmitAsync): New method to
1679         emit an event asynchronously.
1681         r:alan
1683 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
1685         * textbox.cpp (emit_selection_changed): Pass along the generation
1686         to the virtual EmitSelectionChanged() method.
1687         (emit_text_changed): Same.
1688         (EmitSelectionChangedAsync): Use a custom closure so that we can
1689         capture the current event generation to use when we actuall emit
1690         it later.
1691         (EmitTextChangedAsync): Same.
1693         r:toshok
1695 2009-08-20  Jackson Harper  <jackson@ximian.com>
1697         * xaml.cpp: Setting OBJECT properties allows objects to be parsed
1698         from strings that shouldn't normally be.  Such as SolidColorBrush
1699         and PointCollection.
1701 2009-08-19  Jeffrey Stedfast  <fejj@novell.com>
1703         * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
1704         same algorithm used by Silverlight.
1706         r:jackson
1708 2009-08-19  Jackson Harper  <jackson@ximian.com>
1710         * playlist.cpp: Its possible to queue an async operation and then
1711         call Dispose before that operation has taken place. This patch
1712         makes Playlist delay its unref and adds guards in its async
1713         callback functions to avoid this. Fixes http://www.nederland24.nl/
1714         r:spouliot
1715         
1716 2009-08-18  Jackson Harper  <jackson@ximian.com>
1718         * template.cpp: Remove not very helpful and somewhat scary looking
1719         debug spew. r:toshok
1721 2009-08-18  Jeffrey Stedfast  <fejj@novell.com>
1723         * layout.cpp (word_type_changed): Partial revert for previous
1724         commit as it broke drt #208.
1726         r:toshok
1728 2009-08-17  Jeffrey Stedfast  <fejj@novell.com>
1730         Fixes for drt #411.
1732         * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
1733         infinite.
1734         (word_type_changed): Allow alphabetic characters inside
1735         ideographic words.
1736         (layout_word_wrap): Allow line advance to equal max width.
1738         r:toshok
1740 2009-08-18  Alan McGovern  <amcgovern@novell.com>
1742         * grid.h:
1743         * grid.cpp: Remove the 'magic' size as size allocations are
1744           read from row_matrix/col_matrix now. r: kangaroo
1746 2009-08-18  Alan McGovern  <amcgovern@novell.com>
1748         * grid.h:
1749         * grid.cpp: Allocate sizes of the grid segments in the correct
1750           order. r: shana
1752 2009-08-17  Alan McGovern  <amcgovern@novell.com>
1754         * grid.h:
1755         * grid.cpp: When allocating sizes for rows/columns, clamp the
1756           sizes between the Min and Max values in a consistent manner.
1757           r: jackson
1759 2009-08-17  Alan McGovern  <amcgovern@novell.com>
1761         * grid.h:
1762         * grid.cpp: Change the parameter order in the Segment
1763           constructors to be "value, min, max" to be consistent with
1764           how 'CLAMP' is usually defined. r: jackson
1766 2009-08-16  Chris Toshok  <toshok@ximian.com>
1768         * xaml.cpp (value_from_str_with_parser): fix the abundant memory
1769         leaks in this method.
1771         * propertypath.h (struct PropertyPath): add a copy constructor
1772         here so the xaml.cpp changes work without crashing.
1774         r: andreia
1776 2009-08-16  Chris Toshok  <toshok@ximian.com>
1778         * xaml.cpp (value_from_str_with_parser): we were using the return
1779         value from this method to be "v has been set to a value", but this
1780         isn't enough state.  We also need to know if the
1781         caller (dependency_object_set_attributes, specifically) should
1782         continue on or skip the attribute after it's called us.  So, we
1783         add a "bool *v_set" parameter, and change the return value to
1784         "false = skip, true = continue processing."  We return false in
1785         only 1 case right now, if a double-typed value is to be parsed
1786         from an empty string.  This fixes the Klotski demo, which has
1787         <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
1788         usage to also deal properly with leading spaces, and stop
1789         duplicating "g_free (s); return true;" - just break there, and let
1790         the blanket free/return at the end of the method handle it.
1791         (dependency_object_set_attributes): simplify the {} handling, and
1792         stop leaking the string value of the attribute when we pass it to
1793         managed.
1795         r: andreia
1796         
1797 2009-08-15  Larry Ewing  <lewing@novell.com>
1799         * mediaelement.cpp (Render): use the same logic we used in image
1800         here to always adjust the paint rect when stretch != StretchNone.
1802         r: andreia
1804 2009-08-15  Larry Ewing  <lewing@novell.com>
1806         * shape.cpp (MeasureOverride): Stretch to the proper width when
1807         available size in not infinite.  Avoid using infinite dimesions as
1808         constraints for Uniform stretches.
1810         Fixes Header stretching in playboy an improves DRT #210.
1812         r: jeff
1813         
1814 2009-08-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1816         * pipeline.cpp: Quiet some debug spew.
1818         r: andreia
1820 2009-08-14  Larry Ewing  <lewing@novell.com>
1822         * grid.cpp (MeasureOverride): properly use min and max.
1824         Fixes regression in DRT #319 from new table code
1826         r: kangaroo
1828 2009-08-14  Larry Ewing  <lewing@novell.com>
1830         * media.cpp: always adjust our paint rectangle when Stretch !=
1831         StretchNone.
1833         Fixes DRT #516 and the regression in #422
1835         r: toshok
1837 2009-08-14  Larry Ewing  <lewing@novell.com>
1839         * frameworkelement.cpp (Arrange): apply the size constraints after
1840         we the the actualsize back from the element.
1842         * layoutinformation.cpp (GetClip): now that other things are
1843         improved only traverse up one level.
1845         Fixes clipping on the smooth streaming size and DRT #210
1847         r: sde
1848         
1849 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1851         * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
1852         frames to decode.
1854         r: andreia
1856 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1858         * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
1859         variables in local variables and clear out the instance variables
1860         before unreffing them - prevents certain rare cases of infinite loops.
1862         r: andreia
1864 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1866         * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
1867         we've been disposed.
1869         r: andreia
1871 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1873         * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
1874         paths.
1876         r: andreia
1878 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1880         * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
1881         if we've been disposed.
1883         r: andreia
1885 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1887         * pipeline.cpp: IMediaObject::Dispose: clear the list of events
1888         we were supposed to emit on the main thread.
1890         r: andreia
1892 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1894         * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
1896         r: andreia
1898 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1900         * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
1901         variables in local varaibles and clear out the instance variables
1902         before unreffing them - prevents certain rare cases of infinite loops.
1904         r: andreia
1906 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1908         * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
1909         variables in local variables and clear out the instance variables
1910         before unreffing them - prevents certain rare cases of infinite loops.
1912         r: andreia
1914 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1916         * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
1917         source.
1919         r: andreia
1921 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1923         * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
1924         dependency between MmsPlaylistEntry and Media.
1926         r: andreia
1928 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1930         * pipeline.cpp: Media::Dispose: store a copy of our instance variables
1931         in local variables and clear out the instance variables before
1932         unreffing them - prevents certain rare cases of infinite loops.
1934         r: andreia
1936 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1938         * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
1940         r: andreia
1942 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1944         * pipeline-asf.cpp: Add a few missing unrefs.
1946         r: andreia
1948 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1950         * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
1951         the closure is called.
1953         r: andreia
1955 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1957         * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
1958         can detect if the callback has been called or not.
1960         r: andreia
1962 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1964         * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
1965         dispose on the media thread, call dispose directly.
1967         r: andreia
1969 2009-08-14  Alan McGovern  <amcgovern@novell.com>
1971         * grid.h:
1972         * grid.cpp: Rewrite the size allocation code in grid to better
1973           match the microsoft implementation. It works much better for
1974           the pixel and auto cases, but still has some issues with
1975           star columns. r: lewing
1977 2009-08-14  Jeffrey Stedfast  <fejj@novell.com>
1979         * application.cpp (GetResource): Close the stream when we're
1980         done. Also changed to check write_cb exists before reading from
1981         the stream - if the callback is NULL, don't even bother.
1982         (GetResourceAsBuffer): Removed.
1983         (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
1984         the streaming ourselves. Also return NULL if writing the stream to
1985         disk fails.
1987         * utils.cpp (managed_stream_open/read/write/etc): Changed to be
1988         internal. These symbols don't need to be publicly exported.
1990         * utils.h: Added a Stream_Close function signature to
1991         ManagedStreamCallbacks.
1993         * bitmapimage.cpp (resource_notify): Make static/internal - does
1994         not need to be publicly exported.
1996         r:kangaroo
1998 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2000         * multiscaleimage.cpp: retry downloading up to 5 times.
2002 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2004         * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on 
2005         source change. 
2006         
2007         r: lewing
2009 2009-08-13  Larry Ewing  <lewing@novell.com>
2011         * usercontrol.cpp (MeasureOverride): don't constrain the results.
2013         Fixes DRT #417
2015         r: andreia
2017 2009-08-13  Larry Ewing  <lewing@novell.com>
2019         * textblock.cpp (MeasureOverride):
2020         * textbox.cpp (MeasureOverride): ceil our measurement request when
2021         layout rounding is being done so that we don't get rounded down
2022         and forced to wrap.  More testing is in order but failure mode for
2023         this is painful.
2025         Fixes wrapping in Playboy and the chess final screen.
2027         r: jeff
2028         
2029 2009-08-13  Larry Ewing  <lewing@novell.com>
2031         * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
2032         to idle so that firefox and gtk can process events without getting
2033         starved.  Improved Quakelight and StrangeAttractor experience.
2035         r: andreia
2036         
2037 2009-08-13  Larry Ewing  <lewing@novell.com>
2039         * src/brush.cpp: replace all cairo_matrix_invert calls with a
2040         version that warns if it fails.
2042         r: andreia
2044 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2046         * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
2047         advance width is 0. Fixes test-videobrush-text.xaml to render all
2048         of the runs.
2050         r:lewing
2052 2009-08-13  Chris Toshok  <toshok@novell.com>
2054         * xaml.cpp (start_element): If the element is a TextBox.Text
2055         CDATA, treat it as verbatim. Partial fix for drt 2003.
2057         r:jeff
2059 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2061         * layout.cpp (Layout): Make sure all attributes were able to load
2062         their fonts. If not, we can't proceed. Fixes the NULL TextFont
2063         crash in DrPopper.
2065         * textblock.cpp (OnPropertyChanged): Instead of using
2066         UpdateLayoutAttributes(), all we really need to do is call
2067         UpdateFontDescriptions() when the FontSource changes.
2069         r:toshok
2071 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2073         * fonts.cpp (TextFont::Load): When loading a font face from a
2074         source w/o any families specified, make sure to set master=0 so
2075         that we don't try to get extents from faces[-1].
2077         r:lewing
2079 2009-08-13  Larry Ewing  <lewing@novell.com>
2081         r: kangaroo
2082         
2083         * writeablebitmap.cpp (InitializeFromBitmapSource): always use
2084         rgba pixelformat like sl3 does now.
2086 2009-08-12  Chris Toshok  <toshok@ximian.com>
2088         * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
2089         "own" (default: true) which, if true, causes the bitmap source to
2090         free the bitmapdata when it's destroyed.
2092         * cbinding.h|cpp: regen
2094 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2096         * cbinding.h:
2097         * cbinding.cpp: regen r: toshok
2099         * control.h:
2100         * application.h:
2101         * application.cpp:
2102         * contentcontrol.h:
2103         * contentcontrol.cpp:
2104         * frameworkelement.cpp: A ContentControl which has no Template
2105           needs to call into managed land to create a 'default
2106           template'. When the Content is a UIElement, the UIElement is
2107           used as the template root, otherwise a Grid + TextBlock
2108           (with Binding) is used. This is the same as what
2109           ContentPresenter does to its Content property. r: toshok
2111 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2113         * uielement.cpp: VisualParent should be set to null before
2114           invalidating the cache otherwise the element might be added
2115           to the dirty lists. This causes issues if the element is
2116           added back into the visual tree at a different level. r:
2117           lewing.
2119 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2121         * multiscaleimage.cpp: clear the cache on source change, cache a NULL
2122         tile on downloader failure (fix drt 2014 for good).
2124 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2126         * multiscaleimage.cpp: restore the initial number of concurrent
2127         downloaders, drt 2014 will require a proper fix.
2129 2009-08-12  Chris Toshok  <toshok@ximian.com>
2131         * media.h|cpp (class Image): if our source is a BitmapSource,
2132         handle the PixelDataChangedEvent and Invalidate ourselves if it's
2133         emitted.
2135         * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
2136         handle the PixelDataChangedEvent and notify our listeners to
2137         redraw if it's emitted.
2139         * bitmapsource.h|cpp (class BitmapSource): add an event so classes
2140         using BitmapSources can be notified when the pixel data
2141         changes (primarily for use with WriteableBitmap).  Emit it from
2142         BitmapSource::Invalidate.
2144         * type-generated.cpp, cbinding.h|cpp: regen
2145         
2146 2009-08-11  Chris Toshok  <toshok@ximian.com>
2148         [ each of these changes fixes a line of text in drt 444 ]
2149         * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
2150         before reading it.
2152         * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
2153         UpdateLayoutAttributes if FontSource is changed, so that the
2154         change propagates down to the inlines.
2156         r: kangaroo
2158 2009-08-11  Larry Ewing  <lewing@novell.com>
2160         * grid.cpp (MeasureOverride): adjust row definition values by
2161         max/min values when building up the Actual sizes
2163         Fixes DRT #319.
2165         r: toshok
2167 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2169         * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
2170         the TextFontDescription as well as emitting an event so the view
2171         knows it has to re-render. Improves drt 480.
2172         (PasswordBox::OnPropertyChanged): Same.
2173         (TextBox::ClearFontSource): Removed, not used.
2174         (PasswordBox::ClearFontSource): Same.
2176         r:toshok
2178 2009-08-11  Andreia Gaita  <avidigal@novell.com>
2180         * runtime.cpp: TimeManager should be the last thing destroyed, other
2181         objects might need to access it while disposing. r: alan
2183 2009-08-11  Stephane Delcroix  <sdelcroix@novell.com>
2185         * multiscaleimage.cpp: cast so the modulo operation opers on int,
2186         not guint64. Fix sharedtiles usage. r:shana, lewing
2188 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2190         * textbox.cpp (TextBoxBase::Paste): Change the multiline
2191         truncation test to explicitly check for \r, \n and 0x2028 instead
2192         of using g_unichar_type() which didn't return the expected values
2193         for these characters. Partial fix for drt 2003.
2194         (*Box::OnPropertyChanged): Updated for AddResource() API change.
2196         * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
2197         AddResource() API change.
2199         * fontmanager.cpp (AddResource): Instead of having our callers
2200         generate a unique resource name, let us do it for them. Don't
2201         bother using mkstemp()/mkdtemp() since our root dir is already
2202         unique. Also fixed to reset the stream resource after consuming it
2203         so that if multiple textblocks/boxes/etc reuse the FontSource,
2204         things work properly. Partial fix for drt 444.
2206         r:lewing
2208 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2210         * runtime.cpp: Controls aren't really auto-focused. What
2211           happens is that when a focused control is removed from the
2212           live tree SL does not emit a LostFocus event and so when the
2213           control is added back into the tree it still thinks it has
2214           focus. This call is still needed as there can be pending
2215           GotFocus/LostFocus events waiting to be emitted. r: toshok.
2217 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2219         * runtime.cpp: Make HandleUIKeyPress do the same thing as
2220           HandleUIKeyRelease when there is no toplevel so it doesn't
2221           null deref. r: sde
2223 2009-08-10  Larry Ewing  <lewing@novell.com>
2225         * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
2226         jpg abort the getresource call.
2228 2009-08-07  Larry Ewing  <lewing@novell.com>
2230         * dirty.cpp (UpdateLayout): don't use the toplevel hack on
2231         noncontainers.
2233         Gets DRT #516 very close to passing slight layout problems left.
2235 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2237         * ptr.h: Change the base class to not allow direct casts to Value
2238         objects. Add cast operator to cast between DO classes directly
2240 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2242         * animation.[h|cpp]: Check for valid applier before trying to use it,
2243         it could be disposing, same for targetprop.
2244         * timemanager.cpp: clear applier when disposing
2246 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2248         * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
2249         pointer for DependencyObject.
2250         * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
2251         * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
2252         them when destroying
2254 2009-08-10  Alan McGovern  <amcgovern@novell.com>
2256         * frameworkelement.cpp: A new measure pass should be made if
2257           either the available width *or* available height has changed
2258           since the last measure pass.
2260 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2262         * ptr.h: fix assignment operators, the copy by reference ones were
2263         causing the pointer to be destroyed prematurely when assigning via
2264         new ()
2266 2009-08-08  Chris Toshok  <toshok@ximian.com>
2268         * fontmanager.cpp (FontManager::AddResource): pass stream->handle
2269         as the first arg to stream->Read, not stream itself.  Also, get
2270         rid of "total" and just pass a 0 offset for each read, since we're
2271         writing the full buffer's contents up to nread each time anyway.
2273 2009-08-07  Andreia Gaita  <avidigal@novell.com>
2275         Fixes drt 2014
2277         * multiscaleimage.cpp: Fix the type of the left shit operations to
2278         avoid overflows. Make it an inline function for easier maintenance.
2279         * tilesource.[h|cpp]: Fix the type of the image width and height,
2280         should be bigger than int.
2282 2009-08-07  Jeffrey Stedfast  <fejj@novell.com>
2284         Fixes drt 337
2286         * textbox.cpp (TextBox::OnPropertyChanged): If setting
2287         SelectedText to "", don't emit TextChanged events if there was no
2288         selection.
2289         (PasswordBox::OnPropertyChanged): Same.
2291 2009-08-06  Chris Toshok  <toshok@ximian.com>
2293         * runtime.cpp (Surface::tick_after_attach_reached): the ordering
2294         of code between this method and Surface::ToplevelLoaded is likely
2295         still somewhat wrong, but moving the Emit here fixes drt #21.
2297 2009-08-06  Chris Toshok  <toshok@ximian.com>
2299         * window-gtk.cpp: move the InvokeTickCalls from here...
2301         * runtime.cpp: to the HandleUI* methods here, so they will be used
2302         in both windowed and windowless codepaths.
2304 2009-08-06  Chris Toshok  <toshok@ximian.com>
2306         * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
2307         another argument now (the data object passed to AddTickCall) so we
2308         can differentiate callbacks properly.
2310         * runtime.h|cpp (Surface::Attach): we don't return true from
2311         IsLoaded until after the first tick, so that our measure pass has
2312         been run (and contentpresenters are created for all content
2313         controls.)  register the tick call here (after removing any that
2314         may have already been added).
2315         (Surface::tick_after_attach_reached): set ticked_after_attach to
2316         true.
2317         (Surface::IsLoaded): we require ticked_after_attach to be true
2318         here.
2320         * cbinding.h|cpp: regen.
2322 2009-08-06  Jeffrey Stedfast  <fejj@novell.com>
2324         * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
2325         selection, just set the selection to the cursor position. This
2326         way, if the control gets programatically Focus()'d again, then the
2327         cursor will be where it was just before the control lost
2328         focus. Partial fix for drt 2003.
2330 2009-08-06  Jackson Harper  <jackson@ximian.com>
2332         * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
2333         property has already been set.
2334         
2335 2009-08-06  Jackson Harper  <jackson@ximian.com>
2337         * xaml.cpp: Its possible that a buffered element can add a new
2338         namespace that start_element_handler will not know about, just
2339         ignore this error and the namespace will be added when the buffer
2340         is parsed.
2342 2009-08-06  Jackson Harper  <jackson@ximian.com>
2344         * xaml.cpp: Handle null in the print_tree debug code. (This can
2345         occur when loading a null template)
2347 2009-08-05  Larry Ewing  <lewing@novell.com>
2349         * frameworkelement.cpp (UpdateLayout): revert an accidental
2350         change.
2352 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2354         * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
2355         should not copy the text buffer to the clipboard if the contents
2356         are secret.
2358 2009-08-05  Larry Ewing  <lewing@novell.com>
2360         * uielement.cpp (ElementRemoved): clear the desired size when
2361         removing the element.
2363         * layoutinformation.cpp: partially revert one of the workarounds.
2365         * frameworkelement.cpp (Arrange): get the old_size from the
2366         RenderSize not the ActualWidth.
2368 2009-08-05  Chris Toshok  <toshok@ximian.com>
2370         * popup.cpp (class GenerationClosure): new closure for emiting the
2371         Opened and Closed events.
2372         (Popup::emit_opened, Popup::emit_closed): pass the generation from
2373         the closure to ->Emit.
2374         (Popup::OnPropertyChanged): for the tick call, pass a closure that
2375         contains the current event generation.
2377         * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
2378         factor out the loop for invoking tick calls here and call it from
2379         the source tick method.
2381         * window-gtk.cpp (MoonWindowGtk::button_press)
2382         (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
2383         (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
2384         (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
2385         (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
2386         TimeManager::InvokeTickCalls from each of these methods before we
2387         call the Surface::HandleUI* method.
2389         * dependencyobject.h (class EventObject): make a couple of api
2390         changes:
2391         (AddTickCall*): add an "EventObject* data" parameter.  if it's
2392         NULL, pass "this", so we have the current behavior.
2393         (DoEmit/Emit): add a "starting_generation" optional argument.  if
2394         it's supplied, we invoke only those handlers with tokens less than
2395         the starting_generation (i.e. those handlers that were registered
2396         before the event was generated.)
2398 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2400         * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
2401         FontSource property when the FontFamily property changes.
2402         (TextBox::OnPropertyChanged): Handle FontSource property changes.
2403         (PasswordBox::OnPropertyChanged): Same.
2405         * textblock.cpp (CleanupDownloaders): Free the font_source string
2406         as well.
2407         (SetFontSource): Update the font_source string based on the
2408         downloader.
2409         (UpdateLayoutAttributes): No longer need to get the font_source
2410         string, we already have it.
2411         (UpdateFontDescriptions): Same.
2412         (OnCollectionItemChanged): Here too.
2413         (OnPropertyChanged): Update the font_source string when the
2414         FontSource property changes.
2416 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2418         * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
2419         GdkEventButton structure, use the new MouseEventArgs accessors
2420         instead.
2422         * eventargs.cpp (GetButton): Get the id of the button pressed.
2423         (GetClickCount): Get the number of clicks on the button.
2425 2009-08-05  Alan McGovern  <amcgovern@novell.com>
2427         * panel.cpp: The LogicalParent needs to be set before the
2428           element is added, otherwise the Loaded event can be fired
2429           before LogicalParent is set.
2431 2009-08-04  Larry Ewing  <lewing@novell.com>
2433         * uielement.cpp (DoMeasure): invalidate up the tree more
2434         agressively.  Fixes DRT #190 regression.
2436 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
2438         * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
2439         callback for the MultiClick event.
2440         (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
2441         double and triple mouse clicks.
2443         * uielement.h: Added a MosueLeftButtonMultiClickEvent.
2445         * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
2446         (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
2448         * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
2450 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
2452         * utils.cpp (write_all): Changed to just return int (-1 for fail,
2453         0 for success).
2454         (ExtractFile): Don't fsync(). Saves us a lot of time.
2456 2009-08-03  Larry Ewing  <lewing@novell.com>
2458         * shape.cpp (ArrangeOverride): clear the current path.
2460 2009-08-03  Larry Ewing  <lewing@novell.com>
2462         * textbox.cpp (OnModelChanged): InvalidateMeasure when things
2463         change.
2465 2009-08-03  Jeffrey Stedfast  <fejj@novell.com>
2467         * fontmanager.cpp (AddResource): Implemented a version of this
2468         interface that can take a ManagedStreamCallbacks argument.
2470         * application.cpp (GetResourceAsPath): If we are adding the X's
2471         ourselves, use MakeTempDir() instead of CreateTempDir().
2473 2009-07-31  Larry Ewing  <lewing@novell.com>
2475         * layoutinformation.cpp (GetClip): add another hack for layoutclip
2476         on Controls while things are in flux.
2478 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2480         * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
2481         the work was enqueued or not.
2483 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2485         * pipeline.cpp: Media: use the new ClearQueue overload instead of
2486         spreading the logic all over the place.
2488 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2490         * pipeline.cpp: Media: add a ClearQueue overload which optionally
2491         deletes the queue.
2493 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2495         * playlist.cpp: Don't g_warn something which can happen in normal
2496         circumstances.
2498 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2500         * mediaplayer.cpp: Plug a leak in one rare code-path.
2502 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2504         * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
2506 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2508         * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
2510 2009-07-31  Jeffrey Stedfast  <fejj@novell.com>
2512         * fonts.cpp (LoadPortableUserInterface): Always load the en-US
2513         font(s) first, and then load the preferred CJK font, followed by
2514         the rest. This improves drt 414.
2516         * fontmanager.cpp (GetExtents): Improved baseline alignment by
2517         adjusting Descent if Height is larger than Ascent +
2518         Descent. Especially visible with drt 107's Deobfuscated Brauhaus
2519         93 font rendering.
2521 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2523         * deployment.cpp: Dispose: we need to unref and null out the application.
2525 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2527         * error.cpp|h:
2528         * downloader.cpp:
2529         * eventargs.cpp|h: Set the object's type upon construction instead
2530         of using SetObjectType right after. This is useful when tracking
2531         objects by type - the ctor also shows up.
2533         * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
2534         a Type::Kind argument.
2536 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2538         * debug.cpp: Make the stacktrace pipes thread-local. This way
2539         printing stacktraces from several threads at the same time doesn't
2540         result in a big mess.
2542 2009-07-30  Larry Ewing  <lewing@novell.com>
2544         * layoutinformation.cpp (GetClip): add a workaround for the panel
2545         case while layoutinformation is refactored.
2546         
2547 2009-07-30  Larry Ewing  <lewing@novell.com>
2549         * layoutinformation.cpp: repair a merge bug.
2551 2009-07-30  Larry Ewing  <lewing@novell.com>
2553         * layoutinformation.cpp, layoutinformation.h: move layoutinformation
2554         out of uielement.h.  Compute the layout clip on the fly.
2556         * border.cpp:
2557         * dependencyproperty.g.cpp:
2558         * frameworkelement.cpp:
2559         * frameworkelement.h:
2560         * glyphs.cpp:
2561         * media.cpp:
2562         * mediaelement.cpp:
2563         * panel.cpp:
2564         * point.h:
2565         * shape.cpp:
2566         * textblock.cpp:
2567         * textbox.cpp:
2568         * textbox.h:
2569         * uielement.cpp:
2570         * uielement.h: start reworking layout logic at we refactor
2571         layoutinformation.  Use RenderLayoutClip where appropriate.
2573 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
2575         * fontmanager.cpp (GetExtents): Much better fix than the
2576         string-comparison hack. Poke at the TrueType/OpenType OS/2 table
2577         and use the usWinAscent/usWinDescent values since this is what
2578         most Windows applications (brokenly) use according to some info I
2579         found on the web. Low and behold, this also makes the Adobe Caslon
2580         Pro metrics work out exactly like they do in Silverlight, so I'm
2581         guessing that the info I found is accurate :-)
2583 2009-07-30  Larry Ewing  <lewing@novell.com>
2585         * uielement.cpp (DoArrange): revert the parent invalidation change as it
2586         did break things.
2588 2009-07-30  Larry Ewing  <lewing@novell.com>
2590         * control.cpp (OnPropertyChanged): update the layout if the
2591         aligment changes.
2593 2009-07-30  Larry Ewing  <lewing@novell.com>
2595         * uielement.cpp (DoArrange): remove the parent invalidation call
2596         it shouldn't be required now and is contraindicated by DRT #501.
2598         * runtime.cpp: InvalidateMeasure on resize.
2600 2009-07-30  Alan McGovern  <amcgovern@novell.com>
2602         * popup.cpp:
2603         * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
2605         * runtime.cpp:
2606         * dependencyobject.h:
2607         * dependencyobject.cpp: Implement a new method for adding
2608           callbacks to invoke asynchronous events. They can't be
2609           invoked using the regular AddTickCall as that causes the
2610           ordering of mouse events and asynchronous events to be
2611           incorrect preventing drt 333, 476 and some others from
2612           passing.
2614 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
2616         * fontmanager.cpp (GetExtents): Now uses the alternative method of
2617         getting font metrics. Also, when dealing with Adobe fonts, use the
2618         bbox to get metrics rather than using the normal
2619         ascender/descender/height values.
2621 2009-07-30  Jackson Harper  <jackson@ximian.com>
2623         * xaml.cpp: Swallow white space before linebreaks. 
2625 2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2627         * src.mdp: Connect the Build command in
2628         MonoDevelop with 'make install'.
2630 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2632         * multiscaleimage.cpp: leak and initialization fixes
2634 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2636         * shape.cpp: use smart pointer to avoid unreffing by hand
2638 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2640         * timeline.cpp: leak fix
2642 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2644         * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
2645         * Makefile.am: updated
2647 2009-07-29  Larry Ewing  <lewing@novell.com>
2649         * border.cpp (ArrangeOverride): return the input now that it is
2650         correctly sized.
2652         * frameworkelement.cpp: short circuit Measure and Arrange if the
2653         element is collapsed.
2655 2009-07-29  Jeffrey Stedfast  <fejj@novell.com>
2657         * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
2658         of the keyboard event was handled (meaning the state has changed).
2659         (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
2660         here.
2662 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2664         * shape.cpp: Plug a leak.
2666 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2668         * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
2669         semantics as EventObject::Emit: unref the event args at the end of
2670         the Emit method.
2672 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2674         * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
2675         unreffing the reffed media we've got.
2677 2009-07-29  Sebastien Pouliot  <sebastien@ximian.com>
2679         * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
2680         Helper.CheckIntegrity (System.Windows.dll)
2682 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2684         * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
2685         improvement: return true immediately if we've actually managed to
2686         open a demuxer instead of enqueuing another call to
2687         SelectDemuxerAsync.
2689 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2691         * pipeline-asf.cpp:
2693         * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
2694         to the playlist before initializing it, since initializing it may
2695         end up opening it right away and then it must be present in the
2696         playlist.
2698 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2700         * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
2701         created when done with them.
2703 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2705         * pipeline.cpp: printf -> LOG_PIPELINE.
2707 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2709         * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
2710         when we're done with it.
2712 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2714         * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
2715         unref it when done with it.
2717 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2719         * dependencyobject.h: Make EventObject::GetObjectType
2720         non-virtual. No need for a virtual method anymore, since we store
2721         the type on the object itself.
2723 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2725         * application.cpp: unref the downloader when it has finished.
2727 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2729         * utils.cpp|h: Cancellable: use strong typing to store the
2730         downloader and ref it. This way the cancel callback can use the
2731         downloader safely.
2733 2009-07-29  Alan McGovern  <amcgovern@novell.com>
2735         * textbox.h:
2736         * cbinding.h:
2737         * textbox.cpp:
2738         * cbinding.cpp: 1) TextBox cannot hook into Key press events
2739           in unmanaged code otherwise they never propagate to managed
2740           and the user cannot intercept them. Instead of hooking to
2741           the event in native code, just call native
2742           TextBox::OnKeyDown in the managed override.
2743         2) Key press events are actually handled in two different
2744           places. 'Navigation' keypresses like Left/Right/PgUp are
2745           handled when the textbox OnKeyDown virtual method is
2746           invoked. 'Character' keypresses like 'a', 'b', 'c' are
2747           handled after the KeyDown event is emitted
2748         3) If a key press does not affect the textbox state (i.e.
2749           pressing 'left' when the caret is already at the very left),
2750           then the keypress is not handled.
2751         4) The KeyDown event is emitted even if OnKeyDown is overriden
2752           and the base method is not invoked.
2753         5) The tab key should be interpreted as 'Focus next control'
2754           only after the KeyDown event handlers have run and the key
2755           press is not handled.
2757 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2759         * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
2760         know we can't decode. This means that if the user does not have
2761         MS codecs (or any other codecs) installed, he'll get the download
2762         codecs dialog for wmav3 media too.
2764 2009-07-28  Sebastien Pouliot  <sebastien@ximian.com>
2766         * mediaelement.cpp: Add a check if the codecs have already been 
2767         downloaded/installed without refreshing the browser. This will
2768         stop additional dialogs showing up and fix a crash (x86_64) if
2769         the codecs are downloaded/installed a second time in the same 
2770         session.
2772 2009-07-27  Larry Ewing  <lewing@novell.com>
2774         * src/border.cpp:
2775         * src/frameworkelement.cpp:
2776         * src/media.cpp:
2777         * src/shape.cpp:
2778         * src/textblock.cpp:
2779         * src/usercontrol.cpp: Move the alignment logic out of the
2780         controls and into the Arrange call now.
2782         Fixes DRT #335 improves several others.
2783         
2784 2009-07-28  Jackson Harper  <jackson@ximian.com>
2786         * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
2787         another name
2788         - Don't create a Matrix for TRANSFORM properties if "Identity" was
2789         used as the string.  (kinda seems like an SL bug to me).
2791 2009-07-28  Jeffrey Stedfast  <fejj@novell.com>
2793         * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
2795         * window-gtk.cpp (button_press): Revert change to drop
2796         2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
2797         we find a better way (also, 234 is still broken even with this
2798         change, which breaks 337 and possibly makes other
2799         TextBox/PasswordBox drts unfixable).
2801 2009-07-27  Larry Ewing  <lewing@novell.com>
2803         * glyphs.cpp, glyphs.h: Start implmenting glyph layout.  Fixes DRT #442.
2805 2009-07-27  Larry Ewing  <lewing@novell.com>
2807         * frameworkelement.cpp: Always round down when doing layout
2808         rounding.  
2809         
2810         * uielement.cpp (OnPropertyChanged): Invalidate layout on
2811         rounding changes.
2813         Fixes ... a lot.
2814         
2815 2009-07-27  Chris Toshok  <toshok@ximian.com>
2817         * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
2818         handler *after* all registered handlers.  part of the fix for drt
2819         234.
2821         * window-gtk.cpp (MoonWindowGtk::button_press): ignore
2822         double-click and triple click gdk events here.  part of the fix
2823         for drt 234.
2825 2009-07-27  Jackson Harper  <jackson@ximian.com>
2827         * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB.  It
2828         is legal to hydrate a top level managed non DOB class.
2829         * cbinding.cpp|h: regen
2831 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2833         * mp3.cpp: When seeking and we don't have enough data to seek to
2834         the desired pts, try again a bit later. Fixes MS DRT #59.
2836 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2838         * src.mdp: Use Makefile integration.
2840 2009-07-27  Alan McGovern  <amcgovern@novell.com>
2842         * uielement.cpp: Default styles are applied even if the user
2843           applies a style. Fixes some visual glitches in the controls
2844           toolkit site.
2846 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2848         * pipeline.cpp|h: Use Application::GetResource instead of creating
2849         downloaders to get data.
2851 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2853         * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
2854         error.
2856 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2858         * application.cpp: GetResource: set the notify_size callback
2859         on the downloader too. Media must known the size whenever possible.
2861 2009-07-27  Larry Ewing  <lewing@novell.com>
2863         * uielement.cpp (GetTransformToUIElementWithError): signal and
2864         error in the to_element doesn't have a Surface case.
2866 2009-07-26  Larry Ewing  <lewing@novell.com>
2868         * rect.h: make PointInside inclusive on the top/left.
2870 2009-07-24  Larry Ewing  <lewing@novell.com>
2872         * textblock.cpp:  Rework the bounds computation to be the max of
2873         the actual and the framework element settings.  Fixes DRT #245.
2875 2009-07-24  Larry Ewing  <lewing@novell.com>
2877         * border.cpp: Apply the default constraints more carefully.
2879         * src/frameworkelement.cpp, src/frameworkelement.h: add
2880         ApplySizeContraints method, use it.
2882         * src/canvas.cpp:
2883         * src/shape.cpp:
2884         * src/textblock.cpp:
2885         * src/usercontrol.cpp: use ApplySizeContraints method.
2887 2009-07-24  Larry Ewing  <lewing@novell.com>
2889         Rename some of the layout information based on some
2890         of the tests.
2892 2009-07-24  Jeffrey Stedfast  <fejj@novell.com>
2894         * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
2895         width/height properties change, pass those values along to our
2896         TextBoxView as well.
2898 2009-07-24  Jackson Harper  <jackson@ximian.com>
2900         * xaml.cpp: Instead of cloning the element set it's namescope
2901         explicitly so it doesn't get registered in another namescope when
2902         it is used as a property of an element in another namescope.
2904 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
2906         * downloader.cpp (same_domain): Fixed to be safe if/when a uri
2907         host is NULL.
2909 2009-07-23  Alan McGovern  <amcgovern@novell.com>
2911         * animation.cpp: If the initial value is null, create a Value
2912         with the correct type with IsNull set to true.
2914 2009-07-23  Jackson Harper  <jackson@ximian.com>
2916         * xaml.cpp: If we are getting a named item from the app resources
2917         we should clone it since it comes from a different namescope. This
2918         allows you to have named items in app.resources be referenced in
2919         control code as a static resource even if it has the same name as
2920         an object in the control code.
2922 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
2924         * fonts.cpp (LoadPortableUserInterface): Even if we are a
2925         Silverlight 2.0 app, we still need to load Lucida Sans for the
2926         font face extents (Lucida extents seem to be very close to what
2927         Microsoft Silverlight is using).
2929 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2931         * runtime.cpp: HandleUIKeyRelease: add a null check before
2932         accessing toplevel. Apparently toplevel can be null when the
2933         site fails to load completely (mstv.cz / bug #506306).
2935 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2937         * media.h: MarkerReachedEventArgs: make Markers accessible to
2938         managed code.
2940         * cbinding.h:
2941         * cbinding.cpp: Regenerated.
2943 2009-07-22  Chris Toshok  <toshok@ximian.com>
2945         * animation.h|cpp: add some more accessors for AnimationStorages
2946         so we can clone them.
2948         * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
2949         from here, and put it in DependencyObject where (imo) it belonged
2950         all along.
2952         * dependencyobject.h|cpp: move the AnimationStorage stuff here,
2953         and also add support for cloning the storage while we're cloning
2954         the object.  This means that new animations started against
2955         existing objects (with animations) will inherit the right reset
2956         value.  This fixes the button animation regression.
2958 2009-07-22  Jeffrey Stedfast  <fejj@novell.com>
2960         * fonts.cpp (LoadPortableUserInterface): If the application is a
2961         Silverlight 2.0 app, default to Verdana instead of Lucida Sans
2962         Unicode.
2964         * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
2965         is a no-op for ReadOnly TextBox controls.
2967 2009-07-22  Sebastien Pouliot  <sebastien@ximian.com>
2969         * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
2970         the current timemanager.
2972 2009-07-21  Jeffrey Stedfast  <fejj@novell.com>
2974         * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
2975         bit.
2976         (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
2977         Cut/Copy/Paste.
2978         (TextBoxBase::OnKeyDown): If there is no selection and the user
2979         invokes the Cut or Copy commands, do not overwrite the clipboard
2980         buffer with an empty string.
2982 2009-07-21  Jackson Harper  <jackson@ximian.com>
2984         * xaml.cpp: Raise errors from managed SetProperty.
2986 2009-07-21  Jackson Harper  <jackson@ximian.com>
2988         * xaml.cpp: Don't raise errors if we are a managed element, let
2989         the managed SetProperty handle that stuff.
2991 2009-07-21  Alan McGovern  <amcgovern@novell.com>
2993         * geometry.h:
2994         * dependencyproperty.g.cpp: The issue with auto creating
2995           PathGeometry.Figures appears to be fixed so add
2996           AutoCreateValue to FiguresProperty and see how the bots
2997           react...
2999 2009-07-20  Chris Toshok  <toshok@ximian.com>
3001         * application.h|cpp: add a ResourceBase parameter to all the
3002         GetResource calls and to the GetResourceCallback delegate type.
3004         * dependencyobject.h (DependencyObject::SetResourceBase,
3005         DependencyObject::GetResourceBase): new methods.
3007         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3008         "inherit" resource base from our parent (this might be very, very
3009         wrong...)
3010         (DependencyObject::Initialize): init resource_base to null.
3011         (DependencyObject::~DependencyObject): free resource_base.
3013         * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
3014         resource using our resource base.
3016         * template.cpp (FrameworkTemplate::GetVisualTree): use the same
3017         resource base when expanding the template.
3019         * textblock.cpp (Inline::AddFontResource): locate the font using
3020         our resource base.
3021         (TextBlock::AddFontResource): same.
3023         * textbox.cpp (TextBoxBase::AddFontResource): same.
3024         using our resource base.
3026         * glyphs.cpp (Glyphs::SetFontResource): same.
3028         * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
3029         those SetSurface calls, and put it here.  Also, set the resource
3030         base at the same time.
3031         (XamlLoader::Initialize): store off the resource_base.
3032         (XamlLoader::~XamlLoader): and free it.
3033         (xaml_loader_new): take a resourceBase, and pass it along.
3034         (XamlLoader::HydrateFromString): set the ResourceBase on the
3035         toplevel object.
3036         (create_element_info_from_imported_managed_type): remove the
3037         SetSurface call, just call XamlParserInfo::AddCreatedElement.
3038         (XamlElementInstanceNative::CreateItem): same.
3039         (XamlElementInfoManaged::CreateElementInstance): same.
3040         (XamlElementInfoManaged::CreateWrappedElementInstance): same.
3042         * xaml.h (class XamlLoader): add a common Initialize method, and a
3043         ctor overload that takes a "resource base", which is the uri which
3044         we're loading from.  Also add a GetResourceBase() accessor.
3046         * cbinding.h: regen
3048 2009-07-20  Larry Ewing  <lewing@novell.com>
3050         * uielement.cpp (ComputeTransform): add a hack for placing popup
3051         children for now.
3053         * popup.cpp: call updatetransform on our child whenever the offset
3054         values change.  Fixes DRTs #325 #503 
3055         
3056 2009-07-18  Jackson Harper  <jackson@ximian.com>
3058         * xaml.h|cpp: New flag on the loader for determining whether or
3059         not to auto import the default SL namespace.
3060         - Throw the proper error if the default namespace isn't available.
3061         * template.cpp: Templates get the default namespace auto
3062         imported.
3064 2009-07-17  Larry Ewing  <lewing@novell.com>
3066         * runtime.cpp (Attach): copy the current framerate to the new
3067         timemanager.
3069 2009-07-17  Jeffrey Stedfast  <fejj@novell.com>
3071         * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
3072         multiline support.
3073         (TextBoxBase::Paste): Consider the SelectionLength in our
3074         MaxLength overflow calculation.
3075         (TextBuffer::ctor): Instead of taking ownership of a string
3076         buffer, just copy it instead. This keeps memory management more
3077         obvious higher up.
3078         (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
3079         'inserted' string.
3080         (TextBoxUndoActionReplace::ctor): Same, so copy it.
3081         (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
3082         the undo action. I think some of these situations leaked before.
3084 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3086         * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
3088 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3090         * multiscaleimage.cpp: more protections against crash with 31 layers
3092 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3093         
3094         * multiscaleimage.cpp: allow up to 31 layers.
3096 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3098         * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
3100 2009-07-17  Alan McGovern  <amcgovern@novell.com>
3102         * runtime.cpp: Correctly set 'emittingMouseEvent' to
3103           true/false when we receive a mouse event. Fixes some mouse
3104           capture issues in drt 535
3106 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3108         * playlist.cpp|h: Make the *Async methods really async, and add corresponding
3109         non-async methods.
3111         * mediaplayer.cpp: Don't allow Play while we're seeking.
3113         * mediaelement.cpp: When calling any of the async methods on the playlist,
3114         set the expected state immediately, since CurrentState is not async. Also
3115         allow Play/Pause/Stop if we're already in the desired state, since there might
3116         be another state changed pending.
3118 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3120         * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
3122 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3124         * pipeline.cpp|h: Notify the decoder when a seek has completed so
3125         that it can clean its state properly. FillBuffers: the final buffer size
3126         is equal to the smallest buffer size of all the streams, not the buffer
3127         size of the last stream.
3129 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3131         * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
3132         has already finished.
3134 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3136         * playlist.cpp|h: Fix IsSingleFile implementation.
3138         * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
3139         a Stop for non-playlist media.
3141 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3143         * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
3144         it whenever we stop the audio. AdvanceFrame: For media with a specified
3145         duration stop the audio when we've reached the desired duration.
3147 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3149         * mediaelement.cpp: OpenCompletedHander: Before emitting
3150         DownloadProgressChangedEvent get the highest DownloadProgress value
3151         from either our own dependency property or the media. For mms streams
3152         download progress needs to be 1.0 when emitting MediaOpenedEvent,
3153         the mms code sets media's DownloadProgress to 1.0 after parsing the
3154         asf header correctly, but since the media emits the DownloadProgressChanged
3155         event async, the dependency property in MediaElement hasn't been updated
3156         yet in OpenCompletedHandler.
3158 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3160         * pipeline.cpp: Allow buffering progress to go down, not only up.
3161         Also fix progress events to only emit if delta > 0.5% or if equal
3162         to lower/upper limits.
3164 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3166         * pipeline.cpp|h: When we get a decode frame request from another
3167         thread, store the request on the demuxer in a list, instead of on the
3168         media thread's stack. This ensures that decode frame requests are
3169         decoded in the same order they're requested.
3171         * type.h:
3172         * value.h:
3173         * cbinding.h:
3174         * type-generated.cpp: Regenerated.
3176 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3178         * playlist.cpp|h: Added and Emit EntryChangedEvent.
3180         * type-generated.cpp: Regenerated.
3182 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3184         * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
3185         it here.
3187 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3189         * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
3190         buffer level will fluctuate as we play.
3192 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3194         * mediaelement.cpp|h: When we pause, store the current position, which we must return
3195         while paused. It may differ from the actual position when we pause, since the actual
3196         pause is done async.
3198 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3200         * mediaplayer.cpp|h:
3201         * mediaelement.cpp|h: Use a property value provider for
3202         Render/DroppedFramesPerSecond.
3204 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3206         * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
3207         call us from a worker thread.
3209 2009-07-16  Jackson Harper  <jackson@ximian.com>
3211         * xaml.cpp: When creating user controls make sure that we are
3212         hydrating if an x:Class type name is used.
3214 2009-07-16  Jeffrey Stedfast  <fejj@novell.com>
3216         * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
3217         'atomic' argument. If atomic is true, then the buffer is not
3218         growable. This is the behavior we want for TextBoxBase::Paste(),
3219         but not TextBoxBase::Commit() (which needs to allow growable
3220         insert actions so that Undo removes the string of text the user
3221         just typed as opposed to just the most recent character).
3222         (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
3223         TextBoxUndoActionInsert::.ctor().
3225 2009-07-16  Alan McGovern  <amcgovern@novell.com>
3227         * control.h:
3228         * uielement.h:
3229         * control.cpp:
3230         * uielement.cpp: 1) If the Control is not attached to a
3231           subtree which has been loaded, don't propagate IsEnabled to
3232           its children.
3233         2) Whenever a Control is loaded we traverse it's visual
3234           parents until we find another control and propagate the
3235           IsEnabled state.
3237 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3239         * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
3240         properties as AlwaysChange. fix drt #291.
3242 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3244         * dependencyobject.cpp: Retrieve all instance variables we need
3245         into local variables before decreasing the refcount. If the
3246         refcount is > 0 after decreasing it, we can't access instance
3247         variables anymore, since another thread might have unreffed which
3248         would cause the object to be deleted already.
3250 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3252         * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
3253         a comment.
3255 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3257         * dependencyobject.cpp: Add sanity check for refcount < 0.
3259 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3261         * dependencyobject.cpp: Move sanity verification into #if SANITY.
3263 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3265         * dependencyobject.h: Is, GetType, GetTypeName: use the Type
3266         overloads which takes a Deployment and provide our deployment
3267         instance.
3269 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3271         * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
3272         which takes a Deployment argument for when we already have the
3273         Deployment handy.  This way we can avoid hitting
3274         Deployment::GetCurrent on some frequently used methods.
3276         * type.h: Regenerated.
3278 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3280         * runtime.h: Add stack trace to warning.
3282 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3284         * audio.cpp: Underflowed: if we haven't ended and don't have any
3285         more frames, we need to set the Waiting bit so that we start
3286         playing again when we get more frames.
3288 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3290         * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
3291         avoid issues while reusing dlders for the same images, like in drt2013
3293 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3295         * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
3296         on tilesource InvalidateTileLayer ().
3298 2009-07-16  Jackson Harper  <jackson@ximian.com>
3300         * xaml.cpp: Remove some dead code.
3302 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3304         * deployment.h: DeploymentStack: Added to ease push/pop current
3305         deployment when calling into a browser.
3307 2009-07-15  Chris Toshok  <toshok@ximian.com>
3309         * clock.h|cpp (Clock::CalculateFillTime): split this out from
3310         Clock::Begin since we can seek on a clock that hasn't actually hit
3311         Clock::Begin yet.
3312         (Clock::Begin): call CalculateFillTime.
3313         (Clock::UpdateFromParentTime): change our calculations slightly
3314         for what localTime is in the face of a seek, and update
3315         progress/localtime even when stopped.  Also, call
3316         CalculateFillTime if we're seeking on a clock that hasn't started,
3317         to make sure we get the proper progress.
3318         (Clock::Seek): don't apply the SpeedRatio here, we do it in
3319         UpdateFromParentTime.
3321         * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
3322         never used.
3323         (AnimationStorage::UpdatePropertyValue): pass the stopValue or
3324         baseValue as the defaultDestinationValue to
3325         AnimationClock::GetCurrentValue.
3326         (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
3327         (DoubleAnimation::GetCurrentValue): if there's a correctly typed
3328         defaultDestinationValue, use that before the base case of end =
3329         start.
3330         (ColorAnimation::GetCurrentValue): same.
3331         (PointAnimation::GetCurrentValue): same.
3333 2009-07-15  Jackson Harper  <jackson@ximian.com>
3335         * xaml.cpp|h: Consolidate some of the data passed to
3336         every callback and not used much into a struct.
3338 2009-07-15  Jeffrey Stedfast  <fejj@novell.com>
3340         * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
3341         return NULL, so properly handle this error condition.
3342         (IndexFontFile): Same.
3343         (FontManager::OpenFontFace): Here too.
3344         (OpenSystemFont): Don't destroy the FcPattern until after opening
3345         the font (otherwise the filename will be free'd memory).
3347         * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
3348         get the brush used for rendering the blinking caret. This is a 3.0
3349         feature.
3351 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3353         * control.h:
3354         * control.cpp: Remove the Control::SetVisualParent override
3355           which ensures Control::IsEnabled is propagated correctly as
3356           this needs to be performed in UIElement::SetVisualParent.
3357           Set the subtreeobject before calling
3358           FrameworkElement::ElementAdded otherwise Control::IsEnabled
3359           cannot be propagated.
3361         * uielement.h:
3362         * uielement.cpp: Whenever the visual parent is changed on a
3363           UIElement we need to propagate Control::IsEnabled changes
3364           down the tree. Allows drt 557 to get a lot further.
3366 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3368         * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
3370 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3372         * pipeline.cpp: When seeking, reset buffering progress to 0.
3374 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3376         * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
3377         (that we know of), so initialize DownloadProgress to 1.0.
3379 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3381         * mediaelement.cpp: Don't emit CurrentStateChanged after calling
3382         SetState, since SetState will also emit the event.
3384 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3386         * tabnavigationwalker.cpp: If a child node is disabled, there
3387           is no point in walking its children or attempting to tab to
3388           it.
3390 2009-07-15  Jackson Harper  <jackson@ximian.com>
3392         * xaml.cpp: We don't want to auto import the SL namespaces when
3393         loading files
3394         
3395 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3397         * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
3399         * cbinding.cpp|h: Regenerated.
3401 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3403         * bitmapimage.h|cpp: drop the downloader references, rely on
3404         Application::GetResource () for getting from resource AND downloading. The
3405         old downloader mechanism for v1 js callbacks.
3407 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
3409         * application.h|cpp: Application.GetResource () now try to get the resource
3410         from the managed callback, then fallback to downloading.
3412 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
3414         * utils.h|cpp: Cancellable class, passed as method argument, allows
3415         to abort an async action.
3417 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3419         * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
3420         hook itself in and invalidate the cache
3422 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3424         * tilesource.h|cpp: stub InvalidateTileLayer
3426 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3428         * control.cpp: Ensure that the control loses focus when it is
3429           disabled even if there are no other focusable controls. Also
3430           ensure the surface is not null before using it, fixes a
3431           regression in 432.
3433 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3435         * error.h: ErrorEventArg: Add accessors that can be pinvoked.
3437         * cbinding.cpp|h: Regenerated.
3439 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3441         * control.cpp: When the focused control is disabled, tab to
3442           the next suitable control.
3444 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3446         * runtime.h:
3447         * runtime.cpp: Implement the default autofocusing behaviour
3448           which silverlight exhibits. Apparently if the root control
3449           is focused, silverlight will keep attempting to focus a
3450           child of that control until it succeeds. Once a child
3451           control is focused, the focus changed events are emitted
3452           immediately, ignoring the usual focusing rules. Fixes DRT
3453           323.
3455 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3457         * uielement.cpp: When clearing the Loaded flag on a UIElement,
3458           we should clear the flag on all visual children too.
3460 2009-07-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3462         * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
3464 2009-07-14  Larry Ewing  <lewing@novell.com>
3466         * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
3467         bounds when the bg changes.  Fixes 641
3469 2009-07-14  Larry Ewing  <lewing@novell.com>
3471         * border.cpp (OnSubPropertyChanged): elements must listen to
3472         subproperty changes for brushes.  Fixes 2020
3474 2009-07-14  Alan McGovern  <amcgovern@novell.com>
3476         * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
3477           called on a Control with the 'Cycle' navigation mode and
3478           none of the children of that node can be tabbed to, then
3479           focus remains on that control.
3481 2009-07-13  Jeffrey Stedfast  <fejj@novell.com>
3483         * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
3484         string array until after we've finished using the hash
3485         table. Prevents FMRs.
3487 2009-07-13  Jackson Harper  <jackson@ximian.com>
3489         * xaml.cpp: Don't allow setting x:Name and Name on the same
3490         element
3491         - Raise an error if we try to set a property to an incompatible
3492         type.
3494 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3496         * runtime.cpp:
3497         * uielement.cpp: If the focused element is removed from the
3498           visual tree, it should lose focus.
3500 2009-07-13  Jackson Harper  <jackson@ximian.com>
3502         * xaml.cpp: Oops, trying to get the element name from the wrong
3503         void*
3505 2009-07-13  Jackson Harper  <jackson@ximian.com>
3507         * xaml.cpp: Handle MoonErrors for AddChild.
3509 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3511         * mp3.cpp:
3512         * pipeline.h:
3513         * playlist.cpp:
3514         * pipeline.cpp:
3515         * pipeline-asf.cpp:
3516         * mms-downloader.cpp: IMediaObject: make the media field
3517           private, and add thread-safe property accessors (using a
3518           mutex and always returning a reffed object). Update all code
3519           which accessed the old accessor to use the new accessor and
3520           unref the media when done.
3522 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3524         * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
3526         * type.h:
3527         * value.h:
3528         * type-generated.cpp: Regenerated.
3530 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3532         * control.cpp: A control does not have to be loaded to be
3533           focusable, the visual tree it's attached to has to be
3534           loaded.
3536 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3538         * cbinding.h:
3539         * cbinding.cpp:
3540         * tabnavigationwalker.h: TabNavigation should activate if the
3541           control does not handle the Tab key
3543 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3545         * src.mdp:
3546         * cbinding.h:
3547         * Makefile.am:
3548         * collection.h:
3549         * collection.cpp:
3550         * tabnavigationwalker.h:
3551         * tabnavigationwalker.cpp: Commit the initial implementation
3552           of the TabNavigationWalker. Supports the three tabbing modes
3553           and also forward/backward tabbing. Passes drt 323 except for
3554           a default focusing issue.
3556 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3558         * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
3559           KeyTab press.
3561 2009-07-13  Jérémie Laval  <jeremie.laval@gmail.com>
3562         * src/xaml.cpp
3563         * src/dependencyproperty.cpp: Added const modifier to local variables.
3564         Fix the build with recent gcc.
3566 2009-07-10  Chris Toshok  <toshok@ximian.com>
3568         * value.h.in|cpp (Value::Clone): new method, clone the DO if the
3569         value contains one, and otherwise just copy the contents.
3571         * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
3572         this is probably wrong, as the mapping needs to reference cloned
3573         objects, not the same objects that existed in the original
3574         mapping.
3576         * collection.h|cpp (Collection::CloneCore): clone the collection
3577         contents.
3579         * dependencyproperty.h|cpp (resolve_property_path): add a
3580         promoted_values hashtable argument.  if the value has already been
3581         promoted, don't do it again. promote the first value we can while
3582         resolving the property path.  Don't promote UIElement subclasses
3583         though.
3584         
3585         * dependencyobject.h|cpp: add api for cloning (deep copying) for
3586         DependencyObjects.  DependencyObject::Clone is the public
3587         interface, with subclasses overriding ::CloneCore if they need to.
3589         * color.cpp (color_to_string): multiply by 255, not 256.
3591         * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
3592         takes a hashtable now so we don't promote values more than
3593         once (doing so causes previous animations to target objects that
3594         are no longer attached anywhere).
3596         * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
3598 2009-07-10  Larry Ewing  <lewing@novell.com>
3600         * shape.cpp (MeasureOverride): start working towards fixing
3601         LayoutShapes with some tweaking here.
3602         (Clip): apply the framework clip to elements in the flow too.
3604 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
3606         * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
3607         instead of Gtk+.
3608         (TextBoxBase::CursorPrevWord): Same.
3609         (TextBoxBase::KeyPressRight): If there is currently a selection
3610         and the user presses ArrowRight by itself, set the anchor and
3611         cursor at the end of the selection.
3612         (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
3613         of the selection.
3615 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
3617         * textbox.cpp: Always set SelectionStart before
3618         SelectionLength. Fixes a bug when selecting backwards from the end
3619         of the buffer.
3621 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3623         * mediaelement.cpp|h: Store the last seeked-to position so that we never
3624         return a value before that as the current Position. MS DRT #486 uses
3625         a MediaStreamSource which returns frames before the seeked to position
3626         after seeking, and the test checks that MediaElement's Position property
3627         never returns a value before the seeked to position.
3629 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3631         * audio.cpp: When we stop, we need to discard any audio data we might
3632         have stored.
3634 2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>
3636         * runtime.cpp|h, type-generated.cpp: Rename 
3637         SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
3639 2009-07-09  Jeffrey Stedfast  <fejj@novell.com>
3641         Fixes DRT #246
3643         * uri.cpp: Don't use a GData for params, instead use a custom
3644         linked-list. This makes it easier to compare param lists.
3645         (operator==): Compare params.
3647         * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
3648         the selection.
3650 2009-07-09  Jackson Harper  <jackson@ximian.com>
3652         * dependencyobject.cpp|h: Add a little more logic for setting
3653         things to NULL and consolidate in it's own function (STRING can
3654         now be set to NULL).
3656 2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>
3658         * downloader.cpp|h: Don't check redirection AFTER downloading the
3659         data. Expose CheckRedirectionPolicy so the plugin can check for
3660         the redirection policy when creating a new stream.
3661         * uri.cpp|h: Add IsAbsolute method and make the return value of
3662         IsScheme const.
3664 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3666         * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
3667         the root takes care of that. (Playlist): loop over all children and
3668         call StopAsync on them, this way all nested playlists are reset properly
3669         (PlaylistRoot): when done stopping, reopen us.
3671 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3673         * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
3675 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3677         * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
3679 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3681         * mediaelement.cpp: Don't go directly into a Buffering state, when
3682         MediaOpened is emitted we must be either in Paused or Playing state.
3684 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3686         * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
3688 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3690         * mediaelement.cpp|h: Emit CurrentState events asynchronously.
3692 2009-07-08  Larry Ewing  <lewing@novell.com>
3694         * frameworkelement.cpp (Arrange): apply min/max values to the
3695         offer.
3697 2009-07-08  Jeffrey Stedfast  <fejj@novell.com>
3699         * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
3700         at opening the requested system font. First, try using the font
3701         name exactly as the user gave it to us. If that fails, fallback to
3702         canonicalizing it and the style values.
3703         (style_diff): Modify the algorithm used to compare the style
3704         difference between 2 fonts.
3706 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3708         * validators.cpp|h:
3709         * mediaelement.h: Add validators for Balance and Volume.
3710         This fixes MS DRT #960.
3712         * value.cpp|in: Add support for changing a value.
3714         * value.h:
3715         * dependencyproperty.g.cpp: Regenerated.
3717 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3719         * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
3720         some casing changes with media attributes. PlayNext: fix logic, after
3721         finishing a nested playlist we must play the next entry in our playlist,
3722         not finish right away. If the pipeline raises a MediaError event due to
3723         missing a codec (which is most likely due to an unsupported media file),
3724         don't propagate the error, just play the next entry. Fix a lot of error
3725         code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
3726         as 99.6% of our playlist tests.
3728 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3730         * pipeline.h:
3731         * playlist.h|cpp: Unify playlist detection into one place and add
3732         support for skipping initial whitespace in the file.
3734 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3736         * playlist.cpp|h: String setters: be consistent: take a const string
3737         and dup inside the setter if required, instead of always when calling
3738         the setter, which may leak.
3740 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3742         * playlist.cpp: OnASXStartElement: null initialize to avoid reading 
3743         random memory.
3745 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3747         * playlist.cpp: Cleanup: cleanup properly since we may continue to live
3748         after this method has been called.
3750 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3752         * playlist.cpp: PlaylistEntry: needs to ref/unref the source. 
3754 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3756         * pipeline.cpp:
3757         * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
3758         the parsing fails, propagate the args up in the pipeline.
3760 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3762         * mediaelement.cpp: We need to populate media attributes before raising
3763         MediaOpened.
3765 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3767         * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
3768         has changed at least a tiny bit.
3770 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3772         * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
3774 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3776         * mediaelement.cpp: Properly set CanPause and CanSeek, and always use 
3777         mediaplayer's duration as NaturalDuration.
3779 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3781         * mediaplayer.cpp: All starting points seem to be allowed now, so don't
3782         throw an error event for starting point > duration anymore. Also duration
3783         is always the entire length of the media, regardless of when we start and
3784         how long we're supposed to play.
3786 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3788         * error.cpp|h: Add custom information to ErrorEventArgs, to provide
3789         better Moonlight debugging and in some cases we need more information
3790         than what MS reports.
3792 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3794         * media.cpp: MediaAttributes are case-insensitive.
3796 2009-07-07  Jeffrey Stedfast  <fejj@novell.com>
3798         * fontmanager.cpp (canon_font_family_and_style): New convenience
3799         function to canonicalize font family & style info, split out of
3800         IndexMatchFace().
3801         (IndexMatchFace): Use the new function.
3803 2009-07-07  Jackson Harper  <jackson@ximian.com>
3805         * style.h: Need an internal setter for IsSealed so we can do the
3806         parser seal/unseal hack.
3808 2009-07-07  Sebastien Pouliot  <sebastien@ximian.com>
3810         * downloader.cpp|h: Add a new FontPolicy since it differs from 
3811         XamlPolicy (which is otherwise *unused*) and fix policies wrt
3812         http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
3813         * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
3814         when downloading
3816 2009-07-07  Alan McGovern  <amcgovern@novell.com>
3818         * namescope.cpp: Once a namescope is locked, don't allow names
3819           to be registered or unregistered. Fixes the case where the
3820           name is changed on a template item.
3822 2009-07-07  Alan McGovern  <amcgovern@novell.com>
3824         * xaml.h:
3825         * xaml.cpp:
3826         * template.cpp: When expanding a template, mark all the
3827           children as TemplateItems so they will be able to look up
3828           the correct namescope.
3830         * control.h:
3831         * control.cpp:
3832         * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
3833           property.
3835         * dependencyobject.h:
3836         * dependencyobject.cpp: Add extra overloads to FindName and
3837           FindNameScope so that we can tell whether we are looking up
3838           a template name or regular name.
3840         * namescope.h:
3841         * namescope.cpp: Add the ability to lock a namescope so it
3842         can be recognised as a template namescope.
3844 2009-07-07  Jackson Harper  <jackson@ximian.com>
3846         * xaml.cpp: Lookup properties on the owner type so attached
3847         properties get looked up properly when setting them via text ie
3848         <Canvas.Left>5</Canvas.Left>
3850 2009-07-06  Jackson Harper  <jackson@ximian.com>
3852         * xaml.cpp: Ignored elements should buffer their contents
3853         - Add in Ignored attributes
3855 2009-07-06  Jackson Harper  <jackson@ximian.com>
3857         * xaml.cpp: Implement ignorable namespaces.
3859 2009-07-06  Larry Ewing  <lewing@novell.com>
3861         * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
3863 2009-07-06  Stephane Delcroix  <sdelcroix@novell.com>
3865         * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
3866         so ZoomAbout *= the target's value for zoom, not the current one.
3868 2009-07-06  Jeffrey Stedfast  <fejj@novell.com>
3870         Fixes drt 249.
3872         * fonts.cpp (LoadPortableUserInterface): Return the index of the
3873         Lucida font face.
3874         (TextFont::Load): If PUI is our first family, keep track of which
3875         face the Lucida face is and use that as our master. Otherwise use
3876         the first face.
3877         (TextFont::UpdateFaceExtents): Use the 'master' face to get the
3878         extents from, rather than the first face.
3880 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3882         * playlist.cpp: PlayNext: play even if previous entry didn't fail.
3883         Fixes our test #136.
3885 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3887         * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
3888         playlist format so we'll never get it, it'll be parsed on the
3889         media server.
3891 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3893         * mediaelement.cpp: Fix warning.
3895 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3897         * src.mdp: Updated.
3899 2009-07-03  Larry Ewing  <lewing@novell.com>
3901         * textblock.cpp (ArrangeOverride): try to get textblock height
3902         stretching closer.  See 295 and 2020 for examples.
3904 2009-07-03  Alan McGovern  <amcgovern@novell.com>
3906         * runtime.cpp: We don't need to change these actually.
3908 2009-07-03  Alan McGovern  <amcgovern@novell.com>
3910         * runtime.cpp: When inside the if statement, we know that
3911           toplevel and element are the same, so use 'element' instead
3912           of 'toplevel' in case the toplevel is removed during the
3913           loaded/resized event. Fixes memorabilia.
3915 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3917         * mms-downloader.cpp: ProcessResponseHeaderCallback:
3918         set current deployment.
3920 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3922         * pipeline-asf.cpp|h:
3923         * mms-downloader.cpp|h: If downloading the mms url
3924         doesn't succeed, raise an error. Fixes MS DRT #222
3925         completely.
3927 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3929         * pipeline-asf.cpp:
3930         * mediaelement.cpp: When playing an mms stream, SL sets
3931         DownloadProgress to 1.0 after downloading the header.
3932         Makes MS DRT #222 reach a bit further.
3934 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3936         * pipeline.cpp: Fix printf.
3938 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3940         * mediaelement.cpp: Handle DownloadProgressChanged events
3941         properly.
3943 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3945         * downloader.cpp|h: Add another downloader API
3946         method, this time to get the DownloaderResponse.
3948         * cbinding.cpp|h: Regenerated.
3950 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
3952         * multiscaleimage.h: instruct the generator to do more for us.
3954 2009-07-02  Chris Toshok  <toshok@ximian.com>
3956         * propertypath.h: fix operator== and add operator!=.
3958         * validators.h|cpp: add StoryboardTargetPropertyValidator.
3960         * dependencyproperty.g.cpp: regen.
3962         * animation.h (class Storyboard): use a special validator for
3963         TargetPropertyProperty such that it follows the semantics laid out
3964         in StoryboardTest.SetTargetPropertyTwice*.
3966 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3968        * mediaelement.cpp: Protect against emitting BufferingProgressChanged
3969        when the actual value hasn't changed.
3971        * pipeline.cpp: FillBuffers: don't report any buffering progress
3972        if we don't have any media streams.
3974 2009-07-02  Jeffrey Stedfast  <fejj@novell.com>
3976         * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
3977         argument which is used for loading the preferred default font (by
3978         language) first, before the other fallback fonts.
3979         (TextFont::Load): Pass in the 'lang' argument.
3980         (TextFontDescription): Added methods to get/set a Language
3981         property.
3983         * textblock.cpp (Inline::UpdateFontDescription): Set the language
3984         on the TextFontDescription.
3985         (TextBlock::OnPropertyChanged): If the
3986         FrameworkElement::LanguageProperty changes, reload the fonts and
3987         invalidate.
3989 2009-07-02  Jackson Harper  <jackson@ximian.com>
3991         * xaml.cpp: Fix error code so it gets propogated up when
3992         validating templates.
3994 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3996         * runtime.cpp: Fix printf.
3998 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4000         * multiscaleimage.h|cpp: handle the various motion finished separately
4001         and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
4002         animations are completed.
4004 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4006         * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
4007         use a custom property provider so getting vp origin or width returns
4008         the current value, while setting them sets the animation's targets.
4010 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4012         * pipeline.cpp: FillBuffers: Only take into
4013         account media streams when trying to determine
4014         if all streams have reached its end. Fixes our test
4015         #150.
4017 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4019         * mediaelement.cpp: Reinvalidate everything when
4020         clearing a source. Fixes MS DRT #45 (after setting
4021         the source to an empty string, the media element
4022         shouldn't render anything anymore).
4024 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4026         * pipeline.cpp: FillBuffers: Take into account that
4027         decoders may call SetOutputEnded once SetInputEnded
4028         is called, and update the number of ended streams
4029         immediately. Fixes our test #111.
4031 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4033         * pipeline.cpp:
4034         * playlist.cpp: Make debug output more descriptive.
4036 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4038         * pipeline-asf.cpp|h: Reimplement support for mms seeking.
4040 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4042         * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
4043         try again later.
4045 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4047         * mp3.cpp: Fix parsing of xing vbr headers causing wrong
4048         duration to get calculated of the file.
4050 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4052         * mp3.cpp: FindMpegHeader: fix return value: the offset of
4053         the header goes into the result output variable and we return
4054         success instead of returning a bogus error value.
4056 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4058         * pipeline.cpp: If we couldn't select a demuxer because of
4059         not having enough data yet, try again later.
4061 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4063         * mediaelement.cpp: If Source (or UriSource) is either null
4064         or an empty string, we're only supposed to clean up, not 
4065         trying to play the null/empty string.
4067 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4069         * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
4070         to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
4071         all streams have finished their output, set buffering progress
4072         to 1.0.
4074         * playlist.cpp: Properly forward progress event args.
4076         * mediaelement.cpp: Set buffering progress when it changes,
4077         and raise BufferingProgressChanged. Don't try to autoplay
4078         when buffering progress is < 1.0, wait until it reaches 1.0.
4080 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4082         * audio-pulse.cpp: Fix warning.
4084 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4086         * audio-alsa.cpp: WriteMmap: If we try to write with an audio
4087         source which has ended, call Underflowed, since that's what's
4088         happened.
4090 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4092         * audio-alsa.cpp: If hw setup failed, dump current hw parameters
4093         to stdout (if debug mode is enabled).
4095 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4097         * mms-downloader.cpp: Do better initialization and cleanup of
4098         downloader and state variables to prevent issues when seeking.
4100 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4102         * mms-downloader.cpp: Write: Don't use math when not necessary to
4103         avoid overflows, and if we end up freeing the buffer set the size
4104         accordingly.
4106 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4108         * mms-downloader.cpp: Use thread-safe tick call from media thread.
4110 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4112         * mms-downloader.cpp: Don't leak the uri.
4114 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4116         * downloader.h: Make OpenInitialize public so that the
4117         MmsDownloader can reinitialize it when sending new requests.
4119 2009-06-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4121         * audio.cpp: Play 24 bit audio unconditionally.
4123 2009-07-01  Chris Toshok  <toshok@ximian.com>
4125         * Makefile.am (INCLUDES): turns out we need to include ../plugin
4126         here to deal with type-generated/type.h/etc.
4128         * type.h.in: fix annoying indent problem.
4130         * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
4131         value.h, type.h: regen
4133 2009-07-01  Larry Ewing  <lewing@novell.com>
4135         * textblock.cpp (ArrangeOverride): take alignment into account
4136         when computing our size.
4138 2009-07-01  Jeffrey Stedfast  <fejj@novell.com>
4140         * textblock.cpp (ArrangeOverride): Set the available width on the
4141         layout so that it can properly align the text for center/right
4142         alignment.
4144 2009-07-01  Jackson Harper  <jackson@ximian.com>
4146         * xaml.cpp: Need to set the binding source when we are validating
4147         templates.
4149 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4151         * mediaelement.cpp: SetMarkerTimeout: when unreffing self
4152         use a delayed timeout, since we can be the last ref, this
4153         ensures the stack is unwound first.
4155 2009-06-30  Larry Ewing  <lewing@novell.com>
4157         * border.cpp (Render): get CornerRound rendering closer to the sl
4158         version.
4160 2009-06-30  Chris Toshok  <toshok@ximian.com>
4162         * clock.h|cpp: Seeking doesn't start the clock.  And we have to
4163         support UpdateFromParentTime even while paused, since we can seek
4164         while paused.  Fixes 392 (along with actually fixing the test..)
4166 2009-06-30  Chris Toshok  <toshok@ximian.com>
4168         * clock.h|cpp: fix Seek and SeekAlignedToLastTick.  fixed DRT
4169         tests 393 and 396.
4171 2009-06-30  Jeffrey Stedfast  <fejj@novell.com>
4173         * fontmanager.cpp (style_diff): Improved a bit so that we never
4174         return G_MAXINT if any font by the same name is found, no matter
4175         what style differences there are.
4177 2009-06-30  Jackson Harper  <jackson@ximian.com>
4179         * deepzoomimagetilesource.cpp: Parsers need to be freed.
4181 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4183         * popup.cpp: According to the docs, a popup which is GC'ed
4184           should be closed. Ensure that this happens.
4186 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4188         * popup.cpp: If the child is set after the popup is opened,
4189           make sure it is shown. Ensure that we now only emit the
4190           Opened/Closed events when the popup IsOpen state changes.
4191           Allows 503 to progress further.
4193 2009-06-30  Jackson Harper  <jackson@ximian.com>
4195         * xaml.cpp|h: Add a flag for template validation
4196         - Implement template validation and propogate errors up
4197         * cbinding.cpp: regen
4199 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4201         * multiscaleimage.cpp: drop a debug block that was misinterpreted by
4202         the preprocessor. fir x drt 265.
4204 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4206         * multiscaleimage.cpp: download the first num_dl (6) levels while the
4207         source is ready.
4209 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4211         * control.cpp: Unregress drt 911, EnabledChanged events fire
4212           at the correct time again.
4214 2009-06-29  Jeffrey Stedfast  <fejj@novell.com>
4216         * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
4217         of the GlyphMetrics fields.
4219         * layout.cpp: Updated to keep track of the previous GlyphInfo
4220         rather than the previous GlyphInfo's index.
4222         * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
4223         (TextFont::Kerning): Modified to take GlyphInfo arguments rather
4224         than face indexes since they are worthless w/o knowing which font
4225         face the indexes of each are for.
4227 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4229         * control.cpp: Propagate the IsEnabled changes down the visual
4230           tree in OnPropertyChanged, not in SetValue.
4232 2009-06-29  Jackson Harper  <jackson@ximian.com>
4234         * xaml.cpp: Store enums as INTs.
4236 2009-06-28  Chris Toshok  <toshok@ximian.com>
4238         * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
4239         Clock::Active) to (state != Clock::Stopped) to tell whether or not
4240         we've started (since we can start directly in the filling state.)
4242         Also remove all the idle_hint stuff, since it's no longer used.
4244         * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
4245         why this method is needed at all, but at the very lease we need to
4246         stop calling ClockGroup::UpdateFromParentTime, since this method
4247         very nearly duplicates that one (and we're therefore looping over
4248         the child clocks twice).
4250 2009-06-28  Chris Toshok  <toshok@ximian.com>
4252         * color.cpp (named_colors): update these so that text-colors.xaml
4253         passes.
4255 2009-06-28  Larry Ewing  <lewing@novell.com>
4257         * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
4259 2009-06-27  Jeffrey Stedfast  <fejj@novell.com>
4261         * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
4262         changes, the layout *always* gets dirty. We also always need to
4263         invalidate.
4265         * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
4266         calculate/update the font extents. Only use the extents of the
4267         first face - this fixes a bunch of MS DRTs.
4268         (TextFont::.ctor): Call UpdateFaceExtents().
4269         (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
4270         a number of regressions (like MS DRT #43).
4272 2009-06-27  Chris Toshok  <toshok@ximian.com>
4274         * grid.cpp (Grid::OnCollectionItemChanged): don't
4275         InvalidateMeasure() when the grid's actualwidth or row's
4276         actualheight is set.  this gets us into an infinite loop.
4278 2009-06-26  Chris Toshok  <toshok@ximian.com>
4280         * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
4281         (initialize_enums): and add it to the hashtable.
4283         * grid.h|cpp: make ColumnDefinition.ActualWidth and
4284         RowDefinition.ActualHeight dependencyproperties to make the plugin
4285         binding easier.  get rid of each class's "actual" field.
4286         
4287 2009-06-25  Chris Toshok  <toshok@ximian.com>
4289         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4290         object we're looking the event up on, and a flag as to whether or
4291         not to allow desktop-specific events.  and just look up the event
4292         from the type system instead of having the hardcoded list.
4294 2009-06-25  Chris Toshok  <toshok@ximian.com>
4296         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4297         object we're looking the event up on, and a flag as to whether or
4298         not to allow desktop-specific events.  and just look up the event
4299         from the type system instead of having the hardcoded list.
4301 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4303         * fonts.cpp (LoadPortableUserInterface): Only set that we've
4304         loaded PUI, not each individual fallback face. The other faces may
4305         match user-specified faces, but there may also be a font source
4306         that it is loading them from (which may differ from the locally
4307         installed faces).
4309 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4311         * runtime.cpp: Don't need to call font_init() or font_shutdown()
4312         anymore.
4314         * deployment.cpp: Create a new FontManager per Deployment and
4315         provide an access method to get at it.
4317         * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
4318         loading APIs.
4320         * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
4321         inheritance, these no longer exist.
4323         * fonts.cpp|h: New source files with the higher-level abstraction
4324         for font loading, glyph manipulation, etc.
4326         * fontmanager.cpp|h: New source files containing a FontManager
4327         class which handles caching of font faces and indexing of font
4328         resources. Serves as platform-dependent font loading layer.
4330         * font.cpp|h: Removed.
4332 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4334         * uri.cpp (ToString): Respct the UriHideQuery flag.
4336 2009-06-26  Larry Ewing  <lewing@novell.com>
4338         * border.h: change the default value.
4340         * cornerradius.h: reorder the bottom* arguments.
4342 2009-06-26  Alan McGovern  <amcgovern@novell.com>
4344         * popup.h:
4345         * popup.cpp: Handle popup hittesting when its closed in a way
4346           that doesn't suck.
4348 2009-06-26  Alan McGovern  <amcgovern@novell.com>
4350         * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
4351           IsOpen state so that hittesting works correctly.
4353 2009-06-25  Chris Toshok  <toshok@ximian.com>
4355         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4356         object we're looking the event up on, and a flag as to whether or
4357         not to allow desktop-specific events.  and just look up the event
4358         from the type system instead of having the hardcoded list.
4360 2009-06-25  Larry Ewing  <lewing@novell.com>
4362         * grid.cpp, grid.h (PostRender): move the grid lines from Render to
4363         PostRender so that the lines are on top of the children (which
4364         appears to be the sl behavior).  Fixes at least 317 and 446.
4365         
4366 2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>
4368         * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
4369         Fix two unnumbered DRT tests.
4371 2009-06-25  Chris Toshok  <toshok@ximian.com>
4373         * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
4374         generate ArgumentExceptions here if start/length are out of range.
4375         This could, in the future, be entirely handled by the setter
4376         methods but for now we don't pass a MoonError to them.
4378         * xaml.h|cpp (xaml_set_property_from_str): this method takes an
4379         additional MoonError parameter so we can communicate back if there
4380         was a problem.  Also, call SetValueWithError.
4382         * cbinding.h|cpp: regen.
4384 2009-06-25  Chris Toshok  <toshok@ximian.com>
4386         * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
4387         can tell in AddedToCollection and RemovedFromCollection if we got
4388         there from using ResourceDictionary's string-based api or
4389         Collection's object-based api.  Take care of adding/removing the
4390         key for the object in those methods if we didn't come from the RD
4391         api.
4393         * type.cpp (Type): quiet valgrind down by using "delete []"
4394         instead of "delete" to free up the interfaces array.
4396 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4398         * mediaplayer.cpp: Improve debug output.
4400 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4402         * pipeline.h: Added a ProgressEventArgs class.
4404         * value.h:
4405         * type.h:
4406         * type-generated.cpp: Regenerated.
4408 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4410         * audio.cpp|h: Add support for having different input (from the
4411         codec) and output (to the device) formats. This is required for
4412         pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
4413         bit. Also add support for multi channel audio.
4415         * audio-alsa.cpp:
4416         * audio-pulse.cpp: Add support for multi channel and 24 bit audio
4417         and update according to audio API changes.
4419 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4421         * audio-alsa.cpp: Fix debug output by not duplicating declarations.
4423 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4425         * audio.cpp|h: Add support for dumping raw audio data to a file.
4427 2009-06-25  Alan McGovern  <amcgovern@novell.com>
4429         * dependencyproperty.g.cpp: Regen
4431 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4433         * downloader.cpp:
4434         * mms-downloader.h:
4435         * file-downloader.h:
4436         * internal-downloader.h: Add a SetFilename abstract method to 
4437         InternalDownloader, provide implementations in FileDownloader
4438         and MmsDownloader and call the abstract method in the downloader
4439         instead of blindly casting an InternalDownloader to a FileDownloader
4440         when it might be an MmsDownloader.
4442 2009-06-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4444         * pipeline.cpp|h: AudioStream: add possibility of having different
4445         input and output formats.
4447         * cbinding.cpp|h: Regenerated.
4449 2009-06-24  Chris Toshok  <toshok@ximian.com>
4451         * xaml.cpp (matrix_from_str): handle "Identity" here.
4452         (value_from_str_with_parser): you can also create TransformGroups
4453         directly using the matrix syntax.  Also, add support for parsing
4454         FontWeight/FontStyle/FontWeight structs here since we can't just
4455         rely on the enum_* stuff alone to do it.
4457         * value.h.in, value.cpp: add support for
4458         FontWeight/FontStyle/FontWeight structs.
4460         * textblock.cpp (Inline::UpdateFontDescription): track the
4461         struct-update.
4462         (TextBlock::Layout): same.
4464         * textbox.cpp (TextBoxBase::Initialize): same.
4465         (TextBoxBase::OnPropertyChanged): same.
4467         * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
4468         structs now for these.
4469         
4470         * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
4471         struct types for properties instead of our internal enums.
4473         * Makefile.am (libmoon_include_headers): add fontstretch.h
4474         fontstyle.h, and fontweight.h
4476         * type-generated.cpp: regen.
4478         * cbinding.h|cppp: regen.
4480         * dependencyproperty.g.cpp: regen.
4482         * value.h: regen.
4483         
4484 2009-06-24  Larry Ewing  <lewing@novell.com>
4486         * panel.cpp (Render): add layout clipping to panel rendering.
4488 2009-06-24  Larry Ewing  <lewing@novell.com>
4490         * grid.h: stop drawing the gridlines by default.  See comment for
4491         details.
4493 2009-06-24  Alan McGovern  <amcgovern@novell.com>
4495         * runtime.h:
4496         * runtime.cpp: Focus changed events should be emitted at the
4497           start and end of any user initiated event.
4498           can_raise_focus_changed is no longer necessary.
4500 2009-06-23  Larry Ewing  <lewing@novell.com>
4502         * frameworkelement.cpp (UpdateLayout): reorder the way we process
4503         the lyout queues. Fixes ms 409.
4505 2009-06-23  Jackson Harper  <jackson@ximian.com>
4507         * xaml.cpp: Handle empty buffers
4508         
4509 2009-06-23  Jackson Harper  <jackson@ximian.com>
4511         * xaml.cpp: ContentControl can not have string content set this
4512         way, if the content object is a string it needs to be set with
4513         attributes.
4515 2009-06-23  Jackson Harper  <jackson@ximian.com>
4517         * xaml.cpp: Another stab at not skipping empty attributes. Fixed
4518         all the unit test regression this caused last night.
4520 2009-06-23  Alan McGovern  <amcgovern@novell.com>
4522         * grid.cpp: A dash length of 4 seems to be more correct.
4524 2009-06-23  Alan McGovern  <amcgovern@novell.com>
4526         * grid.h:
4527         * grid.cpp: Implement Grid.ShowGridlines
4529 2009-06-22  Jackson Harper  <jackson@ximian.com>
4531         * xaml.cpp: Pass the full prop name to managed
4532         - If managed fails to set the property, delete it so unmanaged can
4533         try
4535 2009-06-22  Larry Ewing  <lewing@novell.com>
4537         * provider.cpp: make UIElement::UseLayoutRounding inherited, this
4538         doesn't make it pass 2019 but it does a lot more. 
4540         * shape.cpp: mirror the silverlight logic for canvas children with
4541         only one of w/h set.  Fixes ms test 23.
4543 2009-06-18  Larry Ewing  <lewing@novell.com>
4545         * shape.cpp: try to get the shape flags right once again trap
4546         explicit small values properly.  Add Clipping logic to clip shapes
4547         to the fe values when explicitly set.
4549         * frameworkelement.cpp: look at stretch even when we have no
4550         children.
4552 2009-06-19  Jackson Harper  <jackson@ximian.com>
4554         * xaml.cpp|h: We now have a managed version of AddChild so remove
4555         all the AddToContainer junk and use the managed AddChild instead.
4556         - Add MoonError to all the callbacks. Not handling the errors yet,
4557         but at least they are there now.
4559 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4561         * xaml.cpp: Add comment about absolute/relative paths
4562         for MSI.
4564 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4566         * multiscaleimage.cpp: When an image has been opened,
4567         invalidate everything.
4569 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4571         * multiscaleimage.cpp|h: Emit MotionFinished after
4572         SetViewportWidth/SetViewportOrigin has been called.
4574 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4576         * multiscaleimage.cpp|h:
4577         * deepzoomimagetilesource.cpp|h: Raise error events.
4579 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4581         * multiscaleimage.cpp|h: Add support for methods exposed to JS.
4583         * cbinding.h: Regenerated.
4585 2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>
4587         * textblock.cpp: Avoid crash when using FontSource
4589 2009-06-18  Alan McGovern  <amcgovern@novell.com>
4591         * control.h:
4592         * uielement.h:
4593         * control.cpp: When the visual parent changes on a Control, it
4594           needs to search up the visual tree to find out the Enabled
4595           state of the first Control it finds. When raising the
4596           IsEnabledChanged events, the control must emit its event
4597           before controls in its subtree emit their events. Fixes drt
4598           911.
4600 2009-06-17  Jeffrey Stedfast  <fejj@novell.com>
4602         * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
4603         for single-line entry controls (e.g. PasswordBox), don't allow
4604         multi-line pastes.
4606 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4608         * uielement.cpp: Changing UIElement::Visibility should also
4609           invalidate the parents measure. This allows DRT 2050 to
4610           complete without timing out.
4612 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4614         * uielement.cpp: Changing UIElement.Visibility should result
4615           in the measure being invalidated.
4617 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4619         * font.cpp: When the font cache is destroyed, set it to NULL
4620           so that if a Font is destroyed later it does not try to
4621           re-use the cache.
4622         Null check the the FontFace cache before using it.
4623         If the FT_Face stream is null already, don't try to destroy
4624           it.
4626 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4628         * runtime.cpp: A subset of keypresses are allowed to bubble up
4629           when in fullscreen mode. Fixes drt 175.
4631 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4633         * uri.cpp: Add a null check to prevent a crash.
4635 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4637         * uri.cpp: Flag a lot more characters as url unsafe, and 
4638         fix printf specifiers for url encoded characters to not 
4639         include extra 'ff' sequences for every encoded character.
4641         This fixes parts of MS DRT #641.
4643 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4645         * downloader.cpp|h: Add an Open overload which takes an Uri
4646         instead of a string.
4648         * deepzoomimagetilesource.cpp:
4649         * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
4651 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4653         * playlist.cpp: When we stop, emit the StopEvent.
4655         * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
4657 2009-06-16  Chris Toshok  <toshok@ximian.com>
4659         * xaml.cpp (XamlElementInfoStaticResource,
4660         XamlElementInstanceStaticResource): remove these classes.
4661         (begin_buffering_element_names): remove this unused variable.
4662         (XamlParserInfo::LookupNamedResource): remove.
4663         (DefaultNamespace::FindElement): remove the
4664         XamlElementInfoStaticResource case, and just let the managed
4665         loader create the StaticResource element itself.
4666         (is_static_resource_element): remove.
4667         (XamlElementInstanceNative::SetProperty): defer to the loader if
4668         either the property or the value RequiresManagedSet.
4669         (dependency_object_set_property): defer to the loader if the value
4670         RequiresManagedSet.
4671         (dependency_object_set_attributes): remove all processing of
4672         markup extensions from unmanaged code.
4673         (xaml_markup_parse_argument): remove.
4674         (xaml_markup_extension_type): remove.
4675         (handle_markup_in_managed): remove.
4676         (handle_xaml_markup_extension): remove.
4677         
4678         * panel.h|cpp (Panel::Panel): just set our subtree object here.
4679         (Panel::GetSubtreeObject): remove.
4680         
4681         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
4682         don't notify listeners when creating an auto-created value.
4684         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
4685         only call the property's change callback if we're notifying
4686         listeners.
4688 2009-06-17  Andreia Gaita  <avidigal@novell.com>
4690         * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
4692 2009-06-17  Andreia Gaita  <avidigal@novell.com>
4694         * xaml.cpp: fix typo
4696 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4698         * pipeline.cpp: Remove spurious printfs.
4700 2009-06-16  Andreia Gaita  <avidigal@novell.com>
4702         * deployment.[h|cpp]: Try to dispose types only if there are no
4703         objects pending destruction. If there are, dispose only after
4704         they are all cleared (on DrainUnrefs). This makes sure no properties
4705         are destroyed while objects are still pending.
4706         Added isDead flag, used when doing object tracking to protect against
4707         trying to access type fields when the types have been destroyed
4708         already (when doing ref logging and the final leak report).
4709         Type destruction is slightly delayed when doing object tracking
4710         to allow for the report (otherwise we wouldn't have any type names
4711         on it, and that would be sad)
4713         * type.cpp: fake-clear the properties list by setting it's count to 0
4714         so access by id fails (in case someone wants to access the property
4715         while we're disposing everything).
4716         Delete all the registered types and kill the properties list when
4717         destroying. By this point all properties and objects should be
4718         dead.
4719         * type.h.in: added dispose flag.
4720         * type.h: regenerated
4722 2009-06-16  Andreia Gaita  <avidigal@novell.com>
4724         * uielement.cpp: release all refs on dispose
4726 2009-06-16  Andreia Gaita  <avidigal@novell.com>
4728         * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
4730 2009-06-16  Jeffrey Stedfast  <fejj@novell.com>
4732         * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
4734 2009-06-16  Larry Ewing  <lewing@novell.com>
4736         * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
4737         when properties change in preparation for fixing the autocreated
4738         property notification stuff
4740 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4742         * multiscaleimage.cpp: Add a call to print_stack_trace, looks
4743         like abort () doesn't cause a stack trace.
4745 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4747         * mediaplayer.cpp: Remove circular dependency between MediaPlayer
4748         and MediaElement, clear out the element in Dispose and add a null
4749         check before accessing the element. Fixes crash in MS DRT #238.
4751 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4753         * frameworkelement.cpp: delete UIElement nodes when we're done 
4754         with them
4756 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
4758         * textblock.cpp (SetTextInternal): Get rid of some duplicated
4759         code.
4761 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4763         * uielement.cpp:
4764         * frameworkelement.h:
4765         * frameworkelement.cpp: Give an initial implementation of
4766           FindElementInHostCoordinates (UIElement, Rect) which treats
4767           the rect as a series of points and checks each one until a
4768           hit is found. Allows drt 280 to 
4770 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
4772         * dependencyobject.cpp (Initialize): Initialize is_hydrated to
4773         false.
4775 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4777         * type.[h|cpp]: Dispose method added, to help separate between clearing
4778         all the DPs and actually deleting the types. For now, just clears the
4779         DPs and doesn't touch the type list.
4780         * deployment.cpp: (Dispose) types are disposed here, for now.
4782 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4784         * dependencyproperty.g.cpp: regenerated
4786 2009-06-15  Jackson Harper  <jackson@ximian.com>
4788         * xaml.cpp: Reorder errors.
4790 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4792         * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
4793         inside SetParts, and since we don't store it anywhere else, drop a
4794         ref after the call
4796 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4798         * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
4799         it removes itself from the property list and gets deleted as soon as
4800         possible, otherwise it will not only leak, but blow up once we start
4801         clearing DPs.
4802         Floating status is gone.
4804 2009-06-15  Andreia Gaita  <avidigal@novell.com>
4806         * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
4807         and some extra debugging output for refcounting.
4808         * value.h: regen
4810 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4812         * frameworkelement.cpp: Objects can be hit as long as their
4813           height as greater than zero and the point is in the fill or
4814           stroke.
4816 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4818         * frameworkelement.cpp: Back that change out as it causes some
4819           regressions in the moon-unit tests.
4821 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4823         * frameworkelement.cpp: We can hit an element in both stroke
4824           and fill.
4826 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4828         * playlist.cpp|h: When a media reports that it has been opened
4829         successfully, check if we're the current element, and if not,
4830         don't to anything more until we are the current element. This
4831         fixes an issue with server side playlists where they would
4832         only play the first entry.
4834         * pipeline.cpp|h: Move code out of header.
4836         * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
4837         entry has finished.
4839 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4841         * frameworkelement.cpp: We're hittesting the clip, we use
4842           user-space coordinates, so apply the identity matrix to get
4843           the correct result.
4845 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4847         * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
4849         * cbinding.cpp|h: Regenerated.
4851 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4853         * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
4854         to the enum->str conversion table.
4856 2009-06-15  Alan McGovern  <amcgovern@novell.com>
4858         * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
4859           it's attached to otherwise it can access the element after
4860           the element has been destroyed. Stops 238 crashing.
4862 2009-06-14  Andreia Gaita  <avidigal@novell.com>
4864         * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since 
4865         there are certain refcounted objects that aren't child classes of
4866         DependencyObject.
4867         Wrap null objects but don't try to unref them.
4868         * value.h: regen
4870 2009-06-14  Andreia Gaita  <avidigal@novell.com>
4872         * debug.[h|cpp]: add max frame arg for finer control when getting 
4873         stack traces
4875 2009-06-12  Jackson Harper  <jackson@ximian.com>
4877         * xaml.cpp|h: import_xmlns now validates the namespace so we can
4878         raise an error if it is invalid.
4880 2009-06-12  Jackson Harper  <jackson@ximian.com>
4882         * xaml.cpp: Don't allow dtds.
4884 2009-06-12  Jackson Harper  <jackson@ximian.com>
4886         * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
4888 2009-06-12  Jackson Harper  <jackson@ximian.com>
4890         * xaml.cpp: Use the value attribute parsing for enum types, this
4891         allows them to have x:Key and x:Name attributes.
4893 2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>
4895         * dependencyproperty.g.cpp: Regenerated
4896         * deployment.h: Update ExternalCallersFromCrossDomainProperty
4897         generator-related properties and add unmanaged accessors
4898         * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
4899         dropped after SL2 beta2
4900         * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
4901         * validators.cpp|h: Add new CrossDomainValidator that ensure we
4902         can set only once Deployment::ExternalCallersFromCrossDomainProperty
4904 2009-06-11  Jackson Harper  <jackson@ximian.com>
4906         * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
4907         - Don't try to set managed properties in
4908         dependency_object_add_child.
4909         - Make sure we only create managed property elements for managed
4910         items, even if they are DOBs, otherwise UserControl.Resources gets
4911         a native property info.
4913 2009-06-11  Alan McGovern  <amcgovern@novell.com>
4915         * runtime.h:
4916         * runtime.cpp: The uielements involved in GotFocus/LostFocus
4917           events need to be stored in a queue so that focusing
4918           multiple elements in one tick works correctly.
4920 2009-06-11  Alan McGovern  <amcgovern@novell.com>
4922         * popup.h:
4923         * popup.cpp:
4924         * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
4926 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4928         * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
4930         * security.c: Fix signed/unsigned mismatch warning.
4932         * error.cpp: Fix warning about not initialize in correct order.
4934 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4936         * pipeline.cpp: Fix warning/typo in printf.
4938 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4940         * pipeline.cpp: MarkerStream: if there is no callback, store
4941         the markers in a list instead of just dropping them. Fixes an 
4942         issue with our #150 where we'd lose markers since the stream
4943         had processed them before getting a callback.
4945         * mediaelement.cpp: Check if a marker stream has stored markers
4946         (which would have been added before the calback was set).
4948 2009-06-10  Larry Ewing  <lewing@novell.com>
4950         * frameworkelement.cpp (Arrange): measure containers if they
4951         haven't been at least for now.
4953 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4955         * mediaelement.cpp: When we get a stream as the source, set download
4956         progress immediately to 1.0. Also emit DownloadProgressChanged just
4957         after opening the file (to ensure that we emit DownloadProgressChanged
4958         at least once). This makes MS DRT #420 not time out.
4960 2009-06-10  Larry Ewing  <lewing@novell.com>
4962         * frameworkelement.cpp (UpdateLayout): if we find a unloaded
4963         element while walking the tree emit loaded on it now.
4965 2009-06-10  Larry Ewing  <lewing@novell.com>
4967         * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
4968         place it was supposed to be emitted.
4970 2009-06-10  Jeffrey Stedfast  <fejj@novell.com>
4972         * layout.cpp (Layout): Don't apply font height to the line unless
4973         text has been rendered on that line using that font.
4975 2009-06-10  Jackson Harper  <jackson@ximian.com>
4977         * xaml.cpp|h: Add another param to LookupObject to specify whether
4978         we are looking up a property.  We can't rely on the '.' being in
4979         the name because x:Class names can have namespaces.
4980         - Force USERCONTROL to be looked up in managed so we can
4981         honour x:Class
4982         
4983 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4985         * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
4986         parent entries/playlists too. Also propagate the BufferUnderflow
4987         event.
4989         * pipeline.cpp: Change logic when filling the buffer to request
4990         a frame from the least-buffered stream. This solves an issue with
4991         live streams, we might end up playing audio only when the video
4992         buffer was empty and the audio buffer never full.
4994         * mediaplayer.cpp|h: When determining duration of an entry, check
4995         the entry's parents too for duration. We also need to set
4996         first_live_pts when rendering. This makes MS DRT #129
4997         not time out. Add a BufferUnderflow to inform listeners of any
4998         buffer underflows.
5000         * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
5001         playback and update states accordingly. Remove UpdateProgress,
5002         unused.
5004         * type-generated.cpp: Regenerated.
5006 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5008         * mediaplayer.cpp: use the correct max value for guint64.
5010 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5012         * mediaplayer.cpp|h: Make flags a thread-safe variable, since
5013         we might write to it from an audio thread.
5015 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5017         * playlist.cpp: When checking if an entry has duration, check
5018         the right entry. Fixes a possible crash.
5020 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5022         * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
5023         event too. Allows drt 293 to complete.
5024         
5025 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5027         * uri.cpp: Uris starting with "\\" need to be recognised as
5028           absolute Uris
5030 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5032         * pipeline-asf.cpp: Remove dead code.
5034 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5036         * runtime.cpp: g_warning -> printf to ease breaking on
5037         g_log.
5039 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5041         * dependencyobject.h: Fix IdMask.
5043 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5045         * pipeline.h|cpp: Rework some of the buffer filling algorithm:
5046         we now never have more than one frame pending (to know which
5047         stream a response comes from - if frame parameter to 
5048         ReportGetFrameCompleted is null, we need to mark the corresponding
5049         stream as ended. Also split the 'stream ended' concept in two:
5050         input ended (the demuxer won't give us more data) and output
5051         ended (the decoder won't give us more data). This fixed
5052         MS DRT #19.
5054         * mp3.h|cpp:
5055         * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
5056         need to try again later.
5058         * mediaelement.cpp: CheckMarkers: subtract one to not include
5059         both ends of the range, if the marker matches exactly the end
5060         of a range it will get emitted twice otherwise.
5062         * mediaplayer.cpp:
5063         * audio.cpp: Updated according to IMediaStream changes.
5065 2009-06-09  Jeffrey Stedfast  <fejj@novell.com>
5067         * value.cpp (operator==): Fix a crash if comparing a null
5068         FontSource.
5070         * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
5071         the control is loaded.
5072         (EmitTextChangedAsync): Same.
5074 2009-06-09  Alan McGovern  <amcgovern@novell.com>
5076         * runtime.cpp: The first mouse click will always Focus on the
5077           'default' control. After that we follow the normal focusing
5078           rules and focus on the first eligible control which the
5079           mouse has clicked on.
5081 2009-06-08  Jackson Harper  <jackson@ximian.com>
5083         * xaml.cpp: Add TimeSpan to the primitive types.
5085 2009-06-08  Chris Toshok  <toshok@ximian.com>
5087         * runtime.h (class Surface): add IsZombie.
5089 2009-06-08  Jackson Harper  <jackson@ximian.com>
5091         * error.cpp|h: Add method and fields for line/char positions.
5092         * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
5093         them to get propogated to managed and fixes some of the unit tests.
5095 2009-06-08  Jackson Harper  <jackson@ximian.com>
5097         * xaml.cpp|h: Pass the property xmlns and the element xmlns into
5098         managed when setting properties.
5100 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5102         * runtime.cpp: Un-regress drt 783. We need to raise our cached
5103           focus changed event, then process the focus change itself,
5104           then raise the events for the new change.
5106 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5108         * runtime.h:
5109         * runtime.cpp: If Control.Focus is called from inside a
5110           GotFocus handler, the focus change occurs immediately and
5111           the new GotFocus event is raised as soon as the current
5112           handler is finished.
5114 2009-06-08  Jackson Harper  <jackson@ximian.com>
5116         * xaml.cpp: Bail out after we hit the first attribute parsing
5117         error.
5119 2009-06-08  Jackson Harper  <jackson@ximian.com>
5121         * xaml.cpp: We need to convert path geometry strings from managed.
5123 2009-06-08  Jackson Harper  <jackson@ximian.com>
5125         * xaml.cpp: Little more cleanup now that we don't have to reparse
5126         attributes for x:Class.
5128 2009-06-05  Chris Toshok  <toshok@ximian.com>
5130         * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
5131         element when we aren't hydrating is illegal.  this has the
5132         pleasant side effect of removing the need to reparse attributes,
5133         so axe that code as well.
5135 2009-06-05  Chris Toshok  <toshok@ximian.com>
5137         * textbox.cpp (TextBoxView::Blink): don't set deployments using
5138         the pattern Deployment::SetCurrent (GetDeployment()), as
5139         GetDeployment() issues a warning if the object's deployment
5140         doesn't match the current one.  use
5141         DependencyObject::SetCurrentDeployment(true) instead.
5143 2009-06-04  Chris Toshok  <toshok@ximian.com>
5145         * runtime.cpp (Surface::EmitError): stop unreffing the args after
5146         the Emit call.  Emit unrefs them for us.
5148 2009-06-05  Jeffrey Stedfast  <fejj@novell.com>
5150         * layout.cpp (layout_word_wrap): Stop processing when we come to
5151         open-punctuation if it isn't the first char in the word as this is
5152         a good break opportunity. Fixes the last remaining issue in
5153         OMTextInline DRT.
5155 2009-06-04  Jackson Harper  <jackson@ximian.com>
5157         * xaml.cpp: Track the owner type of properties so we know whether
5158         or not to go into managed when we are dealing with an attached
5159         property.
5161 2009-06-04  Jeffrey Stedfast  <fejj@novell.com>
5163         * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
5164         font face that fontconfig can find for the requested language.
5165         (FontFace::LoadFontFace): Get the lang string and pass it along.
5166         (FontFace::Init): initialize a default font hash table for
5167         non-latin languages.
5168         (FontFace::Shutdown): destroy aformentioned table.
5169         (FontFace::LoadDefaultFaceForLang): New helper method to load the
5170         default font face for a given language code.
5171         (FontFace::GetDefault): If the language in the Fc pattern is
5172         'special', use LoadDefaultFaceForLang().
5173         (TextFontDescription::.ctor): Initialize language.
5174         (TextFontDescription::.dtor): Free language.
5175         (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
5176         appropriate.
5177         (TextFontDescription::UnsetFields): Unset the language field.
5178         (TextFontDescription::Merge): Merge the language field.
5179         (TextFontDescription::GetLanguage): New method to get the language.
5180         (TextFontDescription::SetLanguage): New method to set the language.
5181         (TextFontDescription::ToString): Modified a bit.
5183         * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
5184         as well.
5185         (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
5186         TextFontDescription.
5188 2009-06-04  Jackson Harper  <jackson@ximian.com>
5190         * xaml.cpp: The managed property could be either the property or
5191         the parent.
5193 2009-06-04  Larry Ewing  <lewing@novell.com>
5195         * canvas.cpp (OnCollectionItemChanged): call
5196         InvalidateSubtreePaint on items when their position in the canvas
5197         changes to make sure we clear the old region.  Fixes a couple of
5198         the inkpresenter tests.
5200 2009-06-04  Larry Ewing  <lewing@novell.com>
5202         * shape.cpp (ComputeStretchBounds): reject negative width/height
5203         settings.  Fixes test-shape-negative.xaml
5205 2009-06-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5207         * multiscaleimage.cpp: Add a debugging abort to try to find the
5208         issue with #2014.
5210 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5212         * control.h:
5213         * type-generated.cpp: Actually add IsEnabledChangedEvent
5215 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5217         * control.h: Add IsEnabledChangedEvent to native
5218         
5219         * type-generated.cpp: regen
5221 2009-06-04  Stephane Delcroix  <sdelcroix@novell.com>
5223         * multiscaleimage.cpp: qtree_insert () takes no value. returns
5224         the newly created QTreeNode. qtree_insert_at () renamed to 
5225         qtree_insert_with_value ().
5227 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5229         * cbinding.cpp|h:
5230         * control.cpp|h:
5231         * runtime.cpp:
5232         * uielement.cpp|h: Calling Control.Focus () results in a recursive
5233         check to find a focusable element. A mouse click does a non-recursive
5234         check on the elements which were 'hit'. Fixes two DRTs.
5236 2009-06-03  Jackson Harper  <jackson@ximian.com>
5238         * xaml.cpp: Update some error messages.
5239         - Pass the current namespace in when creating property infos in
5240         managed.
5241         * frameworkelement.h: ActualWidth and ActualHeight are readonly
5242         properties.
5243         * dependencyproperty.g.cpp: regen
5245 2009-06-03  Jeffrey Stedfast  <fejj@novell.com>
5247         * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
5248         bit more than FT_Get_Char_index().
5250         * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
5251         trailing lwsp towards line width, even if underlined.
5252         (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
5253         we are the last glyph cluster on a line.
5254         (GenerateGlyphCluster): Keep track of underline width (calculated
5255         using width up to/including last non-lwsp char).
5256         (word_type_changed): Consider numerics as part of the containing
5257         alphabetic word.
5259 2009-06-03  Jackson Harper  <jackson@ximian.com>
5261         * xaml.cpp|h: We need to look for managed properties on native
5262         types.
5263         - Set the element info for properties to the type of the property.
5264         - Add the ability for properties to force their set to be in
5265         managed even if they come from a native type.
5266         
5267 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5269         * uielement.cpp: Calculate the Transform between two UIElements
5270         correctly.
5272 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5274         * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
5275         we need to populate M11/M12/M21 etc with the correct values.
5277 2009-06-02  Chris Toshok  <toshok@ximian.com>
5279         * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
5280         Type::INVALID as its Kind.  This is another facet to the "we need
5281         to register enum types" work that will need to be done.  The
5282         GetKind() method needs to eventually return a property Kind, but
5283         until then we'll just check for Type::INVALID.
5285 2009-06-02  Sebastien Pouliot  <sebastien@ximian.com>
5287         * security.c: Use the PREVIEW_VERSION for the environment variable
5288         used to turn off security (coreclr and verifier)
5290 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
5292         * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
5293         the run->SetAutogenerated() logic a while back which is causing
5294         some tests to fail.
5296         * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
5297         longer supports this wrapping model.
5299 2009-06-02  Larry Ewing  <lewing@novell.com>
5301         * uielement.cpp (DoArrange): don't poke at unset values.  Fixes
5302         the crash in #421.
5304 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
5306         * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
5307         (x && y || z)'.
5309 2009-06-02  Alan McGovern  <amcgovern@novell.com>
5311         * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
5312         reverse logical order.
5314         * control.h
5315         * uielement.cpp|h: Make Focus a virtual method on UIElement.
5316         
5317         * src/runtime.cpp: When the surface receives a mouse down we need to
5318         focus the first control added to the root element if the user has not
5319         clicked on a control or focused one using Control.Focus (). Then any
5320         pending Focus events are raised before the mouse event is processed.
5321         
5322         * src/window-gtk.cpp: Always pass a right mouse button event into the
5323         Surface so that we can fire any pending Focus events to match the
5324         behaviour of Silverlight.
5326 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5328         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5329         since g_ascii_strtoull isn't available in sled.
5331 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5333         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5334         since g_ascii_strtoull isn't available in sled.
5336 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5338         * type.h:
5339         * value.h:
5340         * cbinding.h:
5341         * type-generated.cpp: Regenerated.
5343         * downloader.h: Removed streaming_features, not used here anymore.
5345         * utils.cpp
5346         * enums.h:
5347         * playlist.cpp|h:
5348         * pipeline.cpp|h:
5349         * pipeline-asf.cpp|h:
5350         * mms-downloader.cpp|h: Implement support for server side playlists.
5352 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5354         * pipeline.cpp: Check queued_requests for null after locking too.
5356 2009-06-02  Alan McGovern  <amcgovern@novell.com>
5358         * runtime.cpp|h: Focus changed events are emitted synchronously right
5359         before a MouseLeftButtonDown or MouseRightButtonDown event.
5361 2009-06-01  Chris Toshok  <toshok@ximian.com>
5363         * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
5364         here too so xaml.cpp knows if the type is creatable.
5366         * type.h, cbinding.cpp|h: regen
5368 2009-06-01  Chris Toshok  <toshok@ximian.com>
5370         * xaml.cpp (dependency_object_add_child): only do this check for
5371         non-Type::MANAGED children.
5373 2009-06-01  Chris Toshok  <toshok@ximian.com>
5375         * grid.cpp|h: the row/columndefinitioncollections do not permit
5376         definitions to be inserted more than once.
5377         
5378         * type.h.in (class Type): add IsCtorVisible method and ctor arg.
5380         * type.h, type-generated.cpp: regen.
5382         * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
5383         the instance if the ctor is visible.
5384         (dependency_object_add_child): if the ctor for the child isn't
5385         visible, error out even if it's the same type/kind as the
5386         property.
5388 2009-06-01  Jeffrey Stedfast  <fejj@novell.com>
5390         * deployment.cpp (Dispose): Properly chain up to
5391         DependencyObject::Dispose().
5393         * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
5395         * brush.cpp (ImageBrush::Dispose): Chain up to
5396         TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
5397         crash in GlyphsManagedDRT
5399         * dependencyobject.cpp (WildcardListener): Uh, this needs to
5400         subclass Listener or we can't go around casting it to a Listener.
5401         (CallbackListener): Same.
5403 2009-06-01  Chris Toshok  <toshok@ximian.com>
5405         * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
5406         end_idx == 0) return early.
5408         * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
5409         the toplevel object as hydrated if parser_info->hydrating == true.
5410         this fixes some managed parsing stuff since XamlReader.Load was
5411         using the same codepath (just passing NULL into
5412         XamlReader::HydrateFromString.)
5414 2009-05-29  Jeffrey Stedfast  <fejj@novell.com>
5416         * application.cpp (GetResourceAsPath): Fixed extra
5417         XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
5418         for us.
5420 2009-05-29  Alan McGovern  <amcgovern@novell.com>
5422         * control.cpp: When Control.Focus () is called, if the control itself
5423         is not focusable, we need to check it's visual children. The call will
5424         complete successfully if any of the children are focusable, and that
5425         child will become the focused element.
5427 2009-05-29  Alan McGovern  <amcgovern@novell.com>
5429         * control.cpp|h: If a control becomes disabled, it loses mouse capture
5430         and cannot regain it later. If CaptureMouse is called on a disabled
5431         control, the mouse is successfully captured and then immediately
5432         released which fires the LostMouseCapture event.
5434         * runtime.cpp|h: If control A captures the mouse, control B can't steal
5435         the capture or release the capture. Add an explicit ReleaseMouseCapture
5436         function to accomodate this behaviour.
5437         
5438         * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
5439         function which signifies whether or not the current UIElement can keep the
5440         mouse captured.
5442 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
5444         * textbox.h (class PasswordBox): Marked PasswordProperty as
5445         AlwaysChange so that setting this property (even to the same
5446         value) will force a PasswordChanged event to be emitted.
5447         (class TextBox): Marked SelectedTextProperty as AlwaysChange to
5448         fix moon-unit test: SetIdenticalSelectedText()
5450         * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
5451         printfs for utf8->ucs4 conversion errors.
5453 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
5455         * textbox.h (class TextBox): Added the AlwaysChange metadata to
5456         SelectionStart/Length properties.
5458         * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
5459         to asynchronously emit SelectionChanged events.
5460         (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
5461         (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
5462         (TextBox::EmitSelectionChanged): Simply emit the event now, don't
5463         bother updating state which is now handled elsewhere.
5464         (TextBox::EmitTextChanged): Same.
5465         (TextBox::OnPropertyChanged): When clamping the SelectionLength
5466         value due to a SelectionState property change, block events - we
5467         should only emit a single SelectionChanged event. Also modified to
5468         avoid emitting a TextBoxModelChanged event if the values didn't
5469         actually change. Same for SelectionLength changes.
5471 2009-05-28  Chris Toshok  <toshok@ximian.com>
5473         * value.h.in, value.cpp: add a copy assignment operator.
5475         * value.h: regen.
5477 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5479         * control.cpp: When changing Control.IsEnabled, create the
5480         new value properly.
5482 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5484         * animation.cpp: Fix a double free caused by the line
5485         converted = Value (*value);
5487 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5489         * pipeline-ui.cpp: Protect against a null surface.
5491         * mediaelement.cpp: Get the surface from the deployment (which should
5492           always have a surface) instead of the media element's surface
5493           (which is not guaranteed to be set always).
5495 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5497         * control.cpp|h: Control.IsEnabled propagates to its children
5498         when the control is Loaded.
5500 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5502         * src.mdp: Updated.
5504 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5506         * mms-downloader.cpp: Custom headers must be requested before
5507           opening the downloader.
5509 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5511         * multiscaleimage.h|cpp: replace the hash cache on uri by
5512         a set of qtree, one per subimage. This should speed stuffs
5513         a lot, as uri crating/parsing/hashing was taking up to 20%
5514         of msi time.
5516 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5518         * multiscalesubimage.h: GetId (). Get subimage id, used as
5519         cache index in msi.
5521 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5523         * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
5524         qtree_insert, etc. The Q(uad)Tree data structure is a tree with
5525         4 child nodes, matching the tree-ish pyramid of MSI tiles.
5527 2009-05-28  Andreia Gaita  <avidigal@novel.com>
5529         * timeline.cpp: Stop the clock when you call Stop.
5531 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5533         * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
5534         argument which defaults to true. If not set, we avoid calling
5535         SyncText() even if emit has the TEXT_CHANGED bit set.
5536         (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
5537         false if the value was just set to null.
5539 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5541         * control.h:
5542         * control.cpp: Implement correct propagation of
5543           Control.IsEnabled. Children of disabled controls are
5544           disabled. When their parent is re-enabled, they go back to
5545           their previous state.
5547 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5549         Fixes to make sure that an TextChanged and SelectionChanged events
5550         are emitted after each and every change to the Text/Selection
5551         properties occurs.
5553         * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
5554         batch operation. Prevents SyncAndEmit() from doing anything until
5555         all nested batch operations are completed.
5556         (TextBoxBase::BatchPop): Call at the end of each
5557         batch operation.
5558         (TextBoxBase::*): Instead of using inkeypress, use the more
5559         generic BatchPush()/Pop().
5560         (TextBox::OnPropertyChanged): Call SyncAndEmit() after
5561         Text/Selection changes.
5562         (PasswordBox::OnPropertyChanged): Same.
5564 2009-05-27  Geoff Norton  <gnorton@novell.com>
5566         * runtime.cpp|h: Support the splash progress/completed events.
5567         * cbinding.h:
5568         * type-generated.h: Regen
5570 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5572         * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
5573         if the TextBox is loaded and unset the emit state.
5574         (TextBox::EmitTextChanged): Same.
5576 2009-05-27  Geoff Norton  <gnorton@novell.com>
5578         * deployment.cpp|h: Allow reinitializing the appdomain if our
5579         Source has changed, or we're switching from the splash screen to
5580         the XAP.
5582 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5584         * font.cpp:
5585         * textblock.cpp: Fix warnings.
5587 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5589         * debug.h:
5590         * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
5592 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5594         * textbox.cpp:
5595         * textblock.cpp:
5596         * pipeline.cpp:
5597         * mms-downloader.h:
5598         * mms-downloader.cpp:
5599         * internal-downloader.h:
5600         * file-downloader.h:
5601         * file-downloader.cpp:
5602         * pipeline-asf.cpp: Updated according to downloader API changes.
5604         * downloader.h:
5605         * downloader.cpp: Add support for retrieving response headers
5606           and disable caching. Initialize the downloader interface methods
5607           to their default/dummy methods statically.
5609         * value.h:
5610         * type.h:
5611         * type-generated.cpp:
5612         * cbinding.h:
5613         * cbinding.cpp: Regenerated.
5615 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5617         * resources.cpp: Wait til AddedToCollection returns success
5618         before adding the item to the hashtable.
5620 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5622         * resources.cpp: Propagate the error (if there is one) from
5623         Collection::AddWithError. If there is an error, clear the item
5624         from the hashtable before returning.
5626 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5628         * control.h:
5629         * control.cpp:
5630         * dependencyproperty.g.cpp: Control.Enabled needs to be
5631           created in native code as it's required for hittesting. A
5632           disabled control and its visual children do not receive
5633           mouse events and are not visible to
5634           VisualTreeHelper.FindElementInHostCoordinates.
5636 2009-05-26  Jeffrey Stedfast  <fejj@novell.com>
5638         * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
5639         on the StyleSimulations value.
5640         (Layout): No longer need to pass along StyleSimulations to
5641         GetGlyphInfo().
5643         * font.cpp (style_weights): Added more style weight name mappings.
5644         (style_slants): Same.
5645         (FontFace::IsItalic): New method to query the font face to see if
5646         it is italic or not.
5647         (FontFace::IsBold): Same idea.
5648         (TextFont::TextFont): Now takes a TextFontDescription so that we
5649         can initialize the new 'simulate' member variable which tells us
5650         if we have to simulate bold or italics due to not finding a
5651         suitable font.
5652         (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
5653         argument. Instead, it now uses the 'simulate' member variable to
5654         pass to FontFace::LoadGlyph().
5655         (TextFontDescription::CreatePattern): Always add Weight and Slant
5656         to the pattern now, even if it is the default font
5657         family. Silverlight 2.0 no longer restricts bold/italics to
5658         non-PUI.
5660 2009-05-26  Chris Toshok  <toshok@ximian.com>
5662         * xaml.cpp (XamlElementInstance::SetName): if it's a
5663         dependencyobject, add it to the container here.
5664         (XamlElementInstance::SetKey): same.
5665         (end_element_handler): only do the AddToParentContainer call here
5666         if the element is not a dependencyobject.
5668 2009-05-25  Jeffrey Stedfast  <fejj@novell.com>
5670         * glyphs.cpp: Changed 'style' to be unsigned.
5672 2009-05-25  Andreia Gaita  <avidigal@novel.com>
5674         * timeline.h|cpp (DispatcherTimer): reset the clock properly when
5675         restarting a dispatcher timer. also, rename Run to Restart.
5676         note: if a timer is not stopped or started during it's tick event,
5677         the time spent on the tick is counted for the next tick on the
5678         Restart method.
5680 2009-05-25  Chris Toshok  <toshok@ximian.com>
5682         * runtime.h|cpp (Surface::EmitError): add an overload so
5683         Application.cs can cause an error to be emitted on the surface.
5685         * cbinding.h|cpp: regen.
5687 2009-05-25  Andreia Gaita  <avidigal@novel.com>
5689         * border.cpp (OnPropertyChanged): Invalidate when background is
5690         updated
5692 2009-05-25  Chris Toshok  <toshok@ximian.com>
5694         * uielement.cpp (UIElement::GetTransformToUIElementWithError):
5695         this method fails incorrectly when you call it on the toplevel
5696         element of a surface.
5698 2009-05-25  Chris Toshok  <toshok@ximian.com>
5700         * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
5701         for separate resource dictionary name registration.  this isn't
5702         exactly right, since the name *should* be unregistered.
5704 2009-05-25  Chris Toshok  <toshok@ximian.com>
5706         * validators.cpp (Validators::TemplateValidator): this is causing
5707         DRT 438 to throw an exception and subsequently timeout.  its
5708         removal doesn't seem to break anything else, so ifdef it out with
5709         a comment.
5711 2009-05-25  Alan McGovern  <amcgovern@novell.com>
5713         * cbinding.cpp
5714         * cbinding.h: Regen
5716         * dependencyobject.cpp
5717         * dependencyproperty.cpp
5718         * dependencyproperty.g.cpp
5719         * dependencyproperty.h
5720         * uielement.h: There are two types of DependencyProperty. 
5721         Core properties and custom properties. Custom properties
5722         do not set the parent on a DO. This makes the old 
5723         'SetsParent' property redundant, so remove it.
5725 2009-05-22  Chris Toshok  <toshok@ximian.com>
5727         * xaml.cpp (XamlElementInstance::SetName): don't call
5728         AddToContainer here.  in case the element is a value type, and
5729         we're adding it to a RD on a managed type (like StackPanel), the
5730         managed xaml loader will marshal the value type to C# and we'll
5731         lose any further updates to the value typed object by the parser.
5732         That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
5733         ManagedXamlLoader will see a color with #00000000 as its value, as
5734         the content hasn't been parsed by the time we create the managed
5735         object.
5736         (XamlElementInstance::SetKey): same.
5737         (end_element_handler): call AddToParentContainer here instead.
5739 2009-05-22  Chris Toshok  <toshok@ximian.com>
5741         * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
5742         were missing the case where HydratedFromXaml elements weren't
5743         updating their parent namescope on name changes, only their
5744         private ones.  Adding the parent namescope fix fixes FaceMonkey's
5745         button grid.
5747 2009-05-22  Jackson Harper  <jackson@ximian.com>
5749         * xaml.h|cpp: New callback for registering elements in
5750         containers, we need to do this earlier on in the parse than
5751         setproperty because other elements could reference these elements
5752         before they've been set.
5753         
5754 2009-05-21  Alan McGovern  <amcgovern@novell.com>
5756         * src/cbinding.cpp
5757         * src/cbinding.h: regen
5758         
5759         * dependencyproperty.c:
5760         * dependencyproperty.h: We can either register a 'core' property or a
5761         'custom' property from managed code. Core properties are part of the
5762         framework itself, custom properties are user-created. Custom properties
5763         don't set the parent or register names in namescopes.
5764         
5765 2009-05-21  Stephane Delcroix  <sdelcroix@novell.com>
5767         * deepzoomimagetilesource.h:
5768         * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
5769         without listening to the event, if a tilesource is ready to be
5770         consumed.
5771         * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
5772         size from a subimage source.
5774 2009-05-21  Larry Ewing  <lewing@novell.com>
5776         * multiscaleimage.cpp (RenderCollection): reoorder the max level
5777         test so that we only call get_tile_func once in that case.  Speeds
5778         up hardrock and the moment.
5780 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5782         * debug.h: Added LOG_ASF.
5784 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5786         * runtime.h: Don't use 64 bit constants for the runtime debug enum.
5788 2009-05-21  Alan McGovern  <amcgovern@novell.com>
5790         * src/cbinding.cpp
5791         * src/cbinding.h
5792         * src/dependencyproperty.g.cpp: regen
5793         
5794         * dependencyobject.cpp:
5795         * dependencyproperty.cpp:
5796         * dependencyproperty.h:
5797         * uielement.h: Add the ability to set a DP as non-parenting and
5798         apply it to FrameworkElement::TagProperty
5800 2009-05-20  Larry Ewing  <lewing@novell.com>
5802         * multiscaleimage.cpp (RenderCollection): fix bug introduced in
5803         earlier tile size fix.  Fixes covertocover.
5805 2009-05-20  Larry Ewing  <lewing@novell.com>
5807         * brush.cpp:
5808         * bitmapsource.cpp: when creating a cached surface use the group
5809         target type not the overall target.
5811 2009-05-20  Larry Ewing  <lewing@novell.com>
5813         * frameworkelement.cpp (ComputeActualSize): avoid making a
5814         IsLayoutContainer call here.
5816 2009-05-20  Stephane Delcroix  <sdelcroix@novell.com>
5818         * multiscaleimage.cpp: support different tile sizes for the collection
5819         and the individual images. Fixes "the moment" 2D.
5821 2009-05-20  Larry Ewing  <lewing@novell.com>
5823         * xaml.cpp: update the parser error numbers and strings to match 2.0.
5825 2009-05-20  Larry Ewing  <lewing@novell.com>
5827         * multiscaleimage.cpp: small change to avoid getting the property
5828         so often.
5830 2009-05-20  Alan McGovern  <amcgovern@novell.com>
5832         * type.h:
5833         * value.h:
5834         * value.h.in:
5835         * type-generated.cpp: Register 'float' as a known type
5837 2009-05-20  Chris Toshok  <toshok@ximian.com>
5839         * type.h.in: a few changes.  We no longer pass the kind name to
5840         the ctor, since nothing ever uses it, and the type name is enough.
5841         add both an interface array and array count to the Type ctor, as
5842         well as a is_interface bool.  Lastly, add IsAssignableFrom
5843         overloads.
5845         * dependencyobject.cpp (DependencyObject::IsValueValid): switch
5846         from using a direct comparison on Kinds to using
5847         Type::IsAssignableFrom.  this makes interfaces work.
5849         * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
5851         * animation.cpp (AnimationClock::HookupStorage): instead of
5852         comparing kinds, use Type::IsAssignableFrom to see if we can
5853         animate the property using a particular timeline type.
5854         (DoubleAnimation::GetCurrentValue,
5855          DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
5856          ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
5857          PointAnimation::GetTargetValue): add code to deal with the start
5858          value not being the same type as the animation uses (this can
5859          happen if we're animating an interface property like
5860          IComparable.)  The start values in that case are 0.0, Point(0.0),
5861          and Color(0,0,0,0), respectively.
5863 2009-05-19  Larry Ewing  <lewing@novell.com>
5865         * collection.cpp: avoid some GetDeployment calls in looping cases.
5867 2009-05-19  Larry Ewing  <lewing@novell.com>
5869         * frameworkelement.cpp (UpdateLayout): clear the needs flags when
5870         we restart in case they we're properly cleared before.
5872 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5874         * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
5875         function pointers to call whenever the corresponding virtual method
5876         is called.
5878         * enums.h: Move enums from the pipeline here (makes it easier to 
5879         create c bindings for methods taking enums)
5881         * mp3.cpp:
5882         * pipeline-asf.cpp:
5883         * pipeline-ffmpeg.cpp: Update accccording to enum changes.
5885         * codec-version.h.in: Bump ABI version.
5887         * value.h:
5888         * cbinding.cpp|h:
5889         * type-generated.cpp: Regenerated.
5891 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5893         * audio.cpp:
5894         * mediaplayer.cpp:
5895         * mp3.cpp:
5896         * pipeline-asf.cpp:
5897         * pipeline-ffmpeg.cpp:
5898         * pipeline.cpp|h: Add accessors for fields in VideoStream,
5899         AudioStream and MediaFrame.
5900         * cbinding.cpp|h: Regenerated.
5902 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5904         * cbinding.cpp|h: Regenerated.
5906 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5908         * security.h: Include <mono/metadata/assembly.h>.
5909         Fixes a warning (and the build with MD).
5911 2009-05-19  Alan McGovern  <amcgovern@novell.com>
5913         * animation.cpp: Add some optimisations to ObjectKeyFrames.
5914           Don't call back into managed when the value is null or when
5915           the the value is already of the exact right kind. This will
5916           need to be reviewed once unmanaged code understands
5917           interfaces so we can fastpath interfaces too.
5919 2009-05-18  Larry Ewing  <lewing@novell.com>
5921         * dirty.cpp:
5922         * uielement.cpp:
5923         * frameworkelement.cpp: for the time being use the needs* flags on
5924         surface to skip the UpdateLayout logic when the tree is clean.
5925         Optimize a couple of the property reads inside the deep walk.
5926         
5927         * provider.cpp (GetPropertyValue): rework some more of the checks
5928         to remove some other remaining unneeded checks.
5930 2009-05-18  Chris Toshok  <toshok@ximian.com>
5932         * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
5933         regen.
5935 2009-05-18  Larry Ewing  <lewing@novell.com>
5937         * bitmapsource.cpp (GetSurface): use the content type of the image
5938         when creating the native surface.
5940 2009-05-18  Larry Ewing  <lewing@novell.com>
5942         * provider.cpp (GetPropertyValue): reorder the framework element
5943         property lookup to avoid an extra type inquiry in a potentially
5944         common case.
5946 2009-05-18  Larry Ewing  <lewing@novell.com>
5948         * xaml.cpp (dependency_object_set_attributes): move the types
5949         lookup outside the loop.
5951 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5953         * cbinding.h|cpp: 
5954         * type.h: Regenerated.
5955         
5956         * application.h:
5957         * dependencyobject.h:
5958         * dependencyproperty.h:
5959         * downloader.h:
5960         * easing.h:
5961         * frameworkelement.h:
5962         * pipeline.h:
5963         * tilesource.h:
5964         * type.h: Sprinkle CBindingPrequisite around. Also use ints
5965         instead of Type::Kind values in function pointers.
5966         
5967 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5969         * window-gtk.h: Add a GetNativeWidget which returns a void 
5970         pointer instead of GtkWidget* so that we don't need to include
5971         gtk for the c bindings.
5973 2009-05-18  Alan McGovern  <amcgovern@novell.com>
5975         * contentcontrol.cpp: For contentcontrols, the applied
5976           template is only cleared if the old or new content is a
5977           UIElement (frameworkelement?). The fallback 'template' of a
5978           Grid + TextBlock is also reused every time.
5980 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5982         * utils.h: Use c++-style structs to please the generator.
5984 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5986         * window-gtk.h: Add a GetNativeWidget which returns a void
5987         pointer instead of GtkWidget* so that we don't need to include
5988         gtk for the c bindings.
5989         * cbinding.h|cpp: Updated.
5991 2009-05-16  Chris Toshok  <toshok@ximian.com>
5993         * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
5994         be g_strstrip'ed, but we can't do it until right before we use it,
5995         so we do it here.
5997 2009-05-16  Chris Toshok  <toshok@ximian.com>
5999         * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
6000         XamlElementInfo::IsCDataVerbatim): new methods to set and get a
6001         flag telling the cdata_handler to not collapse/remove
6002         whitespace. <clr:String> requires this.
6003         (PrimitiveNamespace::FindElement): for the "String" case, call
6004         XamlElementInfo::SetIsCDataVerbatim(true).
6005         (char_data_handler): if the current element IsCDataVerbatim, just
6006         append the input string and return.
6008 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6010         * security.c: Bump the security env var to _04
6012 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6014         * cbinding.h:
6015         * animation.h:
6016         * cbinding.cpp:
6017         * animation.cpp:
6018         * application.h:
6019         * application.cpp:
6020         * dependencyproperty.g.cpp: Add type converting to
6021           ObjectKeyFrame. The conversion is done during the Resolve
6022           phase. If the type conversion can't be completed an
6023           exception is thrown.
6025 2009-05-15  Chris Toshok  <toshok@ximian.com>
6027         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
6028         in the hydrated case we still need to register our name.
6029         (DependencyObject::ProviderValueChanged): don't swallow the error
6030         when we SetParent on the new_as_dep.
6031         (DependencyObject::SetParent): if we're adding a Hydrated
6032         element (i.e. one that was loaded using LoadComponent), we need to
6033         register its name into the parent namescope.  Also, move the
6034         quickest check to the top so we don't do the family check on every
6035         SetParent call if the before/after parent are the same.  Lastly,
6036         we only register names if the current parent is NULL.  That is, if
6037         a named brush is a property on an element already, and its name is
6038         registered, we don't register it in the new namescope when it's
6039         set as a property on a second element.  Odd but it matches SL
6040         behavior.
6041         (DependencyObject::FindName): no longer walk up the namescope
6042         hierarchy, and don't look up things in the toplevel's namescope
6043         either.
6045         * dependencyobject.h (class DependencyObject): add
6046         SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
6048         * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
6049         object as being hydrated.
6050         (everywhere): we don't need GetParentNamescope for anything.  we
6051         always use the toplevel namescope of the subtree the parser is
6052         currently parsing.
6054         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6055         don't pass a null error to ProviderValueChanged.
6056         
6057 2009-05-15  Larry Ewing  <lewing@novell.com>
6059         * frameworkelement.cpp (UpdateLayout): just warn if the element is
6060         loaded don't skip it for now since it causes regressions in the
6061         control tests.
6063 2009-05-15  Chris Toshok  <toshok@ximian.com>
6065         * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
6066         change that gets automatic storyboards with zero length children
6067         to have a zero length themselves.
6069 2009-05-15  Larry Ewing  <lewing@novell.com>
6071         * grid.cpp (OnCollectionItemChanged): invalidate on column
6072         definition changes.
6074 2009-05-15  Larry Ewing  <lewing@novell.com>
6076         * debug.h (LOG_LAYOUT): use printf.
6078         * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
6080         * frameworkelement.cpp: reorder the updated_list and clean up some
6081         debug spew.
6083         * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
6084         loaded here since it will break delayed queuing of loaded events
6085         when the tree is modified inside the event handler.  Improves
6087 2009-05-15  Jackson Harper  <jackson@ximian.com>
6089         * xaml.cpp: Use the property element's type instead of parsing out
6090         the name, this fixes setting propertys of imported managed types.
6092 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6094         * animation.h:
6095         * dependencyproperty.g.cpp: The Keyframes property of
6096           ObjectAnimationUsingKeyframes needs to be autogenerated.
6098 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6100         * type-generated.cpp:
6101         * frameworkelement.h: Properly handle exceptions when updating
6102           the source in a 2 way binding. Raise the
6103           BindingValidationError event in the right place.
6105 2009-05-14  Jackson Harper  <jackson@ximian.com>
6107         * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
6109 2009-05-14  Larry Ewing  <lewing@novell.com>
6111         * xaml.cpp (lookup_named_item): make this nonrecursive.
6113 2009-05-14  Jeffrey Stedfast  <fejj@novell.com>
6115         * frameworkelement.cpp (OnPropertyChanged): Do a
6116         FullInvalidate(true) when the Horizontal or Vertical Alignment
6117         properties change.
6119 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6121         * dependencyobject.cpp: unref: only try to delete
6122         us if we had a 0 refcount after decrementing refcount.
6123         Also use an atomic fetch when checking if the object
6124         was resurrected.
6126 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6128         * dependencyobject.cpp: when printing stack traces
6129         first get all the lines to print, then print them.
6130         This way it's a lot less probable to get other lines
6131         in between when printing stacktraces from multiple threads.
6133 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6135         * dependencyobject.cpp: Print typename for object creation
6136         too, now that we don't have to call a virtual method to 
6137         get the type.
6139 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6141         * timesource.h: G_PRIORITY_IDLE doesn't exist, use
6142         G_PRIORITY_HIGH_IDLE.
6144 2009-05-13  Chris Toshok  <toshok@ximian.com>
6146         * xaml.cpp (class XamlContextInternal): allow for a parent context
6147         so that we can track context's (and resources) across multiple
6148         template instantiations.
6149         (create_resource_list): just stuff the FrameworkElement on the
6150         list and leave the GetValue(UIElement::Resources) for when we look
6151         up the actual resource.
6152         (end_element_handler): when creating a new XamlContext pass in our
6153         current XamlContext.
6154         (XamlContextInternal::LookupNamedItem): handle both changes (FWE
6155         in our resources list, and parent context chaining.)
6157 2009-05-13  Jackson Harper  <jackson@ximian.com>
6159         * xaml.cpp: We need to dup the top_element since this can be
6160         deleted elsewhere.
6162 2009-05-13  Chris Toshok  <toshok@ximian.com>
6164         * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
6165         clocks (those with Duration=00:00:00) we weren't emitting
6166         completed (or switching to Fill/Stop).
6168 2009-05-13  Jackson Harper  <jackson@ximian.com>
6170         * xaml.h|cpp: use a Value* for top level objects, this lets us get
6171         rid of the gchandle hack in the managed xaml loader for non DOB
6172         top level objects.
6174 2009-05-13  Larry Ewing  <lewing@novell.com>
6176         * canvas.cpp: make IsLayoutContainer nonrecursive using
6177         DeepTreeWalker.
6178         
6179         * frameworkelement.cpp:
6180         * uielement.cpp, uielement.h:
6181         * panel.h: 
6182         * shape.cpp: start reworking the container layout logic to avoid
6183         expensive calls.
6185         * collection.cpp: don't ref elements inside DeepTreeWalker use
6186         UnsafeUIElementNode instead.
6187         
6188         * dirty.cpp (UpdateLayout): remove some dead code.
6190 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6192         * value.cpp: Ensure we don't explode when checking null uris
6194 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6196         * validators.cpp: If StyleProperty has a value and it is
6197           'null', that is allowed to be replaced.
6199 2009-05-12  Chris Toshok  <toshok@ximian.com>
6201         * timeline.cpp (DispatcherTimer::Start): when resetting the clock
6202         we need to make sure to reset the root parent time, or else the
6203         timer will tick immediately when started (if it's previously hit
6204         its tick).
6206 2009-05-12  Larry Ewing  <lewing@novell.com>
6208         * collection.cpp, collection.h: Add a SkipBranch method to avoid
6209         computing walking into the tree when we can.
6211         * frameworkelement.cpp (UpdateLayout): Use the new skip branch
6212         logic in deeptreewalker to avoid invisible elements.
6214 2009-05-12  Larry Ewing  <lewing@novell.com>
6216         * frameworkelement.cpp (UpdateLayout): revert the visibility change
6217         for now.
6219 2009-05-12  Larry Ewing  <lewing@novell.com>
6221         * frameworkelement.cpp (ComputeBounds): make sure the bounds are
6222         the size of the full element, and skip elements based on the
6223         actual visibility setting not the computed one.
6225 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
6227         * textbox.cpp (InvalidateCursor): New helper method which applies
6228         the absolute transform to the cursor before invalidating the
6229         cursor's region.
6230         (ShowCursor): Use InvalidateCursor().
6231         (HideCursor): Same.
6232         (UpdateCursor): Here too.
6234 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
6236         * textbox.cpp (OnKeyDown): Need to set the handled flag on the
6237         routed event args in the case where the key event is handled by
6238         GtkIMContext too.
6239         (OnKeyUp): Set the handled flag in both cases here.
6241 2009-05-11  Alan McGovern  <amcgovern@novell.com>
6243         * control.h:
6244         * control.cpp:
6245         * contentcontrol.cpp: Recommit r133738 as it's not causing the
6246           timeouts.
6248 2009-05-09  Andreia Gaita  <avidigal@novell.com>
6250         * uielement.h: Add GenerateJSBinding annotation to 
6251         CaptureMouse, ReleaseMouseCapture and
6252         GetTransformToUIElementWithError (TransformToVisual)
6254 2009-05-09  Chris Toshok  <toshok@ximian.com>
6256         * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
6257         this check so we're buildable on SLED10.
6259 2009-05-08  Jeffrey Stedfast  <fejj@novell.com>
6261         * layout.cpp (layout_word_wrap): If we can't find a suitable place
6262         to wrap in the first time through the loop, make sure to respect
6263         the 'force' state the second time through.
6265         * application.cpp (GetResourceAsPath): Updated.
6267         * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
6268         to specify whether the filename should be lowercased as it is
6269         canonicalized.
6270         (ExtractAll): The 'canon' argument has been renamed to 'lower'
6271         which more accurately reflects its purpose. Pass this on to
6272         CanonicalizeFilename().
6274 2009-05-08  Alan McGovern  <amcgovern@novell.com>
6276         * control.h:
6277         * control.cpp:
6278         * contentcontrol.cpp: Revert the changes in r133738 until I
6279           can figure out why the x86 bot doesn't like them. It's
6280           causing the extended controls tests to time out.
6282 2009-05-07  Alan McGovern  <amcgovern@novell.com>
6284         * control.h:
6285         * control.cpp:
6286         * contentcontrol.cpp: If the content property changes, the
6287           Template is cleared if it has already been applied.
6289 2009-05-07  Andreia Gaita  <avidigal@novell.com>
6291         * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
6292         the to_element is the top level element.
6294 2009-05-06  Chris Toshok  <toshok@ximian.com>
6296         * xaml.cpp (dependency_object_set_attributes): we can't assume
6297         that a NULL value for @v means it hasn't been set, since {x:Null}
6298         could have been specified.  we need another flag to make it work.
6300 2009-05-06  Jeffrey Stedfast  <fejj@novell.com>
6302         * textbox.cpp (OnPropertyChanged): Guard against calling
6303         ResetIMContext in the middle of some keyboard input.
6305 2009-05-05  Chris Toshok  <toshok@ximian.com>
6307         * collection.cpp (Collection::InsertWithError): we need to make a
6308         further copy because the caller could remove the element in a
6309         handler, which causes us to delete the value (values aren't ref
6310         counted.)
6312 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
6314         * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
6315         false since we're not rendering the preedit strings ourselves.
6316         (TextBoxBase::SetSurface): Update the GtkIMContext's client
6317         GdkWindow.
6318         (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
6319         where the cursor is at.
6321 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6323         * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
6324           elements to be added to ResourceDictionarys in managed land.
6326 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
6328         * layout.cpp (Select): Fixed some selection logic.
6330         * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
6331         and hook up some callbacks. Also init need_im_reset to false.
6332         (TextBoxBase::~TextBoxBase): Kill the IMContext.
6333         (TextBoxBase::OnKeyDown): Filter the event key through the
6334         IMContext. If it handles the key, don't do anything more.
6335         (TextBoxBase::DeleteSurrounding): New callback method for
6336         IMContext stuff.
6337         (TextBoxBase::RetrieveSurrounding): Same.
6338         (TextBoxBase::Commit): New IMContext callback method to commit the
6339         input-method chars into the TextBox.
6340         (TextBoxBase::ResetIMContext): New helper method to reset the
6341         IMContext.
6342         (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
6343         (TextBoxBase::OnFocusIn): Same.
6344         (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
6345         changes, update the GtkIMContext state accordingly. Same with the
6346         various Selection states and Text property.
6348         * eventargs.cpp (GetEvent): New method to get access to the
6349         original GdkEventKey event for use with GtkIMContext.
6351 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6353         * geometry.h:
6354         * animation.h:
6355         * dependencyproperty.g.cpp: Back out the default value fix
6356           until the parser can be updated to handle this.
6358 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6360         * geometry.h:
6361         * animation.h:
6362         * dependencyproperty.g.cpp: PathGeometry.Figures and
6363           ObjectAnimationUsingKeyframes.KeyFrames both need to be
6364           autogenerated. This allows them to pass their respective
6365           DefaultValues tests (when those tests are run).
6367 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6369         * template.h: Remove the forward decls for TemplateBinding and
6370           XamlTemplateBinding as they don't exist in unmanaged anymore
6372 2009-05-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6374         * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
6376 2009-05-04  Geoff Norton  <gnorton@novell.com>
6378         * codec-version.h.in: Bump
6379         * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
6381 2009-05-04  Jeffrey Stedfast  <fejj@novell.com>
6383         * debug.cpp (Frame::ToString): fixed compile warning.
6385         * uielement.cpp (UpdateLayout): Need to return a bool here, we
6386         can't return void.
6388         * textbox.cpp (Blink): Set the deployment.
6390 2009-05-03  Chris Toshok  <toshok@ximian.com>
6392         * everywhere (NotifyListenersOfPropertyChange): add a MoonError
6393         arg here.
6394         
6395         * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
6396         can hook up TemplateBindings in managed code.  Also, change all
6397         the loader callback types to take a loader pointer so we can get
6398         the context.
6400         * template.h|.cpp: remove all the lists of bindings, the
6401         two different template binding types (XamlTemplateBinding and
6402         TemplateBinding) and their respective List::Node containers.  all
6403         this is handled in managed land now, where it belongs.
6405         * dependencyproperty.h|.cpp: move
6406         PropertyChangedEventArgs to dependencyproperty.h, and unify the
6407         two types for property change handlers into simply
6408         PropertyChangeHandler.
6410         * dependencyobject.h: remove the PropertyChangedEventArgs struct
6411         from here, it now lives in dependencyproperty.h
6413         * dependencyobject.cpp (class CallbackListener): pass a MoonError
6414         to the callback.
6415         (DependencyObject::ProviderValueChanged): reuse the
6416         PropertyChangedEventArgs since property change callbacks take them
6417         now instead of splitting up the old_value/new_value/property.
6419         * control.cpp (Control::Control, Control::~Control,
6420         Control::ApplyTemplate): remove all reference to the list of
6421         bindings.
6423         * control.h (class Control): remove the list of bindings.
6425         * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
6426         regen.
6428 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
6430         * runtime.h (InMainThread): check main_thread_inited.
6432         * runtime.cpp: All flags variables are now 32bit. Split _EX flags
6433         into a second debug_flags_ex. Also added a new bool var to keep
6434         track of whether or not main_thread has been initialized since we
6435         can't necessary compare against NULL.
6437         * debug.h: Updated.
6439 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
6441         * debug.cpp: #include <unistd.h>
6443         * *.h: Don't #include stdint.h or unistd.h (only cpp files should
6444         include unistd.h).
6446 2009-05-02  Jeffrey Stedfast  <fejj@novell.com>
6448         * downloader.h: 
6449         * runtime.h:
6450         * color.h:
6451         * clock.h:
6452         * geometry.h:
6453         * value.h[.in]: Don't include stdint.h
6455 2009-05-01  Jackson Harper  <jackson@ximian.com>
6457         * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
6458         handle this also).
6460 2009-05-01  Larry Ewing  <lewing@novell.com>
6462         * collection.cpp: rework the sorting invalidation logic so that we
6463         don't do it quite as often.
6465 2009-05-01  Larry Ewing  <lewing@novell.com>
6467         * collection.h:
6468         * collection.cpp: cache the deployment more and add a
6469         VisualTreeWalker interface to help with that.
6471 2009-05-01  Larry Ewing  <lewing@novell.com>
6473         * type.h:
6474         * type.in.h:
6475         * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
6476         add a static version that handles looking up the deploy for us.
6478         * value.h
6479         * value.h.in
6480         * value.cpp: Make it possible to use a cached deployment when
6481         retriving values using the ::As* methods and calling 
6482         Types::IsSubclassOrSuperclassOf.
6484         * style.cpp: when sealing the style use the cached deployment logic.
6486 2009-05-01  Larry Ewing  <lewing@novell.com>
6487         
6488         * dependencyobject.h:
6489         * xaml.cpp: use types more directly in a few more places to reduce
6490         calls to Deployment::GetCurrent even more.
6492 2009-05-01  Jackson Harper  <jackson@ximian.com>
6494         * validators.cpp|h:
6495         * dependencyobject.cpp|h: Move the name validation check to a
6496         validator (phase one of moving NameProperty to frameworkelement).
6497         * dependencyproperty.g.cpp: regen
6498         
6499 2009-05-01  Jackson Harper  <jackson@ximian.com>
6501         * type.h.in:
6502         * value.h.in: Sync with their .h's
6504 2009-04-30  Jackson Harper  <jackson@ximian.com>
6506         * xaml.cpp: Use the type system for detecting if we should be in
6507         buffering mode, anything that is a FrameworkTemplate
6508         should be buffered.  This fixes custom types that inherit from
6509         DataTemplate not getting buffered properly.
6511 2009-04-30  Jackson Harper  <jackson@ximian.com>
6513         * xaml.cpp: We need to pass the object to GetPropertyName because
6514         non DOB objects can have content properties now.
6516 2009-04-30  Jackson Harper  <jackson@ximian.com>
6518         * xaml.cpp: Don't require a content property name when we are
6519         trying to set a managed content property.  This could be the
6520         content of a managed collection.
6522 2009-04-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6524         * bitmapimage.cpp: Make sure we clean up any previous
6525           downloaders when we create new ones.
6527 2009-04-29  Larry Ewing  <lewing@novell.com>
6529         * frameworkelement.cpp:
6530         * uielement.cpp (DoMeasure): reorder some calls to improve speed
6531         until the new logic lands.
6533 2009-04-29  Larry Ewing  <lewing@novell.com>
6535         * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
6536         reduce Deployment::GetCurrent calls.
6538         * type.h:
6539         * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
6540         for value checking.
6542 2009-04-29  Larry Ewing  <lewing@novell.com>
6544         * xaml.cpp:
6545         * dependencyobject.cpp: reuse types to reduce calls to
6546         Deployment::GetCurrent ().
6548 2009-04-29  Alan McGovern  <alan.mcgovern@gmail.com>
6550         * popup.cpp: Forgot to call the base Dispose method.
6552 2009-04-29  Geoff Norton  <gnorton@novell.com>
6554         * debug.cpp: Not everyone in the world is 32-bit intel.
6556 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
6558         * textblock.cpp (SetTextInternal): Protect everything from
6559         reentrancy and never replace the autocreated InlineCollection with
6560         a newly allocated one. Instead, Clear() the old one and add the
6561         new Run.
6562         (OnCollectionChanged): If !setvalue, then it means we are updating
6563         stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
6565 2009-04-29  Andreia Gaita  <avidigal@novell.com>
6567         * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
6568         parseable stacktraces for later visualization
6570 2009-04-29  Andreia Gaita  <avidigal@novell.com>
6572         * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
6573         calls in a nice way, for later parsing and visualization.
6575 2009-04-29  Geoff Norton  <gnorton@novell.com>
6577         * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
6578         nicely crashes on a incomplete .so (thanks).  As such we're going to 
6579         sha1 the expected binary before blindly installing it to gatekeep
6580         against this.
6582 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
6584         Fixes some cursor position/selection bugs
6586         * layout.cpp (TextLayoutLine): Initialize a new member variable
6587         'count' to 0.
6588         (Layout): Update line->count (needed for the reworking of
6589         GetCursor) and line->length (which was the case of the bugs)
6590         variables as we go. Switch to doing this for run->length too.
6591         (GetCursor): Reworked a bit to use character indexes to help us
6592         find the correct cursor position rather than using byte offsets
6593         which were more awkward.
6595 2009-04-29  Alan McGovern  <amcgovern@novell.com>
6597         * popup.h:
6598         * popup.cpp: Remove the attached layer correctly when the
6599           surface is being nulled on a Popup. 
6601 2009-04-29  Geoff Norton  <gnorton@novell.com>
6603         * style.cpp:
6604         * provider.cpp: GetIterator returns a ref'd iter, we need to delete
6605         it when we're done to clean it up.
6606         * dependencyproperty.g.cpp: You raise me up.
6607         * deployment.cpp|h: Deployment has a cyclic reference to things 
6608         stored in it (AssemblyParts, NameScope), we need to break this cycle
6609         in our disposer so they can be properly cleand up.
6610         * xaml.cpp: If we create a new collection, and set the collection as
6611         some objects value, it will have a refcount of 2.  We need to unref
6612         the collection once we've handed it off.
6614 2009-04-28  Geoff Norton  <gnorton@novell.com>
6616         * popup.cpp: We cannot access this local value here since its been
6617         cleared in our dispose call.
6619 2009-04-28  Geoff Norton  <gnorton@novell.com>
6621         * deployment.cpp: Now that we properly shut down the clocks and 
6622         media threads, we can finalize the domain here instead of pumping
6623         the GC.
6625 2009-04-28  Chris Toshok  <toshok@ximian.com>
6627         * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
6628         address of a temporary.
6630 2009-04-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6632         * audio.h:
6633         * audio.cpp: When looping over playing nodes, don't include
6634           nodes in the Waiting state.
6636         * audio-alsa.cpp: when Played, update the poll list. The state
6637           might not actually have changed if only the Waiting flag was
6638           switched.
6640 2009-04-28  Larry Ewing  <lewing@novell.com>
6642         * uielement.cpp
6643         * uielement.h:
6644         * dirty.cpp:
6645         * runtime.cpp:
6646         * runtime.h:
6647         * frameworkelement.h:
6648         * frameworkelement.cpp: add FrameworkProvider for actual*
6649         values.  Rework layout using the actual* values and add a first
6650         pass at looping layout.
6652         * collection.cpp:
6653         * collection.h: Add a deep tree walker that allows you to walk the
6654         entire tree without recursing.
6655         
6656         * media.cpp:
6657         * media.h:
6658         * shape.cpp:
6659         * shape.h:
6660         * canvas.h:
6661         * canvas.cpp: rework layout logic for the new providers and handle
6662         more of the corner cases.
6664         * textblock.h:
6665         * textblock.cpp: Remove the old Actual* provider since we use the
6666         generic one now.  Go a bit crazy with Invalidations until they can
6667         be reworked.
6669         * eventargs.cpp: stop using IsAnythingDirty.
6670         
6671 2009-04-28  Larry Ewing  <lewing@novell.com>
6673         * dependencyobject.cpp:
6674         * mediaelement.cpp:
6675         * mediaplayer.cpp:
6676         * textbox.cpp:
6677         * timesource.cpp:
6678         * timesource.h: rework the priority of our event queue so that
6679         we end up being more responsive to input and give the browser a
6680         chance to do things like repaint.
6682 2009-04-28  Jackson Harper  <jackson@ximian.com>
6684         * xaml.cpp: Don't allow x:Class on non top level elements.
6686 2009-04-28  Jackson Harper  <jackson@ximian.com>
6688         * dependencyproperty.cpp: When resolving property paths if we
6689         don't have enough info to lookup the correct managed type we just
6690         verify that the current lookup object has the correct type name,
6691         excluding namespace.
6693 2009-04-28  Alan McGovern  <amcgovern@novell.com>
6695         * cbinding.h:
6696         * cbinding.cpp:
6697         * contentcontrol.h:
6698         * contentcontrol.cpp: Add the ability to stop ContentControl
6699           from automatically setting the LogicalParent when a
6700           FrameworkElement is added as the Content.
6702 2009-04-27  Jackson Harper  <jackson@ximian.com>
6704         * value.cpp: property path's have expanded paths that need to be
6705         copied, freed, ect now.
6706         * propertypath.h: Add an expanded path to the property path, this
6707         is a path with managed types marked with namespaces expanded into
6708         full names. So 'moon:MyType' becomes something like
6709         'MoonNamespace.MyType'.
6710         * dependencyproperty.cpp: If an expanded path is available use
6711         that for property path parsing.  Also added support for the ' mark
6712         for escaping full type names (otherwise full names could not have
6713         '.'s). The ' can only be used in expanded paths.
6714         * xaml.cpp: When parsing property paths expand out managed
6715         namespaces if possible.
6717 2009-04-27  Geoff Norton  <gnorton@novell.com>
6719         * value.cpp: Its possible for these pointers to be 0x0 here, so
6720         we need to guard against a invalid dereference causing a SIGSEGV
6721         fixes moon-unit with toggleref on.
6723 2009-04-27  Geoff Norton  <gnorton@novell.com>
6725         * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
6727 2009-04-24  Chris Toshok  <toshok@ximian.com>
6729         It turns out the granularity of overriding in styles is at the
6730         setter level, not the style level.  so if you have a local style
6731         with a setter for Background, it doesn't overwrite the default
6732         style setters for, say, Foreground.  We handle this by having two
6733         style providers, with the local style provider overriding the
6734         default style provider.
6735         
6736         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
6737         initialize both of the style providers (at both LocalStyle and
6738         DefaultStyle levels.)
6739         (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
6740         style (so that values are converted in managed-land), and seal it
6741         at the local style level.
6742         (FrameworkElement::SetDefaultStyle): same blob here, but seal it
6743         at the default style level.
6745         * dependencyobject.cpp (DependencyObject::Initialize): pass
6746         precedences to the providers in their ctors, and also don't
6747         initialize a style provider here.  This saves us from having a
6748         style provider on anything except frameworkelement subclasses.
6750         * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
6751         precedence ctor arg to property value providers.
6753         * provider.h: provider ctors now take both an object and a
6754         precedence level.  that way they know what precedence level to
6755         notify changes on (this is mostly for the style provider, but it
6756         moves all the precedence level logic to the spot where we create
6757         the provider, not in the provider code itself.)
6759         * provider.cpp: add all the precedence ctor args.
6760         (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
6761         with the precedence we were initialized with.
6762         (AutoCreatePropertyValueProvider::GetPropertyValue): same.
6763         
6764 2009-04-24  Alan McGovern  <amcgovern@novell.com>
6766         * runtime.cpp: When a layer is being detached, don't try to
6767           invalidate its bounds if the active window has already been
6768           torn down. Fixes the case where a popup is open while the
6769           window is being torn down.
6771 2009-04-24  Alan McGovern  <amcgovern@novell.com>
6773         * popup.h:
6774         * popup.cpp: When the popup is detached from the surface, it
6775           should automatically close if it is open.
6777 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
6779         * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
6780         lwsp after going beyond the width constraint. Fixes the
6781         tests in the far right in MS DRT 206.
6783 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
6785         * font.cpp (GetGlyphInfo): Don't special-case
6786         ZeroWidthNonBreakingSpace anymore. Rely on the font for this
6787         glyph. That seems to be what SL2 does now...
6789         * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
6790         implemenetd a forced-wrap if we can't find a suitable place to
6791         wrap.
6793 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
6795         * layout.cpp (layout_word_wrap): Don't treat special numeric
6796         punctuation as the start of a numeric word until we see what lays
6797         beyond it.
6799 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
6801         * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
6802         anymore, that was a 1.0-thing and can no longer be used. Also
6803         added support for non-breaking-glue classes as well as rules for
6804         breaking on combining-marks, open-punctuation, contingents,
6805         quotations, prefixes, and words starting with an infix.
6807 2009-04-23  Chris Toshok  <toshok@ximian.com>
6809         * animation.cpp|.h, clock.cpp|.h: remove
6810         OnSurfaceAttach/OnSurfaceDetach.  They're no longer used.
6812 2009-04-23  Chris Toshok  <toshok@ximian.com>
6814         * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
6815         clock state and use that to tell whether to update the child
6816         clocks on this tick.  Clock::UpdateFromParentTime will change it
6817         out from under us, and child clocks won't get updated the last
6818         time when we switch to Filling or Stopped.
6820 2009-04-23  Chris Toshok  <toshok@ximian.com>
6822         * animation.cpp (Animation::AllocateClock): remove the name
6823         setting from here, since it only works here if the target/property
6824         were set on the animation itself.
6825         (AnimationClock::HookupStorage): and move it here, when we know
6826         both the target and property.
6828         * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
6829         Class::Event instead of instance->Event.  also set the name of the
6830         storyboard in debug mode.
6831         (MultiScaleImage::SetViewportOrigin): same.
6832         (motion_finished): make static.
6834 2009-04-23  Chris Toshok  <toshok@ximian.com>
6836         * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
6837         clocks (not clockgroups, mind you) if we're active and not paused.
6838         Fixes animations reverting in lutz's deep zoom demo.
6840 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
6842         Lots of fixage for MS DRT #209
6844         * layout.cpp (layout_word_wrap): Fixed for inseparables,
6845         exclamations, ambiguous, and postfix. Also removed the
6846         glyph->index == 0 hack that was there for Silverlight 1.0
6848 2009-04-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6850         * dependencyobject.h:
6851         * dependencyobject.cpp: Add a way to mark allow objects to be
6852           deleted on any thread, not just the main thread.
6854         * pipeline.cpp: MediaClosures can be deleted on any thread.
6856 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
6858         * layout.cpp (layout_word_wrap): Add a bit more logic for infix
6859         separators. Finishes off MSDRT 208.
6861 2009-04-22  Chris Toshok  <toshok@ximian.com>
6863         * xaml.cpp (value_from_str): permit empty int32's (they're 0).
6864         add comment about empty doubles.
6866 2009-04-22  Chris Toshok  <toshok@ximian.com>
6868         * xaml.cpp (dependency_object_add_child): guard against adding an
6869         empty Value to a resource dictionary.  this happen when you have
6870         no content on a primitive type (<sys:Bool></sys:Bool>) and
6871         value_from_str can't deal with parsing an empty string.
6872         (value_from_str): for non-object/non-string types, we need to
6873         strip leading/trailing whitespace before attempting to parse. this
6874         allows things like: <sys:Bool> true </sys:Bool>
6875         (class XamlElementInstanceValueType): for empty elements the value
6876         will have never been set.  try to set it here using an empty
6877         string.
6879 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
6881         * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
6882         SelectionLength values as they come in. Apparently this is what
6883         Silverlight does too.
6885 2009-04-22  Chris Toshok  <toshok@ximian.com>
6887         * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
6888         with true meaning "i need another tick."
6889         (ClockGroup::UpdateFromParentTime): same.
6891         * timeline.cpp (DispatcherTimer::Start): use the timemanager to
6892         add the clock.
6893         (DispatcherTimer::Run): use the root_clock's parent clock here to
6894         simplify the code a bit.
6895         (DispatcherTimer::~DispatcherTimer): same.
6897         * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
6898         we don't care about groups, just add it to the deployment's
6899         timemanager.
6901         * timemanager.h|cpp (class RootClockGroup): new class to represent
6902         the root clock group created by a time manager to house all other
6903         clocks in a surface.  It has slightly different behavior from a
6904         noprmal clock group, particularly wrt putting the timemanager to
6905         sleep.
6906         (TimeManager::TimeManager): create a RootClockGroup.
6907         (TimeManager::RemoveTickCall): if we're putting the time manager
6908         to sleep, check to see if this was the last tick call, and clear
6909         the flag (and stop the source if the flags are now empty).
6910         (TimeManager::NeedRedraw): now that clock smoothing isn't used,
6911         source->SetTimerFrequency() can't be called with whatever timeout
6912         we like and have it migrrate back to the user-specified time.  so
6913         change 0 to current_time.
6914         (TimeManager::NeedClockTick): same.
6915         (TimeManager::AddTickCall): same.
6916         (TimeManager::SourceTick): remove the #if'ed out version with
6917         clock smoothing, and add back in the stuff to put the time manager
6918         to sleep (currently ifdef'ed out still)
6919         (TimeManager::AddClock): move the logic to delay the root clock
6920         group here out of Storyboard::Begin.  This is because we also want
6921         to do this with DispatcherTimers as well.  Given that there is no
6922         TimeManager::GetRootClock anymore, this is the only api to add
6923         child clocks.
6925 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
6927         * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
6928         the 'in' ptr to inend.
6930         * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
6932 2009-04-22  Rusty Howell  <rhowell@novell.com>
6934         * building libmoonxpi for the FF plugin
6936 2009-04-21  Chris Toshok  <toshok@ximian.com>
6938         * provider.cpp:
6939         (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
6940         but hopefully worth the hotspot reduction.  do fast checks to see
6941         if we're even dealing with a property that's inheritable first.
6942         cache the Types* pointer instead of indirectly fetching it
6943         repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
6944         directly instead.)
6946 2009-04-21  Jeffrey Stedfast  <fejj@novell.com>
6948         * glyphs.cpp (Layout): Fixed scaling calculation.
6950         * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
6951         and LayoutWrap. The different word-wrapping behaviors are, as
6952         before, handled in different subroutines but the outer loops are
6953         all now merged.
6955 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
6957         * textblock.cpp (SetTextInternal): Don't break the string into
6958         multiple inlines, Silverlight shoves the entire string into a
6959         single Run no matter what.
6960         (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
6961         character instead of \n to match Silverlight behavior.
6963         * layout.cpp: Fixed various loops and checks to properly handle
6964         any type of unicode line-breaking character.
6966 2009-04-21  Alan McGovern  <amcgovern@novell.com>
6968         * collection.h: HitTestCollection should override
6969           RemovedFromCollection the same way it overrides
6970           AddedToCollection so that items added/removed from the
6971           collection are not reparented.
6973 2009-04-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6975         * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
6977 2009-04-20  Chris Toshok  <toshok@ximian.com>
6979         * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
6980         this method.  Also, don't multiply to compute localTime only to
6981         turn around and divide to compute normalizedTime.  normalizedTime
6982         is always the factor we multiply natural_duration_timespan by.
6984 2009-04-20  Chris Toshok  <toshok@ximian.com>
6986         * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
6987         textblock autocreator here, and stop using TextBlock vs. Control
6988         for the font size names, as both textblock and controls have the
6989         varying font size.  There's also no reason to make them public
6990         anymore.  if you want the font size, just call GetFontSize().
6992         * control.h: FontSize uses an autocreator now, and remove the
6993         #define.
6995         * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
6996         of the #define, and while we're at it just replace the other
6997         defines with calls to the getters too.
6999         * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
7000         now), and the #define for font_size.
7002         * dependencyproperty.g.cpp: regen.
7003         
7004 2009-04-20  Chris Toshok  <toshok@ximian.com>
7006         * security.c (security_enable_coreclr): version the
7007         MOON_DISABLE_SECURITY variable.
7009 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
7011         * textblock.cpp (TextBlock): Removed cached TextFontDescription
7012         since it's only ever used in 1 place and even then it's a corner
7013         case.
7015 2009-04-20  Chris Toshok  <toshok@ximian.com>
7017         * timeline.cpp: fix up DispatcherTimers after I broke them by
7018         removing the clock event.
7020 2009-04-19  Chris Toshok  <toshok@ximian.com>
7022         * eventargs.h|.cpp: add RenderingEventArgs type.
7024         * timemanager.cpp (TimeManager::SourceTick): the render event
7025         takes a RenderEventArgs, even though the type of the event is
7026         EventHandler.  Goes a long way toward fixing DRT #394 and fixes
7027         DRT #905.
7029         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
7030         regen.
7031         
7032 2009-04-19  Chris Toshok  <toshok@ximian.com>
7034         * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
7035         default for the various shapes (Fill if a rectangle or ellipse,
7036         None for all other types).  Fixes part of DRT #508.
7037         (Rectangle::Rectangle): don't set the default value as a local
7038         value.
7039         (Ellipse::Ellipse): same.
7041 2009-04-19  Jeffrey Stedfast  <fejj@novell.com>
7043         * textblock.cpp (DefaultFontSize): New function to get the default
7044         font size for a TextBlock (or Inline) based on the Silverlight
7045         context (XAP vs XAML).
7047 2009-04-19  Chris Toshok  <toshok@ximian.com>
7049         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7050         inlines inherit their Language from the textblock, and textblocks
7051         inherit it from frameworkelements.  part of fix for drt #952.
7053 2009-04-18  Chris Toshok  <toshok@ximian.com>
7055         * clock.h|.cpp: move to the holy grail of a functional clock
7056         setup.  this removes Clock::Tick and related additive machinery
7057         that introduces errors into various calculations.  instead we use
7058         the fact that a child's time can be expressed as a function of its
7059         parent's time.  more calculation per-frame, perhaps, but less
7060         problems wrt inflection points like autoreverse/repeat points.
7061         This removes *tons* of difficult to read and impossible to
7062         understand code, and brings clocks and clockgroups a lot closer.
7063         Docs coming soon to a source file near you.
7065         * timeline.h|.cpp: various clock-related changes.  2 notables are
7066         the fact that all Timelines have a completed event now instead of
7067         just storyboards (because Clocks are also emitting completed now,
7068         not just ClockGroups), and DispatcherTimers now subclass from
7069         Timeline instead of TimelineGroup.  We also use a virtual method
7070         instead of an event handler for ticking DispatcherTimers.
7071         
7072         * animation.h|.cpp: more clock fallout.  Also, rewrite
7073         HookupAnimationsRecurse so that we propagate the current
7074         target/property as parameters instead of requiring a search back
7075         up the tree at ever level.
7077         * timemanager.cpp: more clock rewrite stuff.  Set the surface
7078         clockgroup's duration to forever instead of automatic, and switch
7079         from ->Tick to ->UpdateFromParentTime.
7080         
7081         * multiscaleimage.cpp: track changes to storyboard api (basically
7082         i removed the non-WithError methods.. maybe i should put them
7083         back?)
7085         * cbinding.h|.cpp, type-generated.cpp: regen.
7087 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7089         * glyphs.cpp (Layout): Pass our StyleSimulations along to
7090         GetGlyphInfo() so that we can simulate Bold or Italics as the user
7091         has requested.
7093         * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
7094         argument (which defaults to None). Adjust the glyph for Bold
7095         and/or Italics if requested.
7096         (TextFont::GetGlyphInfo): Now takes a StyleSimulations
7097         argument (which defaults to None). When looking up the glyph in
7098         the cache, make sure that the simulations also match. When loading
7099         a new glyph, pass along the StyleSimulations.
7101 2009-04-17  Larry Ewing  <lewing@novell.com>
7103         * runtime.cpp (Surface): remove references to removed variable.
7105 2009-04-17  Chris Toshok  <toshok@ximian.com>
7107         * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
7108         getter/setter here, and move XapLocation from surface to here.
7110         * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
7112         * downloader.cpp: use Deployment::GetXapLocation
7114         * cbinding.h|chinding.cpp: regen.
7116 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7118         * font.h: Changed the glyph cache size to be #defined rather than
7119         hard-coded everywhere.
7121 2009-04-17  Jackson Harper  <jackson@ximian.com>
7123         * xaml.cpp: When we are setting the Name property use the same
7124         trick we are using for setting the x:Name property.  Grabbing the
7125         parent element and making sure we get registered in that
7126         namescope.  This isn't perfect, but should fix 95% of the managed
7127         namescope problems.
7129 2009-04-17  Alan McGovern  <amcgovern@novell.com>
7131         * popup.h:
7132         * type-generated.cpp: Correctly mark Popup.Child as its
7133           Content property.
7135 2009-04-17  Geoff Norton  <gnorton@novell.com>
7137         * media.cpp: Ensure that we invalidate the image if the
7138         BitmapImage has already been parsed (like from a SetSource call)
7140 2009-04-17  Geoff Norton  <gnorton@novell.com>
7142         * error.cpp: Image errors use the code 4001, fixes #97
7144 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7146         * glyphs.cpp (Layout): Don't bail if we have something other than
7147         StyleSimulationsNone.
7149         * enums.h (enum StyleSimulations): Added Bold, Italic, and
7150         BoldItalic.
7152 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7154         * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
7155           already unref them upon destruction.
7157 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7159         * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
7160         of our inlines' fonts have changed - if they all override the font
7161         family, then there's no need to redraw.
7163 2009-04-16  Jackson Harper  <jackson@ximian.com>
7165         * dependencyobject.cpp: Unregister the old name when we set an
7166         objects name.
7168 2009-04-16  Sebastien Pouliot  <sebastien@ximian.com>
7170         * openfile.cpp|h: Add a dialog requester to increase isolated
7171         storage quota. Add function to recursively compute the total size
7172         of a directory, which is used to check quota in IS.
7174 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7176         * deployment.cpp: mono_gc_invoke_finalizers may cause the
7177           current appdomain to change, so restore it afterwards. Fixes
7178           a rare, random crash upon shutdown.
7180 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7182         * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
7183         invalidating the TextBoxBase, we need to emit an event to let the
7184         TextBoxView know our font has changed.
7185         (TextBoxView::OnModelChanged): Reset state on the layout when the
7186         font changes (since it has no way of knowing that the font has
7187         changed otherwise).
7189         * textblock.cpp (Inline::UpdateFontDescription): Return true if
7190         the font has changed or false otherwise.
7191         (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
7192         return true and reset the state on the TextLayout.
7194         * font.cpp (TextFontDescription::Set*): Return true if the font
7195         has changed or false otherwise.
7197         * layout.cpp (TextLayout::ResetState): New method to reset the
7198         state of a TextLayout. Normally the state only gets reset if a
7199         layout property chanegs, but sometimes it is necessary to notify
7200         the TextLayout engine of a state change in one of the
7201         TextLayoutAttributes.
7203 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7205         * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
7206         xap resource, download it from the web.
7208         * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
7209         resource, download it from the web.
7211 2009-04-15  Larry Ewing  <lewing@novell.com>
7213         * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
7214         correctly.
7216 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7218         * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
7219         glib until 2.10, so so guard to allow building on systems with
7220         older versions of glib. Also merged BREAK_NEXT_LINE and
7221         BREAK_UNKNOWN into the BREAK_AFTER group.
7223 2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7225         * runtime.cpp: Don't support versions of the type "1.0..0".
7226           Fixes a test case in MS DRT #21.
7228 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7230         * downloader.cpp (Downloader::Open): fix the argument passed to
7231         validate_policy
7233 2009-04-15  Alan McGovern  <amcgovern@novell.com>
7235         * utils.cpp: We need to increment the pointer otherwise we
7236           loop forever.
7238 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7240         * downloader.cpp (Downloader::Open): make the relative uris relative to
7241         the xaplocation
7242         (check_redirection_policy, Downloader::Write): don't use
7243         uri->originalString, but uri->ToString ()
7245 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7247         * runtime.h|cpp (Surface): xap_location, Get() and Set()
7249 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7251         * layout.cpp (layout_word_wrap): Fixed word-break logic for
7252         ambiguous break-types. Fixes second column of text in test #208.
7254 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7256         * layout.cpp (layout_word_wrap): Fixed word-breaking around a
7257         BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
7259 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
7261         * deepzoomimagetilesource.h: expose IsDownloaded()
7262         * multiscaleimage.cpp: download the tile source for the subimage before
7263         downloading the un-shared tiles.
7265 2009-04-14  Andreia Gaita  <avidigal@novell.com>
7267         * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
7268         indicates frame could not be decoded. fixes uninitialized buffer
7269         size leading to huge memory allocation and abort. kudos to
7270         Alp Toker for spotting this.
7272 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7274         * layout.cpp (layout_word_wrap): Added support for Hangul and
7275         ideographic word breaking. Improves test #208 quite a bit.
7277 2009-04-14  Larry Ewing  <lewing@novell.com>
7279         * control.h:
7280         * control.cpp (InsideObject): always return fals controls don't
7281         handle the testing.  Fixes MSI navigation in
7282         http://playboy.covertocover.com/
7283         
7284         * panel.h:
7285         * panel.cpp: remove HitTest stubs.
7287 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7289         * layout.cpp (layout_word_wrap): Added logic to for breaking after
7290         more break-types including BREAK_AFTER, BREAK_HYPHEN, and
7291         BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
7292         behavior on test #206.
7294 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7296         * layout.cpp (utf8_strlen): Removed, this has never been sued.
7297         (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
7298         no longer has this wrapping bug.
7299         (layout_word_wrap): Don't need to check if we're at the last word
7300         in the textblock because Silverlight 2.0 fixed this bug.
7301         (FindLastWord): Removed, no longer needed.
7303 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7305         * pipeline.h:
7306         * playlist.cpp: Don't try to open the media if an error has
7307           been reported.
7309 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7311         * mediaelement.h:
7312         * mediaplayer.cpp:
7313         * mediaelement.cpp: Check for markers with a timeout instead
7314           of after rendering a frame, this way markers also work with
7315           audio-only media.
7317 2009-04-14  Jackson Harper  <jackson@ximian.com>
7319         * dependencyobject.cpp|h: Add a return value for SetName with
7320         namescope, returns false if there is an error.
7321         * xaml.cpp: Check the return value of SetName
7323 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
7325         * uri.cpp (Combine): strip leading ../ as we're already cutting the
7326         filename off the base uri
7328 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7330         * type.h:
7331         * size.h:
7332         * xaml.h:
7333         * utils.h:
7334         * value.h:
7335         * stylus.h:
7336         * value.cpp:
7337         * type.h.in:
7338         * runtime.h:
7339         * value.h.in:
7340         * openfile.h:
7341         * transform.h:
7342         * tilesource.h:
7343         * downloader.h:
7344         * timemanager.h:
7345         * downloader.cpp:
7346         * timemanager.cpp: Added @GeneratePInvoke to all methods used
7347           in managed code. For C++ methods also generate the
7348           corresponding C method.
7350         * cbinding.h:
7351         * cbinding.cpp: Regenerated.
7353 2009-04-13  Jeffrey Stedfast  <fejj@novell.com>
7355         * textblock.cpp (SetFontResource): If we cannot get the resource
7356         from within the xap, then we need to spawn a downloader to fetch
7357         it from the web.
7359 2009-04-13  Geoff Norton  <gnorton@novell.com>
7361         * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
7362         centrally.
7364 2009-04-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7366         * src.mdp: Updated.
7368 2009-04-12  Jeffrey Stedfast  <fejj@novell.com>
7370         * debug.cpp (hexdump_addr): New function to help toshok print a
7371         hexdump of memory from gdb.
7373         * textbox.cpp (TextBoxBase::SetFontResource): Set the font
7374         filename/guid based on the resource provided.
7375         (TextBoxBase::OnPropertyChanged): If a font resource is named in
7376         the FontFamily property, then call SetFontResource() with the
7377         provided resource name.
7378         (TextBox::ClearFontSource): Clear the FontSourceProperty.
7379         (PasswordBox::ClearFontSource): Same.
7381 2009-04-11  Chris Toshok  <toshok@ximian.com>
7383         * provider.h|.cpp, dependencyobject.cpp: get rid of
7384         PropertyPrecedence_Animation and the associated provider.  in SL,
7385         animations are considered local values (and a choir of angels was
7386         heard moaning as they fell on their swords).
7388 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
7390         * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
7391         FT_Streams and setup their own FT_Open_Args instead. This solves
7392         the crasher problems in the silverlight2 test harness.
7394         * textblock.cpp (Inline::SetFontResource): New method to update
7395         our FontFilenameProperty and FontGUIDProperties.
7396         (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
7397         that reference a resource.
7398         (Inline::UpdateFontDescription): Parse out the family name from
7399         the FontFamily::Source.
7401 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
7403         * textblock.cpp (TextBlock::SetFontResource): Renamed from
7404         SetFontSource() to be more accurate.
7406         * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
7407         fail. This is probably what was causing the crash on
7408         font_shutdown().
7410         * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
7411         than a string and returns a bool argument hinting at whether we
7412         succeeded or not.
7413         (OnPropertyChanged): Only fall back on creating a downloader for
7414         the font if the uri is not a resource.
7416 2009-04-11  Jackson Harper  <jackson@ximian.com>
7418         * xaml.cpp: If we are hydrating we don't need the extra ref.
7420 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7422         * uri.cpp (ToString): Made to accept const Uri*
7424         * textblock.cpp (SetFontSource): Parse the resource string into a
7425         Uri and pass that along to GetResourceAsPath().
7427         * glyphs.cpp (SetFontResource): Parse the resource string into a
7428         Uri and pass that along to GetResourceAsPath().
7430         * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
7431         GetResource().
7433         * application.cpp (GetResource): Oops, this really does need a Uri
7434         argument.
7435         (GetResourceAsPath): Use a Uri here too, and convert any ';' into
7436         a '/'.
7438 2009-04-10  Jackson Harper  <jackson@ximian.com>
7440         * xaml.cpp: Let the XamlElementInstances cleanup their Values.
7442 2009-04-10  Chris Toshok  <toshok@ximian.com>
7444         * timemanager.cpp (TimeManager::SourceTick): just for kicks
7445         completely rip out the clock smoothing code, and also emit all
7446         tick calls (don't worry about how much time we're taking in them).
7447         Lastly, emit tick calls *before* rendering.  we need to do this or
7448         else the Loaded event won't be posted before we draw (when we
7449         delay the loaded event, that is.) which leads to a great many
7450         VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
7451         flag for the initial children z-sorting.
7453         * collection.cpp (VisualTreeWalker::Step): add a special case for
7454         collection::count == index == 1, which is what we end up with on
7455         uielement's with a subobject.  it won't be a collection child of a
7456         panel, so it'll never be z-sorted, but since it's only 1 element
7457         it doesn't need to be anyway.
7459         * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
7460         to Panel.  Also, move the ZIndex OnCollectionItemChanged code into
7461         panel as well.
7463         * panel.h|.cpp: remove a couple of unused
7464         decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
7465         canvas.h|cpp here.
7467 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7469         * font.cpp (OpenFaceByIndex): New helper function split out from
7470         FontFace::LoadFontFace() which performs the FT_Open_Face() and
7471         family name matching.
7472         (OpenFaceByFamily): If we don't have an index, this function opens
7473         all faces in the file and finds a matching font face based on
7474         family.
7475         (LoadFontFace): Use our new helper functions.
7477         * textblock.cpp (SetFontSource): On fail, set the font filename to
7478         NULL and call UpdateFontDescriptions() no matter what.
7480         * font.cpp (UnsetFields): Allow unsetting of the font index.
7481         (Merge): Merge the index separately.
7482         (SetIndex): Set/unset the FontMaskIndex bit.
7484         * glyphs.cpp (SetFontResource): New internal method to set a font
7485         resource stream.
7486         (OnPropertyChanged): Handle non-absolute Uris as resource streams.
7488 2009-04-10  Larry Ewing  <lewing@novell.com>
7490         * multiscaleimage.cpp: add a translucency check before calling
7491         cairo_paint_with_alpha.
7493 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>a
7495         * textblock.cpp (SetFontSource): New method for setting a font
7496         source via a resource name.
7497         (OnPropertyChanged): When the FontFamily changes, parse out the
7498         resource name (if it exists) and set that as our font source.
7500         * bitmapimage.cpp (UriSourceChanged): Updated.
7502         * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
7504         * application.cpp (GetResourceAsPath): New helper method to get a
7505         specified resource as a filesystem path.
7506         (GetResource): Now takes a resource name rather than a Uri.
7508         * utils.cpp (CanonicalizeFilename): New function to canonicalize a
7509         filename.
7510         (ExtractAll): New helper function to extract all files from a zip
7511         archive into a specified directory.
7513 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7515         * textblock.cpp (CleanupDownloader): New helper method.
7516         (SetFontSource): Use CleanupDownloader() and also clear the
7517         FontSourceProperty since this will override that source.
7518         (OnPropertyChanged): Parse the FontFamily name.
7519         (DownloaderComplete): Use SetValue() correctly.
7521         * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
7522         handler.
7524 2009-04-10  Sebastien Pouliot  <sebastien@ximian.com>
7526         * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
7527         all coreclr-related code from being compiled.
7529 2009-04-09  Chris Toshok  <toshok@ximian.com>
7531         * uielement.cpp (UIElement::WalkTreeForLoaded): be more
7532         descriptive with the "attempting to use a null application" thing.
7534         * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
7535         that were missing.  we need to make this less fragile, and have it
7536         use the event strings in type-generated.cpp.
7537         (end_element_handler): add more text to the line about attempting
7538         to use a null application, so we can differentiate it from the
7539         other one.
7541         * timeline.h (class Timeline): BeginTime has, in fact, a default
7542         value (of 0.)
7544         * dependencyproperty.g.cpp: regen.
7546 2009-04-09  Jeffrey Stedfast  <fejj@novell.com>
7548         * textblock.h, textbox.h: Added FontSourceProperty.
7550         * value.cpp|h: Added FontSource support.
7552         * fontsource.h: Added.
7554 2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>
7556         * cbinding.cpp|h: regenerated
7557         * openfile.cpp|h: Add save_file_dialog_show to implement
7558         SaveFileDialog (SL3) and refactor the filter code to be shared.
7559         * runtime.cpp|h: Rename can_full_screen to user_initiated_event
7560         since we need it for SaveFileDialog (and elsewhere too). Rename
7561         setter and add a getter with a c binding.
7563 2009-04-09  Jackson Harper  <jackson@ximian.com>
7565         * xaml.cpp|h: We need to create Value*'s from strings/files now
7566         instead of just creating dependencyobjects, it's legal to create a
7567         managed object from xaml that isn't a DOB.
7568         - Add a couple utility methods for creating just DOBs from
7569         strings/files.
7570         * cbinding.cpp: regen
7571         * xap.cpp:
7572         * template.cpp:
7573         * runtime.cpp: Updated method names
7574         
7575 2009-04-08  Geoff Norton  <gnorton@novell.com>
7577         * downloader.cpp: Ensure that when someone subscribes to NotifySize
7578         they actually will get notified of the size.
7580 2009-04-08  Geoff Norton  <gnorton@novell.com>
7582         * glyphs.cpp:  Ensure we dont pass an unitialized pointer to 
7583         TextFontDescription::SetFilename
7585 2009-04-08  Andreia Gaita  <avidigal@novell.com>
7587         * dependencyobject.cpp: enable toggleref
7588         conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
7590 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7592         * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
7593         isn't a .odttf file.
7595 2009-04-08  Geoff Norton  <gnorton@novell.com>
7597         * pipeline.cpp: Ensure we dont try to decode if our stream has been
7598         disposed.
7600 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7602         * downloader.cpp (validate_policy): Don't delete source here, we
7603         don't own it.
7605         * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
7606         the file extension is .odttf. Also no need to stat() anymore.
7608         * textblock.cpp (DownloaderComplete): Same.
7610 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7612         * provider.cpp (InheritedPropertyValueProvider): We need to
7613         inherit FontGUIDProperty for Inlines as well.
7615         * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
7616         deobfuscation features.
7618         * glyphs.cpp (DownloaderCompleted): Don't need to call
7619         downloader_deobfuscate_font() anymore. We only need to get the
7620         GUID to set on the FontDescription.
7622         * textblock.cpp (DownloaderCompleted): Same.
7624         * font.cpp: Implemented our own FT_Stream that can handle reading
7625         obfuscated fonts directly without the need to rewrite the file
7626         first.
7627         (TextFontDescription): Now has a GUID property for Glyphs and
7628         TextBlock to use.
7630         * downloader.cpp: Fixed to autogenerate the accessors and changed
7631         the UriProperty type to a Uri to be consistent with other classes.
7632         (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
7634 2009-04-08  Geoff Norton  <gnorton@novell.com>
7636         * deployment.cpp: Ensure that we restore to the current MonoDomain
7637         after creating a new deployment.
7639 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
7641         * multiscaleimage.h|cpp: Set IsDownloading property according to the
7642         status of the downloaders
7644 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
7646         * multiscaleimage.cpp (MultiScaleImage::RenderSingle, 
7647         MultiScaleImage::RenderCollection): do not start any new download if
7648         AllowDownlodingProperty is false.
7650 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
7652         * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
7654 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
7656         * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
7657         and move on
7659 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
7661         * multiscaleimage.cpp: some additional debug info printing the state of
7662         each BitmapImage
7664 2009-04-07  Chris Toshok  <toshok@ximian.com>
7666         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7667         almost had it that last time.  In the case where the parent has
7668         that property, use GetValue on it instead of ReadLocalValue, which
7669         won't pick up styles.
7671 2009-04-07  Chris Toshok  <toshok@ximian.com>
7673         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7674         rewrite this substantially to make it work correctly and be more
7675         efficient.  we no longer look up the hierarchy for properties
7676         which aren't inheritable, and we only loop up the visual tree, not
7677         the logical one (since that has issues when it comes to
7678         templates).
7679         (get_parent): nuke, it was a broken way to deal with parents.
7681 2009-04-07  Chris Toshok  <toshok@ximian.com>
7683         * uielement.h|.cpp (class UIElement): scrap that ill-advised
7684         AutoCreator crap.  it's much simpler.  the default is actually
7685         NULL, and the managed layer does the stupid mapping from NULL to
7686         new MatrixTransform.
7688 2009-04-07  Chris Toshok  <toshok@ximian.com>
7690         * uielement.h|.cpp (class UIElement): use an AutoCreator for
7691         RenderTransformProperty.
7693         * dependencyproperty.g.cpp: regen.
7694         
7695 2009-04-07  Larry Ewing  <lewing@novell.com>
7697         * grid.cpp (MeasureOverride): use the star fraction of the
7698         available size when measuring.
7700         * border.cpp: restrict the return value to available size.
7702 2009-04-07  Geoff Norton  <gnorton@novell.com>
7704         * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
7705         to the media thread from any thread.  Fixes seeking on SmoothHD
7706         sites.
7708 2009-04-07  Geoff Norton  <gnorton@novell.com>
7710         * bitmapimage.cpp|h: Ensure we stop getting events from any 
7711         active downloaders once we're disposed.
7712         * brush.cpp|h: Ensure we stop getting events from any 
7713         active BitmapImages once we're disposed.
7715 2009-04-07  Jeffrey Stedfast  <fejj@novell.com>
7717         * glyphs.cpp (CleanupDownloader): New helper method.
7718         (DownloadFont): Don't delete the uri after we're done, we do not
7719         own this object!
7720         (OnPropertyChanged): Use Uri::IsNullOrEmpty().
7722 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7724         * runtime.cpp: layers is an EventObject, unref instead of
7725           delete.
7727         * collection.h: Have a protected dtor so that nobody can
7728           delete this class directly ever again.
7730 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7732         * runtime.cpp: Add a few null checks.
7734 2009-04-07  Stephane Delcroix  <sdelcroix@novell.com>
7736         * application.cpp: uri->ToString() allocates memory, free it after
7737         use.
7739 2009-04-06  Chris Toshok  <toshok@ximian.com>
7741         * runtime.cpp|.h (Surface::Attach): split this method effectively
7742         in half: stuff we do before the loaded events are fired, and stuff
7743         we do after.  The second half is in Surface::ToplevelLoaded.  This
7744         fixes playboy.covertocover.com coming up, as the alert that
7745         vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
7746         to screw with our async events.
7748 2009-04-06  Chris Toshok  <toshok@ximian.com>
7750         * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
7751         flesh this method out some.  I don't like the walks we have to do
7752         here.  Also, rename this to *WithError so we can report the error
7753         back to managed land from here instead of doing it in C#.
7755         * cbinding.cpp|.h: regen.
7757 2009-04-06  Chris Toshok  <toshok@ximian.com>
7759         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
7760         in case we didn't notify listeners, output the moon error if there
7761         was one.
7763 2009-04-06  Chris Toshok  <toshok@ximian.com>
7765         * xaml.cpp (value_from_str): quiet spew (which in this case
7766         indicates an error when there isn't one.)
7768 2009-04-06  Chris Toshok  <toshok@ximian.com>
7770         * brush.h: include imagesource.h, not bitmapimage.h
7772         * brush.cpp: include bitmapimage.h here.
7774 2009-04-06  Geoff Norton  <gnorton@novell.com>
7776         * bitmapimage.cpp: Stop leaking the resource here.
7778 2009-04-06  Geoff Norton  <gnorton@novell.com>
7780         * codec-version.h.in: Bump
7782 2009-04-06  Geoff Norton  <gnorton@novell.com>
7784         * application.cpp: We want ToString here, not just the path of the
7785         uri.
7786         * bitmapimage.cpp|h: We need to do this async, since the events
7787         might be registered in managed code before a yield.
7789 2009-04-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7791         * security.c: Add jtr.dll to the list of platform assemblies,
7792           it's an assembly used by managed tests which contains unsafe
7793           code and pinvoke methods.
7795 2009-04-06  Stephane Delcroix  <sdelcroix@novell.com>
7797         * multiscaleimage.h: ad the 3.0 DPs and property accessors
7799 2009-04-05  Chris Toshok  <toshok@ximian.com>
7801         * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
7802         managed subclasses can register a delegate.
7804         * cbinding.cpp|.h: regen.
7806 2009-04-04  Geoff Norton  <gnorton@novell.com>
7808         * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
7810 2009-04-04  Geoff Norton  <gnorton@novell.com>
7812         * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
7814 2009-04-04  Geoff Norton  <gnorton@novell.com>
7816         * media.h: Removed unused define
7817         * mediaplayer.cpp|h: We need to support RGBA video formats now, so 
7818         lets track what the decoder is giving us (pass-thru is the only decoder
7819         which will provide RGBA from MSS, we still pass around yuv and rgb
7820         internally).  If the format is RGBA we have to incur a one-frame penalty
7821         to recreate our cairo surfaces.
7822         * pipeline.cpp|h: Support RGBA pixel formats.  Don't support RGB from 
7823         MediaStreamSource.  Mark the pass-thru frames as decoded.
7825 2009-04-04  Chris Toshok  <toshok@ximian.com>
7827         * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
7829         * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
7830         cbinding.h|.cpp: regen.
7831         
7832 2009-04-03  Chris Toshok  <toshok@ximian.com>
7834         * animation.h: add EasingFunctionProperty to
7835         Color/Double/PointAnimation.
7837         * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
7838         easing function, apply it to progress.
7839         (ColorAnimation::GetCurrentValue): if there's an easing function,
7840         apply it to progress.
7841         (PointAnimation::GetCurrentValue): if there's an easing function,
7842         apply it to progress.
7844         * easing.h, easing.cpp: implementations of all the easing
7845         functions.  still missing are BounceEase and ElasticEase.
7847         * enums.h, enums.cpp (enum EasingMode): new enum.
7849         * Makefile.am: add easing.h/easing.cpp
7851         * type.h, type-generated.cpp, cbinding.h|.cpp,
7852         dependencyproperty.g.cpp, value.h: regen.
7853         
7854 2009-04-03  Geoff Norton  <gnorton@novell.com>
7856         * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
7857         which renders garbage on the screen on amd64.
7859 2009-04-03  Aaron Bockover  <abockover@novell.com>
7861         * cbinding.h:
7862         * runtime.h:
7863         * dependencyproperty.g.cpp:
7864         * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
7865         by Moonlight.Gtk.XamlHost
7867 2009-04-03  Larry Ewing  <lewing@novell.com>
7869         * popup.h:
7870         * popup.cpp: Make sure that we hide any active layers when Child
7871         changes and that we show any new ones.  Fixes part of
7872         PopupExample2.  Give IsOpen a default value.
7874         Regenerate.
7876 2009-04-03  Chris Toshok  <toshok@ximian.com>
7878         * animation.h: remove a couple of ancient (and unused) method and
7879         function declarations, and re-order
7880         public/private/protected (seriously, this makes my eyes bleed.)
7881         Also move the "internal classes" to the end.
7883 2009-04-03  Chris Toshok  <toshok@ximian.com>
7885         * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
7886         since that's for compatability with 1.0, which we no longer are.
7887         
7888 2009-04-03  Alan McGovern  <amcgovern@novell.com>
7890         * textbox.h: TextBox does validation in both the getter and
7891           setter of its TextProperty, so we have to manually implement
7892           it.
7894 2009-04-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7896         * security.c: Include "config.h" to get
7897           MONO_ENABLE_CORECLR_SECURITY.
7899 2009-04-02  Aaron Bockover  <abockover@novell.com>
7901         Do not build code that requires Mono 2.5 or better in the case where
7902         we want Moonlight to run only in an embedded desktop app scenario; in
7903         this case, CoreCLR security and non-default app domains are not needed
7905         * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
7906         is not defined, this function is now a noop
7908         * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
7909         not implement app domain loading/unloading; factor out all common init
7910         code that was duplicated in both ctors into InnerConstructor
7911         
7912         * deployment.h: Define InnerConstructor
7914 2009-04-02  Larry Ewing  <lewing@novell.com>
7916         * uielement.h:
7917         * uielement.cpp: move the bulk of the paint ftb logic from surface
7918         to here since we will be using this in more places.  Make some of
7919         the ftb logic protected now.
7921         * bitmapsource.h:
7922         * writeablebitmap.h:
7923         * writeablebitmap.cpp: Land Geoff's initial Render implementation
7924         with a few changes.
7926         Regenerate.
7927         
7928 2009-04-02  Larry Ewing  <lewing@novell.com>
7929         
7930         * dirty.cpp:
7931         * runtime.h:
7932         * runtime.cpp: Treat full_screen_message as another layer.  Make
7933         sure that we mark layers as loaded.  Popups should render now.
7935 2009-04-02  Alan McGovern  <amcgovern@novell.com>
7937         * runtime.cpp: the real toplevel element must always be at
7938           position 0 in the layers list. Fixes the situation where we
7939           open a popup before setting attaching the surface.
7941 2009-04-02  Stephane Delcroix  <sdelcroix@novell.com>
7943         * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
7944         linear animation, animate for 4 secs instead of .4, use steep spline
7945         to start fast finish smoothly. For botn panning and zooming.
7947 2009-04-02  Alan McGovern  <amcgovern@novell.com>
7949         * popup.h:
7950         * popup.cpp:
7951         * dependencyproperty.g.cpp: The Child property has similar
7952           validation to a ContentControl. Fixes three tests.
7954 2009-04-02  Alan McGovern  <amcgovern@novell.com>
7956         * popup.h:
7957         * popup.cpp:
7958         * dirty.cpp:
7959         * runtime.h:
7960         * cbinding.h:
7961         * runtime.cpp:
7962         * cbinding.cpp:
7963         * dependencyproperty.g.cpp: Popups are treated as top level
7964           elements which are rendered on top of all other elements. To
7965           handle this a list of all toplevel elements (layers) is kept
7966           in the surface. Mouse events are captured within a toplevel
7967           element and not visible to other toplevel elements.
7969 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
7971         * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
7972         not to the center of the control
7974 2009-04-01  Andreia Gaita  <avidigal@novell.com>
7975     
7976         * window-gtk.cpp: Only connect the scroll-event signal if we're
7977         not running on the desktop (otherwise, gecko won't get the
7978         signals)
7980 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
7982         * uri.h: no longer expose GetOriginalString(), it leads to buggy
7983         code.
7985 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
7987         * mediaelement.cpp:
7988         * bitmapimage.cpp:
7989         * deepzoomimagetilesource.cpp: g_free the memory allocated by
7990         uri->ToString()
7992 2009-04-01  Chris Toshok  <toshok@ximian.com>
7994         * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
7995         the (desktop extension -ized) button check here.  this wouldn't be
7996         necessary if the plugin could insert its signal handler before the
7997         window's, but alas, gtk...
7999 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8001         * application.cpp (GetResource): use the uri path, not
8002         originalstring
8004 2009-04-01  Jeffrey Stedfast  <fejj@novell.com>
8006         * expression.cpp|h: Removed from the build.
8007         not running on the desktop (otherwise, gecko won't get the
8008         signals)
8010 2009-04-01  Chris Toshok  <toshok@ximian.com>
8012         * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
8013         extensions are turned on, allow button 3 (right mouse).
8014         (Surface::HandleUIButtonPress): same.
8016         * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
8017         non-button 1 presses here.
8019 2009-04-01  Chris Toshok  <toshok@ximian.com>
8021         * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
8022         sign here so we have the same behavior that lutz's demo expects
8023         from windows.
8025 2009-04-01  Geoff Norton  <gnorton@novell.com>
8027         * uri.cpp|h: Add IsNullOrEmpty
8028         * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
8030 2009-04-01  Geoff Norton  <gnorton@novell.com>
8032         * bitmapimage.cpp: Ensure we deregister the events too.
8034 2009-04-01  Geoff Norton  <gnorton@novell.com>
8036         * bitmapimage.cpp: If the UriSource is changed, then we should abort
8037         and clean up any existing downloaders.
8039 2009-04-01  Geoff Norton  <gnorton@novell.com>
8041         * brush.cpp: ImageSource is a nullable property so we need to new
8042         one up here if we dont have one already.
8044 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8046         * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
8047         and creating cairo surfaces.
8049 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8051         * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
8052         property changed.
8054 2009-04-01  Chris Toshok  <toshok@ximian.com>
8056         * uielement.h (class UIElement): add
8057         MouseRightButton{Down,Up}Event and MouseWheelEvent.
8059         * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
8060         extensions.
8061         (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
8063         * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
8065         * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
8066         wheel action.
8067         (MoonWindowGtk::EnableEvents): connect the scroll-event.
8068         (MoonWindowGtk::InitializeCommon): if desktop extensions are
8069         enabled, add GDK_SCROLL_MASK.
8071         * xaml.cpp (xaml_is_valid_event_name): if we're running with
8072         desktop extensions, expose the right button events and mouse
8073         wheel.
8075         * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
8077 2009-03-31  Jeffrey Stedfast  <fejj@novell.com>
8079         * enums.h: Well what do ya know... TextWrapping enum wasn't the
8080         same as the TextWrapping.cs enum, this is likely the case of some
8081         text layout wonkyness.
8083         * textblock.cpp (TextBlock::MeasureOverride): Set the
8084         ActualWidth/Height DP values here after calling Layout(), this
8085         seems to be what Silverlight does (can't be set in FWE::Measure()
8086         because it doesn't have the actual extents, it just has the
8087         desiredSize). Also don't reset dirty back to true after laying out
8088         the text.
8089         (TextBlock::Layout): Restructured slightly.
8091 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8093         * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
8094         originalstrings aren't updated on Uri::Combine ().
8096 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8098         * bitmapimage.h: Set a DefaultValue for ProgressProperty
8100 2009-03-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8102         * src.mdp: Updated some project files.
8104 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8106         * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages 
8107         added/removed
8109 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8111         * multiscaleimage.h|.cpp: remove the AddTickCall workaround for 
8112         the race while emitting ImageOpenSucceded. Test if the source is
8113         a deepzoom before casting (avoid g_warnings on the console). Change a 
8114         printf to LOG_MSI.
8116 2009-03-30  Chris Toshok  <toshok@ximian.com>
8118         * timemanager.cpp|.h: split this out from clock.cpp|.h
8120         * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
8121         libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
8122         timeline.cpp, uielement.cpp: track the above change.
8124         * Makefile.am: add timemanager.cpp|.h
8126         * cbinding.h, type-generated.cpp: regen
8128 2009-03-30  Geoff Norton  <gnorton@novell.com>
8130         * bitmapsource.cpp: When caching a native surface ensure we dont
8131         destroy it on every GetSurface pass, but we do clean it up in
8132         Invalidate.
8134 2009-03-30  Chris Toshok  <toshok@ximian.com>
8136         * application.h, border.h, contentcontrol.h, control.h,
8137         cornerradius.h, deployment.h, expression.h, frameworkelement.h,
8138         grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
8139         transform.h, type.h, usercontrol.h: remove @SilverlightVersion
8140         metadata attributes.
8143 2009-03-30  Chris Toshok  <toshok@ximian.com>
8145         * downloader.h: add pinvokes for a few of the downloader_* C
8146         functions.
8148         * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
8149         AddTickCall, and remove the manual implementation.
8151         * dependencyobject.h (class EventObject): add a PInvoke for
8152         event_object_get_surface.
8154         * cbinding.h, cbinding.cpp: regen
8156 2009-03-30  Sebastien Pouliot  <sebastien@ximian.com>
8158         * security.c: Ensure mono_assembly_setrootdir is always called
8159         while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
8160         variable and the availability of a platform directory.
8162 2009-03-30  Geoff Norton  <gnorton@novell.com>
8164         * brush.h: Brush.ImageSource is stupid, and of course not consistent
8165         with Image.Source
8166         * bitmapimage.cpp: Nuke some debug spew.
8167         * dependencyproperty.g.cpp: Funky cold medina.
8169 2009-03-30  Larry Ewing  <lewing@novell.com>
8171         * brush.cpp (OnPropertyChanged): check for the right property and
8172         fixup a harmless typo.
8173         
8174         * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
8176 2009-03-30  Jeffrey Stedfast  <fejj@novell.com>
8178         * font.cpp (FontFace::GetExtents): Instead of calculating our
8179         ascent/descent and height values from 2 different ways, calculate
8180         ascent/descent the same way we calculated height. This seems to
8181         give slightly more accurate results (previous logic rounded up to
8182         the nearest whole pixel for ascent/descent).
8184 2009-03-30  Geoff Norton  <gnorton@novell.com>
8186         * media.h: Hide some API that never should have been public.
8187         * media.cpp: ImageBrush no longer uses a image internally.
8188         * bitmapimage.cpp|h: Part name is a const char * since we dup
8189         it here.
8190         * brush.cpp|h: Migrate away from using a Image internally
8191         and consume the new BitmapImage API.
8193 2009-03-30  Geoff Norton  <gnorton@novell.com>
8195         * bitmapimage.cpp: Ensure we fall back to downloading if we 
8196         cannot find the image as a resource.
8198 2009-03-30  Chris Toshok  <toshok@ximian.com>
8200         * deployment.h|.cpp: combing the desktop and browser cases (the
8201         desktop case coming from jeff's patch) into one method, where the
8202         different root_domain behavior is determined by the boolean
8203         argument.
8205         * runtime.cpp (runtime_init): pass an initial boolean to
8206         Deployment::Initialize to tell whether or not we should create the
8207         root domain (i.e. whether or not we should initialize mono.)
8208         (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
8210 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8212         * security.c: Revert latest fix, the buildbots aren't ready
8213           for this yet.
8215 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8217         * security.c: Always call mono_assembly_setrootdir, even if
8218           CoreCLR is disabled. This should fix buildbots where
8219           mono/mcs and moonlight are installed into different
8220           prefixes.
8222 2009-03-30  Geoff Norton  <gnorton@novell.com>
8224         * media.cpp: Stop leaking a cairo pattern in Image::Render
8226 2009-03-30  Stephane Delcroix  <sdelcroix@novell.com>
8228         * deepzoomimagetilesource.cpp: revert latest change, don't advance
8229         twice. Fixes collections.
8231 2009-03-29  Chris Toshok  <toshok@ximian.com>
8233         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8234         add a sanity check here to make sure the autocreated value is of a
8235         compatible type.
8237         * animation.h|.cpp: remove the /*Timeline*/ comments from
8238         everywhere -- stop pretending the type names are the same as WPF.
8240 2009-03-29  Geoff Norton  <gnorton@novell.com>
8242         * media.cpp: Ensure that the ImageSource we get is a BitmapImage
8243         before treating it as such.
8245 2009-03-29  Geoff Norton  <gnorton@novell.com>
8247         * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
8248           writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
8249           imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
8250         Update the image based source to have a properly implemented
8251         BitmapImage.  I've also moved all this code to the SL3 API which
8252         injects a BitmapSource in between ImageSource and BitmapImage,
8253         and adds support for WriteableBitmap.
8255         Basically now all the cairo logic lives in ImageSource and 
8256         BitmapSource.  All the pixbuf loader logics and downloader logic
8257         is isolated in BitmapImage.
8259         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
8260           type.h, value.h: Regenerate  
8262 2009-03-29  Chris Toshok  <toshok@ximian.com>
8264         * provider.h, provider.cpp, dependencyproperty.h: change
8265         AutoCreator signature to take the DependencyObject as the first
8266         parameter.
8268 2009-03-29  Chris Toshok  <toshok@ximian.com>
8270         * dependencyproperty.h|.cpp: rework the autocreate functionality.
8271         instead of a boolean flag, we pass a function pointer.  We keep
8272         IsAutoCreated() around (just func != NULL) and add
8273         GetAutoCreator() so the AutoCreateProvider can call the method
8274         when it needs a value.
8276         Also, remove the empty ctor since it doesn't initialize any
8277         fields (and it also isn't called.)
8279         * provider.h (class AutoCreators): new class, containing the
8280         default autocreator which just calls type->CreateInstance().
8282         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8283         call the property's AutoCreator function if there is one.
8284         (AutoCreators::default_autocreator): new function for the default
8285         case.  basically some code that was ripped out of
8286         ::GetPropertyValue
8288         * dependencyproperty.g.cpp: regen.
8290 2009-03-29  Chris Toshok  <toshok@ximian.com>
8292         * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
8293         tree in OnLoaded, don't do anything at all if we're already
8294         Loaded.
8296 2009-03-29  Chris Toshok  <toshok@ximian.com>
8298         * eventargs.h: consistenfy everything, and make
8299         CollectionChangedEventArgs fields private, not public.  add
8300         accessors.
8302         * dependencyobject.h (PropertyChangedEventArgs): make
8303         old_value/new_value private and add accessors.
8305         * *.cpp|.h: track the above changes.
8306         
8307 2009-03-29  Chris Toshok  <toshok@ximian.com>
8309         * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
8311         * dependencyobject.cpp:, provider.cpp: track above change.
8313 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
8315         * deployment.cpp|h (Initialize): If a platform directory is
8316         specified then we initialize the CoreCLR security model.
8317         * runtime.cpp|h: Initialize the runtime using the plugin
8318         directory (when applicable, i.e. browser mode).
8319         * security.c|h: New. Handle the CoreCLR security model 
8320         initialization and platform code detection.
8321         * Makefile.am: Add security.[c|h] to the build
8323 2009-03-28  Jeffrey Stedfast  <fejj@novell.com>
8325         * frameworkelement.cpp (OnPropertyChanged): Instead of setting
8326         ActualWidth/Height to 0 in the non-LayoutContainer case, use
8327         ClearValue() those properties instead. Fixes some TextBlock cases.
8329         * textblock.cpp (GetSize): Check isnan() rather than 0.
8330         (Render): The dirty flag should never be set at this point, so
8331         don't bother with it. Set TextLayout's AvailableWidth to our
8332         ActualWidth value.
8333         (ArrangeOverride): Don't set dirty back to true after we've
8334         arranged, this is why dirty was true in ::Render()
8336 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8338         * textblock.cpp (Layout): Fixed the special-case logic. If no text
8339         has ever been set, then the extents should be 0,0. However, if
8340         they have ever been set but the text is currently empty, then use
8341         the font height as the ActualHeight value. Use a state variable to
8342         check if the text has ever been set rather than trying to check
8343         other things which are not reliable.
8345 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8347         * size.h (Size::GrowBy): If the width or height are infinite going
8348         in, then leave them infinite going out.
8350         * textblock.cpp (TextBlock::GetSize): New method to get the
8351         TextBlock's size.
8352         (TextBlock::Render): Use GetSize() instead of GetRenderSize().
8353         (class TextBlockDynamicPropertyValueProvider): Same.
8355 2009-03-27  Chris Toshok  <toshok@ximian.com>
8357         * uielement.h (class UIElement): add LostMouseCaptureEvent.
8359         * type-generated.cpp: regen.
8361 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8363         * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
8364         subimage collection items changed.
8366 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8368         * multiscalesubimage.h|.cpp:
8369         * multiscaleimage.cpp: remove the link to msi parents and don't try to
8370         Invalidate from subimage.
8372 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8374         * collection.cpp: do not use generated cbinding in
8375         MultiScaleSubImageZIndexComparer.
8377 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8379         * multiscalesubimage.h: set a default ZIndex value
8381 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8383         * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
8384         update the TextLayout's text and attributes.
8385         (TextBlock::OnPropertyChanged): If the Text or Inlines properties
8386         change, immediately call UpdateLayoutAttributes().
8387         (TextBlock::Layout): No longer sets up the TextLayout's attributes
8388         as this is already done. Also no longer takes a cairo_t argument
8389         since it's never used, instead it now takes a Size constraint
8390         argument.
8391         (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
8392         (TextBlock::MeasureOverride): Rewritten / simplified.
8393         (TextBlock::ArrangeOverride): Same.
8394         (class TextBlockDynamicPropertyValueProvider): Updated.
8395         (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
8396         on the Inline that changed.
8397         (TextBlock::UpdateFontDescriptions): New method to update the font
8398         descriptions on all inlines.
8399         (TextBlock::OnPropertyChanged): Update the font descriptions on
8400         all inlines whenever a font property changes.
8401         (TextBlock::SetFontSource): Call UpdateFontDescriptions().
8402         (TextBlock::DownloaderComplete): Same.
8404         * textbox.cpp (TextBoxView::Render): Set the layout's
8405         AvailableWidth to the render size width.
8406         (TextBoxView::Layout): Don't worry about constraint.width being
8407         INFINITY anymore, TextLayout() now handles INFINITY.
8409         * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
8410         and max width/height constraints, use NAN and
8411         INFINITY (respectively). This will prevent TextBox/Block from
8412         having to use hacks if their width/height constraints are
8413         INFINITY.
8414         (TextLayout::HorizontalAlignment): Since MaxWidth might be
8415         INFINITY, we need to base this on a new property called
8416         AvailableWidth, which is the width available for rendering (where
8417         MaxWidth is only used for wrapping).
8419 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8421         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8422         After finding the baseUri's filename, advance beyond the / before
8423         passing it to uri->Combine().
8425         * uri.cpp (Uri::Combine): If the uri has no path and the
8426         relative_path does not begin with a /, don't prepend one.
8428 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8430         General cleanup of the TextBoxBase abstraction.
8432         * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
8433         of PasswordBox.
8434         (PasswordBox::SyncDisplayText): Generate a masked password string
8435         using the specified PasswordChar.
8436         (PasswordBox::SyncText): Call SyncDisplayText ().
8437         (PasswordBox::OnPropertyChanged): When the PasswordProperty
8438         changes, call SyncDisplayText().
8439         (PasswordBox::GetDisplayText): Override TextBoxBase's to return
8440         our masked password string.
8441         (PasswordBox::ctor): Initialize display text
8442         (PasswordBox::dtor): Delete display text.
8443         (TextBox::GetDisplayText): Simply return GetText ()
8445 2009-03-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8447         * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
8448           double free.
8450 2009-03-27  Jackson Harper  <jackson@ximian.com>
8452         * xaml.cpp: Despite the docs saying differently
8453         (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
8454         sys:Boolean is also legal. (I wonder what else is).
8456 2009-03-27  Jackson Harper  <jackson@ximian.com>
8458         * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
8459         correct value.
8460         - When we are populating the context resource dictionaries we need
8461         to include elements that are resource dictionaries not just
8462         elements have have dictionaries.  This fixes elements looking up
8463         items in their top level RD (like in generic xaml).
8465 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8467         * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
8468         '/', are relative uris.
8470 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8472         * multiscaleimage.cpp: if a tile is already being downloaded, don't
8473         start a 2nd downloader for the same uri.
8475 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8477         * deepzoomimagetilesource.cpp: Uris composed of a single file name
8478         are fine too. don't discriminate !
8480 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8482         * uri.cpp: fix Combine when the original path is a single file,
8483         without a leading '/'
8485 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8487         * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
8488         the overloaded ctor now that we have a proper Uri struct
8490 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8492         * uri.h, uri.cpp: add Combine (const Uri*).
8494 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8496         * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
8498 2009-03-26  Chris Toshok  <toshok@ximian.com>
8500         * deployment.h|.cpp: be a little more fragile (and a lot less
8501         evil) about the way we're exposing Mono types in our headers.
8502         just put a typedef for MonoDomain in deployment.h instead of
8503         including appdomain.h.  Include appdomain.h from deployment.cpp.
8505 2009-03-26  Chris Toshok  <toshok@ximian.com>
8507         * uielement.h|.cpp (class UIElement): add the ability to do
8508         instant and delayed emission of Loaded events.
8509         (UIElement::PostSubtreeLoad): perhaps poorly named, but the
8510         @load_list is a list of UIElement which will be walked in order in
8511         a tick call, emitting OnLoaded on all of them.
8512         (UIElement::EmitSyncLoaded): walk the same list as would be passed
8513         to PostSubtreeLoad, emitting it now.
8514         (UIElement::WalkTreeForLoaded): this does a post-order tree walk
8515         building up the list which is passed to PostSubtreeLoad or
8516         EmitSubtreeLoad.  The out bool parameter tells us whether we
8517         should delay the emission or not. Currently the only thing that
8518         delays emission is a control with a style applied (even a default
8519         style.)  We also set a PENDING_LOADED flag on all elements during
8520         the walk.
8521         (UIElement::OnLoaded): no longer walk the tree here.  only emit
8522         Loaded on this one element.  Clear the PENDING_LOADED flag while
8523         we're at it.
8524         (UIElement::ElementAdded): complicate matters slightly here so
8525         that it follows the following two rules:
8527         1) if @this is loaded, walk the tree and either emit or post the
8528         load based on what the out param tells us to do.
8530         2) if @this is pending_loaded, walk the tree and always post.
8531         
8532         * frameworkelement.h (class FrameworkElement): unfortunately we
8533         need access to "default_style_applied" from UIElement.
8535         * control.h|.cpp: remove OnLoaded implementation from here.
8537         * runtime.cpp (Surface::Attach): move the Loaded handling *after*
8538         the zombie check.  not sure why we were ever doing it before.  but
8539         most importantly, this always Posts the loaded state, it doesn't
8540         emit it synchronously.  This allows us to do the changes in
8541         Application.cs/Deployment.cs that are needed to get ncaa working.
8543 2009-03-26  Chris Toshok  <toshok@ximian.com>
8545         * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
8546         out the code that allows other events to be used.  Maybe in SL3
8547         they'll allow it.
8549 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8551         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8552         from a new TextBoxBase class which handles almost all of the logic
8553         for us.
8555 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8557         * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
8559 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8561         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8562         from a new TextBoxBase class which handles almost all of the logic
8563         for us.
8565 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8567         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8568         Use the new Uri::Combine() method.
8570         * uri.cpp (Uri::Combine): New method to combine a relative path to
8571         an existing Uri.
8573 2009-03-26  Chris Toshok  <toshok@ximian.com>
8575         * animation.cpp, clock.cpp: move some class-static fields around
8576         so they make more sense.
8578 2009-03-26  Chris Toshok  <toshok@ximian.com>
8580         * clock.h: move enum FillBehavior...
8582         * enums.h: ... to here.
8584 2009-03-26  Chris Toshok  <toshok@ximian.com>
8586         * animation2.h: nuke, moving everything into animation.h.
8588         * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
8589         the timesource/timeline stuff into separate files to reduce
8590         clock.cpp's size/complexity a bit.
8592         * mediaplayer.cpp, mediaelement.cpp, media.cpp,
8593         mms-downloader.cpp: track new locations of things (that were moved
8594         out of clock.h|.cpp)
8595         
8596         * cbinding.h, cbinding.cpp, type-generate.cpp,
8597         dependencyproperty.g.cpp: regen.
8598         
8599         * Makefile.am: add/remove files.
8600         
8601 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8603         * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
8604         with an aspect_ratio < 1.0 (portrait images).
8606 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8608         * multiscaleimage.h|.cpp: replace the single downloader code by
8609         a list of downloader, speed up downloading a lot. (Set --arbitrary--
8610         to 6 dlders for now)
8612 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8614         * multiscaleimage.h|.cpp: Download directly from Render*
8616 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8618         * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
8619         as cache key, use the new get_image_uri_func everywhere.
8621 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8623         * tilesource.h:
8624         * deepzoomimagetilesource.h|.cpp: change the signature of
8625         get_image_uri_func. It returns a bool indicating success, the Uri is
8626         now a method arg, and no longer returned as a string pointer. Fixes 
8627         some random crashes with managed tilesoources.
8629 2009-03-25  Chris Toshok  <toshok@ximian.com>
8631         * uri.h (struct Uri): add accessor methods for all of the fields.
8632         The fields are still public for now, since a few places (e.g.,
8633         plugin-debug, playlist), make direct modifications.
8635         * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
8636         glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
8637         accessors when getting values.
8638         
8639 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
8641         * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
8642         hash_tables.
8644 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
8646         * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
8647         argument to enums_int_to_str() anymore.
8649         * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
8650         no longer exists, don't bother checking it. If the target is other
8651         than the Loaded event, we need to treat the whole thing as
8652         Silverlight2 anyway.
8654         * runtime.cpp (Surface::Surface): No longer takes a silverlight2
8655         argument or keeps such a flag.
8656         (Surface::EmitEventOnList): Don't need to care about the
8657         silverlight2 flag.
8658         (Surface::HandleUIKeyPress): Same.
8659         (Surface::HandleUIKeyRelease): Here too.
8661         * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
8662         (enums_int_to_str): Same.
8664         * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
8665         argument.
8666         (value_from_str): Same.
8667         (convert_value_type): Same.
8668         (xaml_set_property_from_str): Same.
8670 2009-03-25  Geoff Norton  <gnorton@novell.com>
8672         * Makefile.am: 
8673         * binding.cpp: 
8674         * binding.h: 
8675         * cbinding.cpp: 
8676         * cbinding.h: 
8677         * frameworkelement.cpp: 
8678         * frameworkelement.h: 
8679         * type-generated.cpp: 
8680         * type.h: 
8681         * value.h: 
8682         * xaml.cpp:  Bindings live 100% in managed land now
8684 2009-03-25  Alan McGovern  <amcgovern@novell.com>
8686         * animation.cpp: Revert the changes in r130133 as they
8687           resulted in double frees of the Value *.
8689 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
8691         * value.cpp (Value::FreeValue): Don't dereference uri if it is
8692         NULL.
8694 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
8696         * multiscaleimage.cpp: emit ViewportChanged
8698 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
8700         * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
8702 2009-03-25  Jackson Harper  <jackson@ximian.com>
8704         * xaml.cpp: Can put this back now that bindings are convertering
8705         strings properly.  Don't try to create a value object if we are
8706         just going into managed anyways.
8708 2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8710         * runtime.h:
8711         * runtime.cpp: Move IsVersionSupported implementation here,
8712           add GetBackgroundColor and sprinkle generator annotations.
8714         * cbinding.h:
8715         * cbinding.cpp: Regenerated.
8717 2009-03-25  Alan McGovern  <amcgovern@novell.com>
8719         * uri.cpp: Scheme was being used uninitialised if the if
8720           (!*start) check succeeded.
8722 2009-03-24  Chris Toshok  <toshok@ximian.com>
8724         * playlist.cpp (PlaylistParser::OnASXStartElement): use
8725         uri->IsScheme()
8726         (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
8728         * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
8729         *scheme)" so we can stop twiddling internals.
8731 2009-03-24  Chris Toshok  <toshok@ximian.com>
8733         * downloader.cpp: s/protocol/scheme for Uris
8735         * playlist.cpp: s/protocol/scheme for Uris
8737         * uri.h, uri.cpp: s/protocol/scheme for Uris.
8739 2009-03-24  Chris Toshok  <toshok@ximian.com>
8741         * uri.cpp: do as much as we can to get isAbsolute set correctly.
8743 2009-03-25  Andreia Gaita  <avidigal@novell.com>
8745         * clock.h: remove unused timeline field
8747 2009-03-25  Andreia Gaita  <avidigal@novell.com>
8749         * clock.cpp: Refresh the clock's duration, it might have changed
8750         after it's creation
8752 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
8754         * value.cpp (Value::Value): If the input value has a NULL uri,
8755         don't call Uri::Copy(), simply set the new uri to NULL too.
8757         * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
8758         members in the 'to' argument. This should never happen anymore,
8759         but if it does, don't allow 'to' to have invalid pointers.
8761 2009-03-24  Jackson Harper  <jackson@ximian.com>
8763         * xaml.cpp: Need to make this a little smarter, revert for now
8764         because it breaks hardrock.
8766 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
8768         * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
8769         actual_height extents if the text is "".
8771         * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
8772         set NULL text on the layout so that we won't crash inside
8773         TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
8775 2009-03-24  Jackson Harper  <jackson@ximian.com>
8777         * xaml.cpp: Don't attempt to convert values if we are going to
8778         managed anyways. This prevents things that can be created easily
8779         from strings being created from expressions.
8781 2009-03-24  Jackson Harper  <jackson@ximian.com>
8783         * animation2.h:
8784         * animation.cpp: Use an OBJECT for the Value property.
8785         * dependencyproperty.g.cpp: Regen
8786         
8787 2009-03-24  Stephane Delcroix  <sdelcroix@novell.com>
8789         * uri.h|uri.cpp: new Equals () methods, so we can use its generated
8790         cbinding as GCompareFunc.
8792 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8794         * pipeline.cpp: Fix breakage.
8796 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8798         * pipeline.h:
8799         * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
8800           gives ready-to-present data. Make it handle pcm, rgb, rgba
8801           and yv12 formats.
8803         * type.h:
8804         * value.h:
8805         * type-generated.cpp: Regenerated.
8807 2009-03-23  Stephane Delcroix  <sdelcroix@novell.com>
8809         * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
8810         changes to keep working
8812 2009-03-23  Jeffrey Stedfast  <fejj@novell.com>
8814         * uri.cpp (Uri::operator==): If all the != compares pass, return
8815         true. Don't let control reach the end of a non-void function!
8817         * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
8818         position changed event.
8820 2009-03-23  Chris Toshok  <toshok@ximian.com>
8822         * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
8823         due to vertigo doing some weird stuff that I don't fully
8824         understand :) but in the interest of not requiring every usage to
8825         include a null check, init originalString to g_strdup("") here.
8827 2009-03-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8829         * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
8830           Dispose.
8832 2009-03-23  Chris Toshok  <toshok@ximian.com>
8834         * uri.cpp (Uri::Copy): return immediately if @from == null.
8836 2009-03-21  Chris Toshok  <toshok@ximian.com>
8838         * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
8839         to Application:GetResource.
8841         * application.[h,cpp] (Application::GetResource): this takes a Uri
8842         instead of a string now.
8844 2009-03-21  Chris Toshok  <toshok@ximian.com>
8846         * uri.[h,cpp]: a few changes:
8847           1. Add "bool isAbsolute" and "char* originalString" fields.
8848           2. Remove Clone and add a static Copy method which Value can use
8849              to copy all the internal fields.
8850           3. Add Free method.
8851           4. make it a struct so we'll only box when explicitly asked to in
8852              Value.cs.
8853           5. add an operator== so we can do non-reference comparisons in
8854              value.cpp
8856         * dependencyobject.h,
8857         dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
8858         remove.
8860         * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
8862         * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
8863         
8864         * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
8865         string.
8866         
8867         * media.cpp: source->GetUriSource() returns a Uri*
8868         
8869         * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
8871         * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
8872         use Uris more.
8874         * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
8875         the Value ctor does that for us.
8877         * xaml.cpp (value_from_str): add Type::URI case, and rework the
8878         Type::BITMAPIMAGE case to use a Uri object.
8880         * validators.[h,cpp]: rename NonNullStringValidator to
8881         NonNullValidator.  All uses before didn't depend on the
8882         "string"-ness of the value, and we can make use of it for the Uri
8883         stuff.
8885         * value.h.in, value.cpp: add Uri support, and remove
8886         Value::Unmarshal.
8888         * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
8889         value.h: regen.
8891         * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
8893 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
8895         * textbox.cpp (TextBoxView::UpdateText): Split out from
8896         TextBoxView::Layout(). Sets the text on the layout engine.
8897         (TextBoxView::Layout): Moved most of the logic into UpdateText()
8898         and the rest into Render(). We now just set the MaxWidth and lay
8899         out the text.
8900         (TextBoxView::Render): If dirty, after calling Layout(), call
8901         UpdateCursor(false) and clear the dirty flag.
8902         (TextBoxView::OnModelChanged): If the text changes, update it
8903         immediately on our layout context by calling UpdateText().
8904         (TextBoxView::SetTextBox): Call UpdateText() here as well and make
8905         it more robust against a NULL textbox argument.
8907 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
8909         * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
8910         context argument since it never actually uses it anyway.
8911         (TextBoxView::MeasureOverride): Don't create a temporary cairo
8912         context since it never gets used.
8913         (TextBoxView::ArrangeOverride): Same.
8915 2009-03-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8917         * pipeline.h:
8918         * pipeline.cpp:
8919         * pipeline-asf.cpp: Re-implement fallback to http when mms
8920           fails.
8922 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
8924         * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
8925         better.
8927 2009-03-20  Jackson Harper  <jackson@ximian.com>
8929         * xaml.cpp: Make sure we go to managed when using property element
8930         syntax for setting properties of managed kinds.
8932 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
8934         * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
8935         larger than the current ActualWidth (and no wrapping has been
8936         done), then no need to re-layout. This should help improve
8937         performance of many cases of TextBox/Block MeasureOverride() and
8938         ArrangeOverride().
8939         (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
8940         set is_wrapped to true.
8941         (TextLayout::LayoutWrap): Same.
8942         (TextLayout::Layout): Reset is_wrapped to false before laying out
8943         the text.
8945 2009-03-19  Larry Ewing  <lewing@novell.com>
8947         * multiscaleimage.cpp (RenderSingle): move the clipping to the
8948         outer loop here too.
8950 2009-03-19  Larry Ewing  <lewing@novell.com>
8952         * multiscaleimage.cpp (RenderCollection): rework the collection
8953         rendering slightly by moving the subimages out of the loop.
8955 2009-03-18  Chris Toshok  <toshok@ximian.com>
8957         * dependencyobject.cpp (unregister_depobj_names): another side of
8958         the TagProperty coin.  don't unregister names from it, since we
8959         aren't registering names from it.
8960         (DependencyObject::SetParent): remove the USERCONTROL extra
8961         registration from here.  it's not necessary now that jackson has
8962         fixed where we register the names.
8964         * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
8965         freeze the default value if the property is not custom.
8967 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
8969         Fixes a crash in the Microsoft.SilverlightControls
8970         ControlsExtended unit tests (specifically the DatePickerTest).
8972         * control.h (class Control): Set a DefaultValue for the Foreground
8973         property.
8975         * textblock.h (class TextBlock): Same.
8977 2009-03-18  Jackson Harper  <jackson@ximian.com>
8979         * xaml.cpp: When we use x:Name to set an elements name, make sure
8980         that it gets set in the namescope of it's containing element.
8981         * dependencyobject.cpp|h: New method that allows setting objects
8982         name in a different namescope, this will also result in the name
8983         being set in the objects namescope.
8984         - Allow duplicate objects if they are the same object
8985         * namescope.cpp: Allow duplicates if they are the same object.
8987 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
8989         * textbox.cpp (TextBox::Initialize): Don't bother connecting to
8990         MouseEnter/Leave, we don't care.
8991         (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
8992         (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
8993         parent TextBox control.
8994         (TextBoxView::OnMouseLeftButtonUp): Same.
8996         * runtime.cpp (Surface::FocusElement): Don't do all the checks
8997         here, they are now done in Control::Focus().
8998         (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
8999         now expect this to be done in the MouseLeftButtonDown event
9000         callback.
9002         * control.cpp (Control::Focus): New method to focus a control.
9004 2009-03-18  Jb Evain  <jbevain@novell.com>
9006         * deployment.cpp: add a MOON_PROFILER environment variable
9007         to control profiling of the embedded mono.
9009 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9011         * pipeline.h:
9012         * pipeline.cpp: Remove unused field.
9014 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9016         * pipeline-asf.cpp: Fix visitmix.
9018 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9020         * debug.h:
9021         * debug.cpp:
9022         * deployment.cpp: Add signal handlers for crash detection in
9023           libmoon instead of libshocker, this way there's not a race
9024           condition between loading mono and installing a signal
9025           handler in libshocker (the signal handler has to get
9026           installed before loading mono, otherwise we'll crash for
9027           real due to managed exceptions getting caught by the signal
9028           handler).
9030 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9032         * pipeline.cpp: More asserts.
9034 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9036         * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
9037         lowercase.
9039 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9041         * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
9042         shadow the fname method argument, and don't leak if
9043         finfo.external_fa has the 4th bit set.
9045 2009-03-17  Chris Toshok  <toshok@ximian.com>
9047         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9048         don't do the SetParent stuff (even when the value is a
9049         DependencyObject) if the property is UIElement::TagProperty.  This
9050         fixes the cyclic tree warning in RichTextBox.  Right now it's
9051         hardcoded to check for that property, but we need to move it to
9052         the DP metadata, and do an audit of other "typeof(object)" DP's to
9053         make sure we aren't setting parent where we shouldn't be.
9055 2009-03-17  Stephane Delcroix  <sdelcroix@novell.com>
9057         * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
9059 2009-03-16  Jackson Harper  <jackson@ximian.com>
9061         * template.cpp: It doesn't really change anything because
9062         templates are never parented, but technically they should be in non
9063         temporary namescopes.
9065 2009-03-16  Jeffrey Stedfast  <fejj@novell.com>
9067         * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
9068         go up/down 'n' lines instead of always 1 if n wouldn't overflow.
9070 2009-03-16  Stephane Delcroix  <sdelcroix@novell.com>
9072         * multiscaleimage.cpp:
9073         * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
9074         it on VP origin or width changed.
9076 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9078         * multiscaleimage.cpp: fix the clipping issue for collections
9080 2009-03-13  Chris Toshok  <toshok@ximian.com>
9082         * type.h, type-generated.cpp: regen.
9084 2009-03-13  Chris Toshok  <toshok@ximian.com>
9086         * xaml.cpp (value_from_str): in the int32 and int64 case, we need
9087         to parse until we get an invalid character, and return the value
9088         parsed up to that point.  it's only an error if there's no valid
9089         characters.
9091 2009-03-13  Chris Toshok  <toshok@ximian.com>
9093         * textblock.h (class Inline): inlines don't permit multiple
9094         parents (Fixes RunTest.RunMultipleParents).
9096 2009-03-13  Geoff Norton  <gnorton@novell.com>
9098         * xap.cpp: Zip files can contain directory entires, we shouldn't
9099         try to open them as files.
9101 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9103         * xaml.cpp:
9104         * control.cpp: Added a null check to prevent crashes.
9106 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9108         * mediaelement.h:
9109         * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
9110           and clean up upon shutdown.
9112         * pipeline.h:
9113         * pipeline.cpp: Remove a broken attempt to ensure that we
9114           don't leave Media threads running after having shut down.
9116 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9118         * playlist.cpp: Dispose: fix a typo - dispose the media not
9119           ourselves.
9121 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9123         * playlist.cpp: DownloadProgressChangedHandler: Don't do
9124           anything if we've been disposed. Fixes a warning. 
9126 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9128         * mediaelement.cpp: Dispose: We need to dispose the media
9129           player too.
9131 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9133         * downloader.h: DownloaderResponse: Add virtual ref/unref
9134           methods.
9136 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9138         * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
9139           crashes when we can't find a time manager. Also if we can't
9140           remove a timeout, we have to leak ourselves, otherwise the
9141           timeout might get called after we're destroyed.
9143 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9145         * deployment.h:
9146         * deployment.cpp:
9147         * type-generated.cpp: Added Deployment::ShuttingDownEvent.
9148           This will be used by MediaElement to ensure that all media
9149           threads are cleaned up even if the MediaElement itself is
9150           leaked.
9152 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9154         * multiscaleimage.cpp: no longer use precompiled table for morton
9155         layout, but use short and fast function in place.
9157 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9159         * multiscaleimage.cpp: check for null tiles uri returned by
9160         get_tile_func
9162 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9164         * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
9165         having to loop over all the tiles on every tick.
9167 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9169         * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
9170           toplevel element before disposing it, since the SetSurface
9171           will be propagated to all descendants, while Dispose will
9172           detach descendants (preventing subsequent SetSurface calls
9173           to reach them).
9175 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9177         * mediaplayer.cpp: Open: when we add an event handler to the
9178           video stream's FirstFrameEnqueued event, the first frame
9179           might already be in the queue, so just call LoadVideoFrame
9180           once always. Fixes test-canvas-no-size.html.
9182 2009-03-12  Geoff Norton  <gnorton@novell.com>
9184         * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
9186 2009-03-12  Geoff Norton  <gnorton@novell.com>
9188         * deepzoomimagetilesource.cpp: Ensure we dont override default values
9189         if nothing has been provided in the XML
9191 2009-03-12  Geoff Norton  <gnorton@novell.com>
9193         * animation.cpp:
9194         * animation.h: Implement SkipToFill
9196 2009-03-12  Larry Ewing  <lewing@novell.com>
9198         * canvas.cpp: don't chain up the FE in the overides that is very
9199         wrong these days.
9201 2009-03-12  Chris Toshok  <toshok@ximian.com>
9203         * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
9204         text demo when you click on the buttons.  we need to be creating
9205         RoutedEventArgs, not EventArgs.
9207 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9209         * codec-version.h.in: Bump.
9211 2009-03-12  Alan McGovern  <amcgovern@novell.com>
9213         * dependencyproperty.cpp: 1) Refactor the code so that
9214           open/closing parens are parsed in a separate step to
9215           typename/property name. Then merge the codepaths for the
9216           default and '(' case.
9217         2) Attached properties can only be specified inside parens. So
9218           "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
9219         3) For non-attached properties both "Rectangle.RadiusX" and
9220           "(Rectangle.RadiusX)" are acceptable.
9222 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9224         * pipeline.cpp: Add a null check.
9226 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9228         * audio.cpp: Use media's thread-safe event handling.
9230         * playlist.h:
9231         * playlist.cpp: PlaylistRoot: keep a reference to our media
9232           player (i.e. don't use MediaElement's media player, it may
9233           change). Use the thread-safe event support in media.
9235         * mediaplayer.h:
9236         * mediaplayer.cpp: Use media's thread-safe event handling.
9237           Don't tick while waiting for the media to get the first
9238           frame, just attach an event handler to
9239           FirstFrameEnqueuedEvent.
9241         * pipeline.h:
9242         * pipeline.cpp: IMediaObject: Add thread-safe event support.
9243           Media: inherit from IMediaObject to get the thread-safe
9244           event support.
9246         * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
9247           ignore ASFReader::Seek's result, handle it correctly.
9248           EnqueueGetFrame: requeue a get frame request if we don't
9249           have enough data yet.
9251 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9253         * pipeline.h: Move IMediaObject above Media so that Media can
9254           inherit from IMediaObject.
9256 2009-03-12  Andreia Gaita  <avdigal@novell.com>
9258         * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
9259         started during the tick event; in some cases the time between these
9260         two calls was enough to have an extra tick on the time manager, and
9261         the DispatcherTimer would be advanced again even though it was
9262         stopped, and this would happen after the Completed handler was
9263         removed and before it was added again.
9264         Fixes the RestartTimer2 test and SilverlightChess.
9266 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9268         * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
9269         brushes here anymore.
9270         (class TextBoxDynamicPropertyValueProvider): Return default
9271         selection brushes if they've been initialized (happens in
9272         TextBoxView::Render).
9273         (TextBoxView::Render): Initialize the selection brushes if they
9274         haven't already been.
9276 2009-03-11  Alan McGovern  <amcgovern@novell.com>
9278         * dependencyproperty.cpp: Fix issues in resolve_property_path
9279           with some complex paths. Add two new NUnit tests which
9280           verify the correct properties are animated.
9282 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9284         * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
9286         * downloader.cpp (downloader_deobfuscate_font): Moved here from
9287         text.cpp and made public.
9289 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9291         * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
9292         to render, no-op.
9294 2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9296         * brush.cpp: ImageBrush::image_failed: we need to ref the
9297           eventargs when we do emit chaining.
9299 2009-03-11  Chris Toshok  <toshok@ximian.com>
9301         * border.cpp (Border::OnPropertyChanged): Border is ever the red
9302         headed stepchild.  It has its own validation wrt SetLogicalParent,
9303         that behaves like the InvalidOperationException case in
9304         FrameworkElement, but throws ArgumentException instead of IOE.
9306 2009-03-11  Chris Toshok  <toshok@ximian.com>
9308         * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
9309         Top/Left property changed handling from OnSubPropertyChanged to
9310         here, and remove OnSubPropertyChanged.  Basically property changes
9311         on items in collections are never communicated back using
9312         OnSubPropertyChanged.  That is reserved for direct children of the
9313         object (fill/stroke brushes, etc.)
9315         * grid.h, grid.cpp: same.
9317         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
9318         remove this use of GetParent (yay!) since we don't implicitly
9319         notify our logical parent if an attached property was changed.  we
9320         just notify all listeners.
9322         * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
9323         rename GetParent/SetParent to GetParentClock/SetParentClock.
9325 2009-03-10  Chris Toshok  <toshok@ximian.com>
9327         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9328         hook up (and unhook) the collection events if the dob is a
9329         Type::COLLECTION.  Remove the stupid parent check that was
9330         breaking everything.  Pass in our MoonError parameter to
9331         OnPropertyChanged so we can communicate it back.
9332         (DependencyObject::ClearValue): unhook from the collection events.
9334         * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
9335         these methods are now in FrameworkElement.
9336         (SetParent, GetParent): their replacements.  Hopefully these are
9337         not long for this world, and I'm working on getting rid of them.
9338         they are used in very few places now (basically collection.cpp and
9339         provider.cpp).
9340         (collection_changed, collection_item_changed): two new
9341         EventHandlers so we can make collection stop calling directly into
9342         its parent.
9343         (OnPropertyChanged): add a MoonError* arg here so we can transmit
9344         errors back from the various OnPropertyChanged overrides.
9345         
9346         * validators.h,
9347         validators.cpp (Validators::ContentControlContentValidator): add
9348         half of the "multiple parents for .Content" checks here.  This
9349         runs before the value is actually set and checks to see if the
9350         logical parent is a Panel subclass.  If it is it throws an
9351         ArgumentException instead of an InvalidOperationException (don't
9352         ask me.)
9354         * collection.cpp, collection.h: remove the assumption that we can
9355         just call into our parent to notify of collection/collection item
9356         changes.  instead just emit an event.
9358         * eventargs.h: define CollectionItemChangedEventArgs for the new
9359         Collection::ItemChangedEvent.
9360         
9361         * contentcontrol.h,
9362         contentcontrol.cpp (ContentControl::OnPropertyChanged): call
9363         SetLogicalParent on the old/new contents if they're
9364         FrameworkElements, and if either returns an error, return
9365         immediately.
9367         * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
9368         same.
9370         
9371         * frameworkelement.cpp, frameworkelement.h: move
9372         Set/GetLogicalParent here, and make the InvalidOperationException
9373         on multiple parents unconditional.
9374         
9375         * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
9376         a FrameworkElement, set its logical parent.
9378         * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
9379         control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
9380         mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
9381         textbox.*, text.*, transform.*, uielement.*: change all the
9382         OnPropertyChanged signatures to include MoonError*
9384         * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
9385         type.h, value.h: regen.
9387         * resources.cpp: s/LogicaParent/Parent.
9388         
9389         * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
9390         not really part of this larger change, but needed for the
9391         toggleref stuff.  we need to call SetParent on all the
9392         DO-subclassed converted values so they never reference a trashed
9393         parent pointer.
9394         (get_parent): add more cases here, none of which I'm sure are
9395         correct.
9397 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9399         * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
9400         (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
9401         chain up to.
9402         (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
9403         so that we don't register event callbacks twice. Doh.
9405 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9407         * validators.cpp (Validators::PasswordValidator):
9408         Removed. PasswordBox::PasswordProperty is internal, so we map it
9409         to TextBox::TextProperty and manually implement the
9410         getter/setter (which si where we manually throw an
9411         ArgumentNullException if set to null).
9413         * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
9414         Password and Text properties sucks, let's not do it. Instead,
9415         we'll map PasswordProperty to TextProperty on the managed
9416         side. Also need to Invalidate() if PasswordChar changes.
9417         (TextBoxView::Layout): Mask the text with PasswordChars if we are
9418         rendering a PasswordBox's content.
9420 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9422         * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
9423         Password properties in sync. Don't emit a PasswordChanged event,
9424         that's mapped to TextChanged on the managed side.
9425         (TextBox::OnApplyTemplate): Handle Border and Panel
9426         ContentElements as well.
9428         * textbox.h (class PasswordBox): Get rid of the
9429         PasswordChangedEvent and also some of the properties that it
9430         shares with TextBox.
9432 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9434         * contentcontrol.cpp (ContentControl::ContentControl): Use the
9435         nice new ManagedTypeInfo ctor.
9437         * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
9439         * textbox.cpp (TextBox::Initialize): New protected method; all of
9440         the old ctor logic was moved here so that PasswordBox could reuse
9441         it.
9442         (TextBox::TextBox): Call Initialize() with out type info.
9443         (PasswordBox::PasswordBox): Call Initialize() with out type info.
9444         (PasswordBox::Cursor*): Override some of TextBox's cursor
9445         navigation because we don't "see" whitespace or lines.
9447 2009-03-10  Larry Ewing  <lewing@novell.com>
9449         * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
9450         isn't found in the template.
9452 2009-03-10  Jackson Harper  <jackson@ximian.com>
9454         * xaml.cpp: Don't use GetLogicalParent here because the parenting
9455         hasn't been setup yet. Wse the XamlElementInstance tree for
9456         figuring out who our parent is.
9458 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9460         * brush.cpp: ImageBrush::image_failed: propagate event args.
9462 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9464         * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
9465         loops into do-while loops so that the line->height and
9466         line->descent get set properly. Needed to fix
9467         TextLayout::GetCursor().
9469 2009-03-10  Jackson Harper  <jackson@ximian.com>
9471         * xaml.cpp: Do some basic type conversion for resources, this
9472         allows you to do things like store a font family as
9473         <clr:String>Arial</clr:String>.
9475 2009-03-10  Jackson Harper  <jackson@ximian.com>
9477         * value.h:
9478         * value.h.in: Consistentify method name.
9479         
9480 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9482         * uielement.cpp: GetTimeManager: if we don't have a surface,
9483           try to get it from the deployment.
9485 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9487         * pipeline-ui.cpp:
9488         * pipeline-nocodec-ui.cpp: Set current deployment in
9489           ResponseEvent.
9491 2009-03-09  Larry Ewing  <lewing@novell.com>
9493         * border.cpp (Render): set the fill rule after drawing the clip
9494         geometry since it will set the fill rule for itself.
9496 2009-03-09  Chris Toshok  <toshok@ximian.com>
9498         * enums.cpp (cursors_map): add the missing Size* members here.
9499         gets the
9500         http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
9501         gallery site to the point where it's displaying a UI.
9503 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9505         * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
9506         caused a segfault.
9508 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9510         * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
9511         and cursor_offset to 0.0. Silverlight doesn't use character column
9512         when moving the cursor up/down, it uses the cursor's x-offset.
9513         (TextBox::CursorDown): Implement using TextLayoutLines.
9514         (TextBox::CursorUp): Same.
9515         (TextBoxView::GetLineFromY): New convenience method.
9516         (TextBoxView::GetLineFromIndex): Another new method.
9518         * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
9519         method.
9520         (TextLayout::GetCursorFromXY): Moved the remaining logic into
9521         TextLayoutLine::GetCursorFromX().
9522         (TextLayout::GetLineFromY): Provide the line index to our caller,
9523         if requested.
9524         (TextLayout::GetLineFromIndex): New convenience method.
9526 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9528         * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
9529         cursor == 0 hack anymore.
9531 2009-03-09  Andreia Gaita  <avidigal@novell.com>
9532     
9533         * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
9534         needs more tests
9536 2009-03-09  Andreia Gaita  <avidigal@novell.com>
9538         * dependencyobject.cpp: do the toggleref callbacks so the managed
9539         side can dispose of things properly
9541 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9543         * layout.cpp (unichar_combining_class): New function to protect
9544         against using Glib's g_unichar_combining_class() if the API isn't
9545         available.
9547 2009-03-09  Jackson Harper  <jackson@ximian.com>
9549         * xaml.cpp: Store the top element in the xaml context so we can
9550         still lookup handlers when parsing templates.
9552 2009-03-09  Stephane Delcroix  <sdelcroix@novell.com>
9554         * multiscaleimage.cpp: fix the loop ending conditions for images
9555         with extreme aspect ratios.
9557 2009-03-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9559         * deployment.cpp: Add support for setting the root directory
9560           using MOON_PATH.
9562 2009-03-06  Larry Ewing  <lewing@novell.com>
9564         * multiscaleimage.cpp (Render): cache the surface type as a
9565         similar surface to the rendering target to speed up rendering a
9566         bit.
9568 2009-03-06  Larry Ewing  <lewing@novell.com>
9569         
9570         * layout.cpp (SetText): handle null text here.
9572 2009-03-06  Geoff Norton  <gnorton@novell.com>
9574         * codec-version.h.in: When we change the layout of 
9575         dependencyobject, we need to bump the ABI
9577 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9579         * clock.h:
9580         * cbinding.h:
9581         * animation.h:
9582         * cbinding.cpp:
9583         * animation.cpp: If the PropertyPath supplied to the
9584           TargetPropertyProperty is a DependencyProperty, we need a
9585           special method to retrieve it. Normally PropertyPaths which
9586           are instantiated with a DependencyProperty are returned as
9587           'null' from native. Also add method for getting the manual
9588           target.
9590 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9592         * clock.h:
9593         * ChangeLog:
9594         * cbinding.h:
9595         * animation.h:
9596         * cbinding.cpp:
9597         * animation.cpp: Revert - I didn't mean to commit that yet.
9598           It's not complete.
9600 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9602         * propertypath.h: Need to null check the path before passing
9603           to strcmp - It is possible for the path to be null now.
9605 2009-03-06  Andreia Gaita  <avidigal@novell.com>
9607         * dependencyobject.[h|cpp]: Add toggleref event registration
9608         and handler
9610         * cbinding.[h|cpp]: regen
9612 2009-03-05  Jeffrey Stedfast  <fejj@novell.com>
9614         * layout.cpp (FindLastWord): We need to walk backwards, not
9615         forewards. Oops.
9617 2009-03-05  Alan McGovern  <amcgovern@novell.com>
9619         * propertypath.h: If we set a propertypath with a
9620           DependencyProperty, set the 'path' string to null. This
9621           avoids extra marshalling when it's not needed.
9623 2009-03-04  Geoff Norton  <gnorton@novell.com>
9625         * deployment.cpp: Finalizing the domain destroys all objects
9626         immediately.  Its possible that we might end up invoking more
9627         finalizers in the unref drain thta begins after dispose, so 
9628         we're going to force a full gc and finalizer run of the collected
9629         objects here and allow ~Deployment to finalize the entire domain.
9631 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
9633         * pipeline.cpp (Media::DisposeObjectInternal): Return
9634         MEDIA_SUCCESS so that control doesn't reach the end of a non-void
9635         function.
9637         * layout.cpp (TextLayout::GetCursorFromXY): Don't use
9638         g_unichar_iszerowidth().
9639         (TextLayout::GetCursor): Same.
9641 2009-03-04  Larry Ewing  <lewing@novell.com>
9643         * border.cpp, border.h: clean up the path_only drawing a
9644         little. set CanFindElement more appropriately.
9646         * panel.cpp: undo the path_only logic a bit.
9648         * frameworkelement.cpp: make FindElementInHostCoordinates a little
9649         simpler.
9651         * uielement.cpp, uielement.h: Make the CanFindElement default be
9652         false, and remove the broken in_stroke check.
9654 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
9656         * multiscaleimage.h|cpp: generate PInvoke for Setters so the
9657         animations are used from managed Set() too
9659 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
9661         * multiscaleimage.h|cpp: pan and zoom animation in
9662         Viewport[Origin|Width] properties Setters
9664 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
9666         * layout.cpp: Disable debug printfs unless layout debugging is
9667         enabled.
9669 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
9671         Fixes the last failing case in LineBreakBasic1.htm
9673         * layout.cpp (layout_word_wrap): When checking for last_word, use
9674         <= instead of < because inptr, at this point, is at the first byte
9675         *after* the character just gobbled up.
9677 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
9679         Fixes ActualWidth/Height extents for LineBreakBasic1.htm
9681         * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
9682         extents include trailing LWSP if-and-only-if that trailing LWSP is
9683         on the last line.
9684         (TextLayout::LayoutNoWrap): Same.
9685         (TextLayout::LayoutWrap): Same.
9687 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9689         * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
9690         NULL.
9692         * font.cpp (TextFont::GetGlyphInfo): If unichar is
9693         0xFEFF (zero-width no-break space), then return a global
9694         GlyphInfo. We do this because at least some fonts won't have this
9695         glyph and we don't want to render an empty box (the default
9696         glyph).
9698 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9700         * layout.cpp (layout_word_wrap): Silverlight ignores breaking
9701         rules for glyphs that the font doesn't contain.
9703 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9705         * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
9706         op.prev up-to-date if we combine chars.
9708 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9710         Fixes a few more cases in LineBreakClasses.htm
9712         * layout.cpp (utf8_find_last_word): If a zero-width space follows
9713         a combining mark, treat the zws as part of a word and not lwsp.
9714         (layout_word_lwsp): Do NOT ignore zero-width characters, let the
9715         font metrics do the talking.
9716         (TextLayout::LayoutNoWrap): Same.
9717         (layout_word_overflow): Same combining-mark fix as above.
9718         (layout_word_wrap): Same. Also changed the way we keep track of
9719         break opportunities. After discoverign that we need to wrap, get
9720         the break-type for the follwoing character before working
9721         backwards. Try to return false if we manage to squeeze the entire
9722         word onto the line anyway.
9724 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9726         Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
9728         * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
9729         (utf8_find_last_word): Use BreakSpace() instead of
9730         g_unichar_isspace() since that's how the rest of our breaking
9731         logic works.
9732         (FindLastWord): Same.
9733         (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
9734         do it for tabs.
9735         (LayoutNoWrap): Same.
9737 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
9739         * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
9740         to Wrap here so that we can avoid a re-layout if the old wrapping
9741         mode was 'Wrap'.
9743 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
9745         Fixes some wrapping issues in LineBreakBasic1.htm
9747         * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
9748         variable to keep track of whether or not the layout_word_wrap()
9749         function returned. We want to keep 'linebreak' as a separate
9750         state. If we were told to wrap, but we've reached the end of the
9751         run, postpone wrapping until the next run (which might start with
9752         lwsp).
9754 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
9756         Fixes for AdobeFonts.htm
9758         * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
9759         its own Fill() so that if any glyphs have a tail that descends
9760         below the baseline into the underline, the fill doesn't negate
9761         itself where the paths overlap.
9762         (GenerateGlyphCluster): Use the font->Ascender() to get the
9763         baseline offset from the top. Height() + Descender() isn't quite
9764         right. Should probably fix other places that use that strategy as
9765         well, but one step at a time.
9767 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
9769         * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
9770         to false.
9771         (TextBoxView::Render): If the selection has changed, update the
9772         selection on the layout engine.
9773         (append_runs): Removed; no longer needed.
9774         (TextBoxView::Layout): Updated to use the new layout APIs.
9775         (TextBoxView::OnModelChanged): When the selection changes, don't
9776         set dirty to true. Instead, set selection_changed to true.
9777         (TextBoxView::SetTextBox): Set the default text attributes on our
9778         layout with the textbox as the source.
9780         * text.cpp (TextBlock::Layout): Updated to use the new text layout
9781         APIs.
9783         * layout.cpp: All new layout/rendering engine.
9785 2009-03-04  Geoff Norton  <gnorton@novell.com>
9787         * deployment.cpp: When we dispose the domain, we force a full GC
9788         run to happen, otherwise objects could retain a ref to the deployment
9789         causing ~Deployment to never be called.
9791 2009-03-04  Jackson Harper  <jackson@ximian.com>
9793         * xaml.cpp|h: Add a new method for grabbing the element_name of a
9794         xaml element instance from managed.
9796 2009-03-04  Alan McGovern  <amcgovern@novell.com>
9798         * src.mdp: Add missing files to the MD solution
9800 2009-03-03  Chris Toshok  <toshok@ximian.com>
9802         * collection.cpp (DependencyObjectCollection::AddedToCollection):
9803         add a check for PermitsMultipleParents here.
9805         * collection.h (UIElementCollection::AddWithError): remove.
9807         * dependencyobject.h (DependencyObject::PermitsMultipleParents):
9808         return true by default.
9810         * style.h (class Setter): setters don't permit multiple parents.
9812         * uielement.h (class UIElement): neither do uielements.
9814         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9815         change the UIElement test to a PermitsMultipleParents test.
9817 2009-03-03  Chris Toshok  <toshok@ximian.com>
9819         * cbinding.h, cbinding.cpp: regen.
9820         
9821         * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
9822         the parent of the DO is a collection, throw an exception.
9823         (UIElementCollection::CanAdd): remove.
9824         (DependencyObjectCollection::CanAdd): remove.
9825         (HitTestCollection::CanAdd): remove.
9827         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9828         reinstate the multiple parents warning, but make it a MoonError,
9829         and make it only apply to visual elements (UIElement subclasses,
9830         specifically).
9832         * dependencyobject.h (GetLogicalParentIncludingCollections): add a
9833         new getter for just the logical_parent field, which is horribly
9834         named.
9835         (GetLogicalParent): add a pinvoke for this.
9837 2009-03-03  Jackson Harper  <jackson@ximian.com>
9839         * xaml.cpp|h: SetProperty now takes a Value instead of a
9840         DependencyObject, this allows us to set properties on things like
9841         enums.
9843 2009-03-03  Geoff Norton  <gnorton@novell.com>
9845         * pipeline.cpp:
9846         * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
9847         file.
9849 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9851         * value.cpp:
9852         * propertypath.h: Complete the implementation of PropertyPath.
9853           If it is constructed with a DependencyProperty in managed,
9854           propagate this to native.
9856         * dependencyproperty.cpp: If the property path instance was
9857           constructed with a DependencyProperty *, immediately return
9858           it.
9860 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9862         * animation.h:
9863         * animation.cpp: Implement the required exceptions for managed
9864           code when starting storyboards which are missing properties
9865           or can't find the target element/property.
9867 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9869         * src.mdp: Add propertypath.h to the MD solution
9871 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9873         * animation.h:
9874         * animation.cpp: Storyboards should always use the surface in
9875           the current deployment when starting. They don't have to be
9876           explicitly attached to a surface - SL2 has different
9877           semantics as compared to SL1 which caused some of the 1.0
9878           tests to flag this as a regression.
9880 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9882         * ChangeLog:
9883         * animation.h:
9884         * animation.cpp: Revert last change. I have the test failing
9885           locally now.
9887 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9889         * pipeline-asf.cpp: Add a null check.
9891 2009-03-03  Alan McGovern  <amcgovern@novell.com>
9893         * animation.h:
9894         * animation.cpp: Storyboards should always use the surface in
9895           the current deployment when starting. They don't have to be
9896           explicitly attached to a surface.
9898 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9900         * dependencyobject.cpp: EventObject::SetSurface: only warn
9901           about wrong thread if we're actually change something.
9903         * mediaplayer.cpp: Call DisposeObject on the media to dispose
9904           the frames.
9906         * pipeline.h:
9907         * pipeline.cpp: Add Media::DisposeObject to have objects
9908           disposed on the media thread.
9910 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9912         * pipeline.cpp: Add a missing base call to Dispose.
9914 2009-03-02  Geoff Norton  <gnorton@novell.com>
9916         * pipeline.cpp: SetSource (uri) is not required to be called before
9917         SetSource (Downloader, PartName) from the javascript API.
9919 2009-03-02  Geoff Norton  <gnorton@novell.com>
9921         * deployment.cpp: Enable signal chaning
9923 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
9925         * textbox.cpp (TextBox::Paste): New method to paste the
9926         contents. Since pasting text is asyncronous, we have to emit our
9927         own events and can't rely on them happening inside OnKeyDown().
9928         (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
9929         false if updating the layout returns false.
9931 2009-03-01  Andrés G. Aragoneses  <aaragoneses@novell.com>
9933         * runtime.cpp: Add an EOL at the end of a printf.
9935 2009-03-01  Jeffrey Stedfast  <fejj@novell.com>
9937         * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
9938         don't want to be exporting these symbols.
9940 2009-02-27  Stephane Delcroix  <sdelcroix@novell.com>
9942         * multiscaleimage.cpp: use the tiles containing the shared thumbs for
9943         the highest levels of DZ collections. Saves a lot of network traffic.
9945 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
9947         * resources.cpp: Simplify (old glib) Clear and use the "right" macro
9949 2009-02-26  Chris Toshok  <toshok@ximian.com>
9951         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9952         more tweaking of inheritance behavior.  if the parentProperty
9953         exists, check the local value, and if it exists, return that.
9954         otherwise return return GetValue.
9956 2009-02-26  Chris Toshok  <toshok@ximian.com>
9958         * border.cpp (Border::OnPropertyChanged): robustificate this a
9959         touch.
9961 2009-02-26  Chris Toshok  <toshok@ximian.com>
9963         * cbinding.h, cbinding.cpp: regen.
9965         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
9966         initialize default_style_appled to false.
9967         (FrameworkElement::SetDefaultStyle): new method, so that the
9968         managed code can set the default style without going through the
9969         CLR property wrapper (and the DP system), since (stupidly, imo)
9970         the default style isn't exposed by the Style property.
9971         (FrameworkElement::Measure): I don't like doing this hear, but
9972         according to dave relyea's blog, templates are applied when
9973         Measure is called.  we could add an internal measure hook so that
9974         this code could live in control.cpp, but for now this hack will
9975         do.
9977         * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
9978         and add the default_style_applied field.
9979         
9980         * control.cpp (Control::OnLoaded): only apply the default style
9981         here if we haven't already (to handle the case where the object is
9982         created programmatically).
9984         * xaml.cpp (end_element_handler): according to the blog post in
9985         the added comment, controls defined in XAML get their default
9986         style applied when the end tag is seen.
9988 2009-02-26  Jeffrey Stedfast  <fejj@novell.com>
9990         * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
9991         return failure.
9992         (TextBuffer::Replace): Don't call Resize() if the replacement text
9993         is shorter than the old subtext because the realloc() would lose
9994         data before we had a chance to shift things into place.
9996 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
9998         * resources.cpp: Fix crash on SLED (old glib) when clearing the 
9999         hashtable (somehow this did not crash before)
10001 2009-02-25  Jackson Harper  <jackson@ximian.com>
10003         * xaml.cpp: Remove some old code that was preventing non-dob
10004         values from being set to native properties.
10006 2009-02-25  Jeffrey Stedfast  <fejj@novell.com>
10008         * textbox.cpp (TextBuffer::Substring): New method to get a
10009         substring.
10010         (class TextBoxUndoAction*): New classes to represent different
10011         types of Undo/Redo actions.
10012         (class TextBoxUndoStack): New Undo/Redo stack class.
10013         (TextBox::TextBox): Initialize undo/redo stacks.
10014         (TextBox): Destroy undo/redo stacks.
10015         (TextBox::KeyPressBackSpace): Record an undo action.
10016         (TextBox::KeyPressDelete): Same.
10017         (TextBox::KeyPressUnichar): Here too.
10018         (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
10019         (TextBox::OnPropertyChanged): Record undo actions for setting
10020         SelectedText and Text properties.
10021         (TextBox::Undo): Undo the most recent action.
10022         (TextBox::Redo): Redo the most recent action.
10024 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10026         * multiscaleimage.h|cpp: return the next tile to download
10027         in RenderSingle, RenderCollection. so the download is triggered
10028         from a single place.
10030 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10032         * multiscaleimage.h|cpp: split Render in RenderSingle,
10033         RenderCollection.
10035 2009-02-24  Chris Toshok  <toshok@ximian.com>
10037         * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
10038         added to the list during emission, we can end up doing the Finish
10039         decrements when we didn't do the Start increments, leading to a
10040         negative events->emitting count.  This causes us to spin in
10041         unref_delayed on shutdown.  Fixes bug #479364.
10043         r: kangaroo.
10045 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10047         * codec-version.h.in: Bump abi version.
10049         * mediaplayer.h:
10050         * mediaplayer.cpp: Handle frames with width/height set, and
10051           change our cairo surface accordingly.
10053         * pipeline.h:
10054         * pipeline.cpp: Add width/height to MediaFrame, to support
10055           frames with different sizes than the initial size specified
10056           in the stream.
10058 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10060         * dependencyobject.cpp: Emit: Add a null check.
10062 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10064         * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
10065         1-pixel-wide line for the cursor... apparently cairo has forsaken
10066         1-pixel-wide lines.
10068 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10070         * layout.cpp (TextLayout::GetCursor): Revert previous round()
10071         change, this isn't the right way to do it.
10073         * textbox.cpp (TextBoxView::BeginCursorBlink): Call
10074         UpdateCursor().
10075         (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
10076         state.
10078 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10080         * multiscaleimage.cpp: remove some debugs, clean the render loops,
10081         cleanly dispose the hashtable and its components
10083 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10085         * layout.cpp (TextLayout::GetCursor): Round the cursor's x
10086         position to the nearest whole number (makes the cursor look
10087         nicer).
10089         * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
10091 2009-02-23  Chris Toshok  <toshok@ximian.com>
10093         * xaml.cpp (value_from_str): handle Type::OBJECT here by just
10094         assuming the value is a string.  Fixes Tag.htm.
10096 2009-02-23  Geoff Norton  <gnorton@novell.com>
10098         * debug.cpp: Don't go poking around in managed land if we don't have
10099         a MonoDomain ()
10101 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10103         * multiscaleimage.cpp: Render () in relative coordinates
10105 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10107         * multiscaleimage.h|cpp: use filename as cache keys
10109 2009-02-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10111         * pipeline.h:
10112         * pipeline.cpp: Only decode on the media thread.
10114 2009-02-23  Alan McGovern  <amcgovern@novell.com>
10116         * uielement.h:
10117         * dependencyproperty.g.cpp: Tag is a System.Object, not a
10118           string.
10120 2009-02-22  Geoff Norton  <gnorton@novell.com>
10122         * pipeline.cpp|h: Add extra_data from managed for AudioStream too
10124 2009-02-22 Geoff Norton  <gnorton@novell.com>
10126         * cbinding.cpp|h: Regen
10127         * pipeline.cpp|h: When constructing a new VideoStream pass the
10128         extra_data from managed.
10130 2009-02-22  Geoff Norton  <gnorton@novell.com>
10132         * pipeline-asf.cpp:
10133         * pipeline.cpp|h: Add some missing codecs.
10135 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10137         * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
10138         actual_width, segment->end, etc - even if all we had was
10139         whitespace. Try to keep better track of this state as well.
10140         (TextLayout::GetCursor): The cursor height is actually the same as
10141         the line height.
10143         * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
10144         (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
10145         false at the end.
10146         (TextBox::OnPropertyChanged): Check for inkeypress so we don't
10147         syncronize things too early (we want to do it in SyncAndEmit() at
10148         the end of OnKeyDown()). Also updated to keep proper emit state.
10149         (TextBox::ClearSelection): Only sync selected text if we aren't in
10150         OnKeyDown().
10151         (TextBox::Select): Same.
10153 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10155         * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
10156         able to resize or false if we failed.
10157         (TextBuffer::*): If Resize fails, return.
10158         (TextBox::CursorPrevWord): Only nagivate back so long as i >
10159         begin. Prevents us from returning -1 when begin is 0.
10160         (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
10161         total number of bytes left after cutting, we only want to memmove
10162         the bytes after the cut point.
10164         * moon-path.c (moon_path_ensure_space): New function to replace
10165         the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
10166         that callers can tell if they have enough space to add the data
10167         they want. Fixed callers to check the return value and return w/o
10168         adding curves, lines, whatever. While this will mean that
10169         Moonlight won't render the path correctly, at least we won't
10170         crash.
10172 2009-02-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10174         * mediaplayer.cpp: Open: Show the first frame upon opening a
10175           video.
10177 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10179         * size.cpp|h: Add FromStr (copied from Point)
10180         * xaml.cpp: Parse Type::SIZE
10182 2009-02-19  Jeffrey Stedfast  <fejj@novell.com>
10184         * stylus.h (class StylusPoint): In managed-land, this class is
10185         actually a struct, so until we find a better way, mark property
10186         accessors for pinvoking.
10187         (class StylusPointCollection): Add AddStylusPoints to the list of
10188         methods to create pinvoke stubs for.
10189         (class StylusInfo): Fixed to have a managed class
10190         autogenerated (internal).
10192         * brush.cpp (VideoBrush::SetSource): Implemented.
10194 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10196         * dependencyobject.cpp|h: The parameter is not needed anymore
10197         since the xaml code was updated to work without using the
10198         logical parent.
10200 2009-02-19  Jackson Harper  <jackson@ximian.com>
10202         * xaml.cpp: Implement StaticResource element syntax.
10204 2009-02-18  Jeffrey Stedfast  <fejj@novell.com>
10206         * geometry.h (class PathGeometry): Don't autocreate the
10207         FiguresProperty until we can figure out why it breaks the PDC
10208         site.
10210 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10212         * mediaelement.h: We always want OnPropertyChanged for
10213           PositionProperty. Fixes seeking to start/0.
10215         * dependencyproperty.g.cpp: Regenerated.        
10217 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10219         * mediaelement.cpp: ctor: Initialize flags correctly.
10221 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10223         * playlist.cpp:
10224         * pipeline.cpp:
10225         * pipeline-asf.cpp:
10226         * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
10227           make sled (glib 2.10) happy.
10229 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10231         * pipeline.h:
10232         * pipeline.cpp:
10233         * playlist.cpp:
10234         * mediaelement.h:
10235         * mediaelement.cpp: Initial implementation of
10236           MediaStreamSource.
10238         * cbinding.h:
10239         * cbinding.cpp: Regenerated.
10241 2009-02-18  Alan McGovern  <amcgovern@novell.com>
10243         * clock.h:
10244         * clock.cpp:
10245         * animation.h:
10246         * animation.cpp: Storyboards are considered 'children' if they
10247           ever were attached as a child of another timeline. The
10248           current status doesn't appear to matter.
10249           (StoryboardTest.RemoveChildThenStart).
10251 2009-02-18  Stephane Delcroix  <sdelcroix@novell.com>
10253         * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
10254         of single images
10256 2009-02-17  Chris Toshok  <toshok@ximian.com>
10258         * text.cpp (TextBlock::TextBlock): remove this hack.
10260 2009-02-17  Chris Toshok  <toshok@ximian.com>
10262         * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
10263         to the SelectedText case, and also don't perform the remaining
10264         operations if g_utf8_to_ucs4_fast fails.
10266 2009-02-17  Jeffrey Stedfast  <fejj@novell.com>
10268         * dependencyobject.cpp: Now takes an only_changed argument; if
10269         true, then only return the properties which have been
10270         changed (plus any values which have been auto-created).
10272         * mediaelement.cpp (MediaElement::MediaElement): Set
10273         BufferingTimeProperty and PositionProperty in the ctor, we can't
10274         use DefaultValue nor AutoCreateValue for these since they need to
10275         be returned by ReadLocalValue() immediately after instantiating a
10276         new MediaElement object.
10278         * media.h (class MediaAttribute): Set managed namespaces for
10279         MediaAttribute and MediaAttributeCollection, we have internal
10280         managed implementations of these now.
10282         * text.h (class TextBlock): Changed default LineHeightProperty
10283         value from NaN to 0.0 (docs say NaN is the default, but not
10284         according to the unit tests).
10286         * textbox.h (class TextBox): Changed default TextProperty value
10287         from "" to null (docs say "" is the default, but not according to
10288         the unit tests).
10290         * media.cpp (Image::Image): Fix the SourceProperty to be
10291         autocreated.
10293         * shape.cpp (Polygon::Polygon): Don't set a point
10294         collection. We'll make it autocreated instead.
10295         (Polyline::Polyline): Same.
10297         * geometry.h (class PathFigure): Set the default value of
10298         IsFilledProperty to true.
10299         (class PathGeometry): AutoCreate the FiguresProperty.
10300         (class PolyBezierSegment): AutoCreate the PointsProperty.
10301         (class PolyLineSegment): AutoCreate the PointsProperty.
10302         (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
10304         * deployment.h (class AssemblyPart): Set the default value of
10305         AssemblyPart::SourceProperty to "".
10307         * mediaelement.h: Set the default value of CurrentState to Closed.
10309         * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
10310         Markers or Attributes properties, these are autocreated.
10312 2009-02-17  Alan McGovern  <amcgovern@novell.com>
10314         * animation.cpp: Missed out on a "!" when changing from
10315           GetIsChild to GetIsRootStoryboard
10317 2009-02-17  Alan McGovern  <amcgovern@novell.com>
10319         * cbinding.h:
10320         * cbinding.cpp: Regenerated
10322         * animation.h:
10323         * animation.cpp: Add *WithError functions so that storyboards
10324           can throw the right exceptions when they are not the root
10325           Storyboard.
10327 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10329         * mediaelement.cpp: Add some null checks.
10331 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10333         * mediaelement.h:
10334         * mediaelement.cpp: Move bitfields into our flags field.
10335           Remove allow_downloads and related methods, no longer used.
10337 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10339         * mediaelement.h:
10340         * mediaelement.cpp: Remove GetDownloaderPolicy, not used
10341           anymore.
10343 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10345         * pipeline.h:
10346         * playlist.h:
10347         * playlist.cpp:
10348         * pipeline.cpp:
10349         * mediaelement.cpp: Make SetSource (Stream) work again.
10351 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10353         * mp3.h:
10354         * mp3.cpp:
10355         * audio.h:
10356         * audio.cpp:
10357         * audio-alsa.cpp:
10358         * pipeline-ffmpeg.h:
10359         * yuv-converter.cpp:
10360         * pipeline-ffmpeg.cpp: Update according to new pipeline api.
10362         * playlist.h:
10363         * pipeline.h:
10364         * pipeline.cpp:
10365         * playlist.cpp:
10366         * mediaplayer.h:
10367         * mediaelement.h:
10368         * pipeline-asf.h:
10369         * mediaplayer.cpp:
10370         * pipeline-asf.cpp:
10371         * mediaelement.cpp:
10372         * mms-downloader.h:
10373         * mms-downloader.cpp: Rework pipeline to be async to support
10374           MediaStreamSource.
10376         * type.h:
10377         * value.h:
10378         * cbinding.h:
10379         * cbinding.cpp:
10380         * type-generated.cpp:
10381         * dependencyproperty.g.cpp: Regenerated.
10383         * codec-version.h.in: Bump codec abi.
10385         * downloader.cpp: Include uri.h.
10387         * downloader.h: Add accessor for failed_msg.
10389         * enums.h:
10390         * enums.cpp: Rename MediaElementState to MediaState.
10392         * mutex.h: Added, a pthread implementation of a mutex allowing
10393           easy c++ usage.
10395         * template.h: Inlcude xaml.h and add a forward declaration of
10396           XamlContext.
10398         * window.h: Add a forward declaration of MoonWindow.
10400         * src.mdp: Updated.
10402         * dependencyobject.h:
10403         * dependencyobject.cpp: Added EVENTHANDLER macro. Added
10404           support for emititng events from other than the main thread
10405           (by marshalling the event emission to the main thread).
10407 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10409         * deployment.cpp: Use printf instead of g_warning for a
10410           message which is always printed. Makes it less annoying to
10411           break on g_log while debugging.
10413 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10415         * type.h:
10416         * value.h:
10417         * type-generated.cpp: Regenerate.
10419 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10421         * pipeline.h:
10422         * pipeline.cpp:
10423         * mediaelement.h:
10424         * mediaelement.cpp: Remove MediaErrorEventArgs.
10426 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10428         * debug.h: Added LOG_MP3.
10430         * runtime.cpp: Surface ctor: set the surface of the current
10431           deployment to the ourself.
10433 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10435         * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
10437         * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
10439 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10441         * runtime.h:
10442         * runtime.cpp: CreateDownloader: take an EventObject instead
10443           of UIElement.
10445 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10447         * runtime.h:
10448         * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
10450 2009-02-17  Atsushi Enomoto  <atsushi@ximian.com>
10452         * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
10453           Fixed type of ArcSegment::Size from Point to Size.
10455 2009-02-16  Jeffrey Stedfast  <fejj@novell.com>
10457         * text.h: Default TextBlock font size seems to be 11px in SL2 as
10458         opposed to 14.667 in SL1.
10460 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10462         * brush.h:
10463         * media.cpp:
10464         * mediaelement.cpp: Move image_brush_compute_pattern_matrix
10465           from media.cpp/mediaelement.cpp to brush.h to avoid having
10466           two declarations of the same method.
10468 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10470         * brush.cpp: Include mediaplayer.h here.
10472 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10474         * dependencyobject.cpp: Change our g_error into a g_warning.
10475           Reffing an object with refcount = 0 can actually happen now.
10477 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10479         * dependencyobject.cpp: AddTickCallInternal: if we don't have
10480           a surface, get it from the deployment.
10482 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10484         * dependencyobject.cpp: EventObject. unref and null out the
10485           deployment in the dtor instead of in Dispose.
10487 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10489         * dependencyobject.h:
10490         * dependencyobject.cpp: Add
10491           DependencyObject::RemoveAllHandlers.
10493 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10495         * animation.cpp: Remove the calls to ref/unref as they are
10496           unnecessary.
10498 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10500         * libmoon.h: Don't include playlist.h here. Fixes issues with
10501           the plugin when playlist.h includes expat.
10503 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10505         * cbinding.h:
10506         * animation.h:
10507         * cbinding.cpp:
10508         * animation.cpp: Implement the managed side of
10509           Storyboard.GetCurrentState ().
10511 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10513         * type.h:
10514         * type.h.in: The renaming changes in r126921 break the build
10515           if the generator is run because type.h.in didn't contain the
10516           CopyProperties prototype.
10518 2009-02-16  Geoff Norton  <gnorton@novell.com>
10520         * media.cpp:
10521         * downloader.h: Downloaders created in javascript can suffer the
10522         same shared-cache firefox bug, so we need to expose the buffer
10523         to the image layer in case this is the place.
10525 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
10527         * dependencyobject.cpp (DependencyObject::GetProperties): New
10528         method to get an array of all properties on the object (including
10529         currently attached properties).
10531         * type.cpp (Type::CopyProperties): Renamed from GetProperties()
10532         and changed what it does a bit. Now takes an 'inherited' argument
10533         and returns a GHashTable of properties keyed by GetHashKey().
10535 2009-02-14  Chris Toshok  <toshok@ximian.com>
10537         * dependencyobject.h, dependencyobject.cpp: rename
10538         "current_values" as "local_values".  current_values now means
10539         "local values + autocreated values".  At this point, add
10540         GetCurrentValues which returns a new hashtable containing a union
10541         of both sets, and add FreeCurrentValues to destroy it.
10543         * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
10544         DependencyObject::GetLocalValues instead of GetCurrentValues.
10546 2009-02-13  Chris Toshok  <toshok@ximian.com>
10548         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10549         fix a number of logical errors.  gets inlines properly inheriting
10550         text properties.
10552 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
10554         * type.cpp (Type::GetProperties): New method to get an array of
10555         DependencyProperties for a Type.
10557 2009-02-13  Geoff Norton  <gnorton@novell.com>
10559         * playlist.cpp: Check these string with g_ascii_str* as well.
10560         Also these should be case-insensitive checks.
10562 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
10564         * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
10565         should be ints, not doubles.
10567         * text.h (class Glyphs): Set the DefaultValues for
10568         UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
10570         * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
10571         SetUriSource("") (it's already the DefaultValue).
10573 2009-02-13  Geoff Norton  <gnorton@novell.com>
10575         * media.cpp|h: Ensure we're comparing magics with unsigned values, and 
10576         fix a logic bug that prevented us from proplery writing progressive pixbuf
10577         loaders.
10579 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
10581         * multiscaleimage.h (class MultiScaleImage): Rename the
10582         SubImageCollectionProperty to SubImagesProperty to match
10583         Silverlight.
10585 2009-02-13  Geoff Norton  <gnorton@novell.com>
10587         * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
10588         behaviour.
10589         * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
10590         does when running in the browser profile.
10592 2009-02-13  Alan McGovern  <amcgovern@novell.com>
10594         * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
10595           than casting to a 64bit then 32bit value.
10597 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10599         * multiscaleimage.h|cpp: drop the friend here too
10601 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10603         * tilesource.h: drop the friends
10605 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10607         * Makefile.am: remove deepzoomimagetilesource.h from the
10608         include_headers. no one should code against it.
10610 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10612         * multiscaleimage.cpp:
10613         * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
10615 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10617         * multiscaleimage.cpp: timing macros
10619 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10621         * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
10622         paint at once to avoid flickering.
10624 2009-02-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10626         * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
10627           a crash when downloading mms streams (due to not having
10628           deployment set).
10630 2009-02-12  Geoff Norton  <gnorton@novell.com>
10632         * playlist.cpp: Ensure that we don't poke around in random memory
10633         if we have an invalid entry in our parser.
10635 2009-02-12  Alan McGovern  <amcgovern@novell.com>
10637         * value.cpp: Add an assert in case the gchandle value is out
10638           of range.
10640 2009-02-12  Alan McGovern  <amcgovern@novell.com>
10642         * value.cpp: Fix compile error on x64 when casting a void* to
10643           a gint32.
10645 2009-02-12  Alan McGovern  <amcgovern@novell.com>
10647         * value.cpp: Managed objects are stored in native as
10648           GCHandles. Use the mono api to get the target of that
10649           GCHandle so that they can be compared correctly in
10650           value.cpp. Remove hack in ItemCollection.cs which worked
10651           around this bug.
10653 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
10655         * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
10656         public, drop a friend.
10657         * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
10658         a friend.
10660 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
10662         * deepzoomtilesource.cpp: some g_ascii love
10664 2009-02-11  Chris Toshok  <toshok@ximian.com>
10666         * text.h: Inline's fontsize default value is 11.  looks like
10667         textblock is the only case where it differs.
10669 2009-02-11  Jeffrey Stedfast  <fejj@novell.com>
10671         * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
10673         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
10674         blink timeout from the GtkSettings.
10675         (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
10676         things seem to have been debugged enough now.
10677         (TextBox::CursorLineBegin): New convenience method.
10678         (TextBox::CursorLineEnd): Same.
10679         (TextBox::OnMouseLeftButtonDown): Implemented double and
10680         triple-click. Capture mouse if single-click.
10681         (TextBox::OnMouseLeftButtonUp): Release mouse capture.
10682         (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
10683         beginning of the line.
10685 2009-02-11  Alan McGovern  <amcgovern@novell.com>
10687         * text.h:
10688         * shape.h:
10689         * media.h:
10690         * panel.h:
10691         * text.cpp:
10692         * border.h:
10693         * panel.cpp:
10694         * shape.cpp:
10695         * textbox.h:
10696         * media.cpp:
10697         * border.cpp:
10698         * textbox.cpp:
10699         * uielement.h:
10700         * uielement.cpp:
10701         * mediaelement.h:
10702         * mediaelement.cpp:
10703         * multiscaleimage.h:
10704         * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
10705           use the ::Render codepaths instead of it's own custom
10706           codepath. Added an extra parameter to ::Render () to specify
10707           whether or not the paths appended to the cairo_t should be
10708           filled/stroked/clipped. This allows a whole bunch of NUnit
10709           tests to pass.
10711         * usercontrol.cpp:
10712         * frameworkelement.cpp: Add an extra parameter to ::Render ()
10713           to specify whether or not the paths appended to the cairo_t
10714           should be filled/stroked/clipped so it can be shared with
10715           the managed hittesting.
10716         Switch FindElementsInHostCoordinates to use the ::Render
10717           codepaths instead of it's own custom codepath. This allows a
10718           whole bunch of NUnit tests to pass.
10720 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10722         * grid.h:
10723         * text.h:
10724         * clock.h:
10725         * panel.h:
10726         * shape.h:
10727         * style.h:
10728         * media.h:
10729         * popup.h:
10730         * brush.h:
10731         * canvas.h:
10732         * border.h:
10733         * stylus.h:
10734         * control.h:
10735         * trigger.h:
10736         * textbox.h:
10737         * geometry.h:
10738         * template.h:
10739         * namescope.h:
10740         * uielement.h:
10741         * animation.h:
10742         * transform.h:
10743         * collection.h:
10744         * downloader.h:
10745         * animation2.h:
10746         * deployment.h:
10747         * bitmapimage.h:
10748         * application.h:
10749         * usercontrol.h:
10750         * mediaelement.h:
10751         * contentcontrol.h:
10752         * multiscaleimage.h:
10753         * frameworkelement.h:
10754         * dependencyobject.h:
10755         * multiscalesubimage.h:
10756         * dependencyproperty.g.cpp:
10757         * deepzoomimagetilesource.h: Make DP backing fields const.
10759 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10761         * grid.cpp:
10762         * text.cpp:
10763         * panel.cpp:
10764         * media.cpp:
10765         * shape.cpp:
10766         * popup.cpp:
10767         * brush.cpp:
10768         * border.cpp:
10769         * canvas.cpp:
10770         * stylus.cpp:
10771         * control.cpp:
10772         * textbox.cpp:
10773         * geometry.cpp:
10774         * uielement.cpp:
10775         * transform.cpp:
10776         * usercontrol.cpp:
10777         * bitmapimage.cpp:
10778         * mediaelement.cpp:
10779         * contentcontrol.cpp:
10780         * dependencyobject.h:
10781         * multiscaleimage.cpp:
10782         * dependencyobject.cpp:
10783         * frameworkelement.cpp:
10784         * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
10785           dp and id fields private and add accessors.
10787 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10789         * type.h:
10790         * grid.h:
10791         * text.h:
10792         * shape.h:
10793         * style.h:
10794         * clock.h:
10795         * brush.h:
10796         * media.h:
10797         * panel.h:
10798         * popup.h:
10799         * grid.cpp:
10800         * canvas.h:
10801         * xaml.cpp:
10802         * type.cpp:
10803         * border.h:
10804         * stylus.h:
10805         * text.cpp:
10806         * media.cpp:
10807         * type.h.in:
10808         * textbox.h:
10809         * shape.cpp:
10810         * panel.cpp:
10811         * trigger.h:
10812         * brush.cpp:
10813         * control.h:
10814         * template.h:
10815         * geometry.h:
10816         * stylus.cpp:
10817         * canvas.cpp:
10818         * border.cpp:
10819         * namescope.h:
10820         * uielement.h:
10821         * control.cpp:
10822         * animation.h:
10823         * textbox.cpp:
10824         * transform.h:
10825         * animation2.h:
10826         * collection.h:
10827         * provider.cpp:
10828         * geometry.cpp:
10829         * downloader.h:
10830         * deployment.h:
10831         * application.h:
10832         * transform.cpp:
10833         * bitmapimage.h:
10834         * usercontrol.h:
10835         * uielement.cpp:
10836         * animation.cpp:
10837         * mediaelement.h:
10838         * usercontrol.cpp:
10839         * mediaelement.cpp:
10840         * contentcontrol.h:
10841         * multiscaleimage.h:
10842         * contentcontrol.cpp:
10843         * frameworkelement.h:
10844         * dependencyobject.h:
10845         * multiscaleimage.cpp:
10846         * dependencyproperty.h:
10847         * multiscalesubimage.h:
10848         * frameworkelement.cpp:
10849         * dependencyobject.cpp:
10850         * dependencyproperty.cpp:
10851         * dependencyproperty.g.cpp:
10852         * deepzoomimagetilesource.h:
10853         * deepzoomimagetilesource.cpp: Change our static
10854           DependencyProperty backing fields to store an integer id
10855           instead of an instance to a DependencyProperty. This way we
10856           can have true per-deployment dependency properties.
10858 2009-02-11  Alan McGovern  <amcgovern@novell.com>
10860         * shape.cpp:
10861         * panel.cpp:
10862         * collection.h:
10863         * usercontrol.h:
10864         * usercontrol.cpp:
10865         * frameworkelement.cpp: Commit some more updates to the
10866           managed hittesting.
10868 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
10870         * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
10871         xchatitis in TextBox.
10873 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
10875         * fontfamily.h (struct FontFamily): Implemented != operator.
10877         * text.cpp (Inline::Equals): Fixed the fontfamily check.
10879         * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
10881         * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
10882         dispose autocreated values too.
10883         (DependencyObject::RemoveAllListeners): Same here.
10884         (DependencyObject::RegisterAllNamesRootedAt): And here.
10885         (DependencyObject::UnregisterAllNamesRootedAt): Here too.
10887 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
10889         * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
10890         GetSubtreeObject so that we can auto-create our Children property
10891         and set it if it hasn't already been set.
10893         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
10894         We need to clear the LocalProvider value as well, if there is
10895         one. Also, don't allow setting a Value* with a null
10896         DependencyObject if it is an autocreate property.
10897         (DependencyObject::ClearValue): Clear the LocalProvider value too.
10898         (DependencyObject::SetSurface): SetSurface on autocreated values too.
10900         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
10901         Now takes another bool arg to specify whether it is allowed to
10902         autocreate new DP values.
10903         (DependencyProperty::Register): Updated.
10904         (DependencyProperty::RegisterFull): Updated, now also takes an
10905         autocreate arg.
10907         * provider.cpp (AutoCreatePropertyValueProvider): A new provider
10908         which sits below DefaultValue.
10910         * *.cpp (*::ctor): Remove calls to SetValue()
10912         * *.h: Added AutoCreateValue where appropriate.
10914 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10916         * color.h: fabs is in math.h.
10918 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10920         * list.h:
10921         * list.cpp: Add a simple ArrayList implementation.
10923         * type.h:
10924         * cbinding.h:
10925         * cbinding.cpp:
10926         * type-generated.cpp:
10927         * dependencyproperty.g.cpp: Regenerated.
10929         * dependencyproperty.h:
10930         * dependencyproperty.cpp: RegisterCustom: removed, no longer
10931           used anywhere. RegisterNull: incorporated into
10932           RegisterFull. Register[Full]: take another Types* argument
10933           so that the registration doesn't have to look it up in the
10934           deployment for every call (this way we can later register
10935           dependency properties in the Types ctor). Also move any
10936           logic from the individial Register overloads to
10937           RegisterFull, this way we don't have different logic
10938           depending on the overload.
10940         * type.cpp:
10941         * type.h.in: Keep a list of all properties for all types on
10942           the Types* instance, and remove the custom properties (hash
10943           and list) on the Type* instance, keeping only one hash
10944           table for both native and custom properties.
10946 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10948         * brush.h:
10949         * runtime.h:
10950         * window-gtk.h:
10951         * downloader.h:
10952         * usercontrol.h:
10953         * file-downloader.h: Only use G_BEGIN/END_DECLS around c
10954           methods (and in files with no c methods remove completely).
10956 2009-02-10  Jackson Harper  <jackson@ximian.com>
10958         * xaml.h|cpp: New method for getting the key of an element
10959         instance.
10960         - Pass the element instance data for the values to set property
10961         when we have one, otherwise pass NULL.
10963 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10965         * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
10966           process: don't check if DPs have been created before
10967           recreating them.
10969 2009-02-10  Alan McGovern  <amcgovern@novell.com>
10971         * border.cpp: Corner rounding is now taken into account when
10972           hittesting a Border
10974 2009-02-10  Fernando Herrera  <fherrera@novell.com>
10976         * value.cpp: Fix GetIsNull call casting in the copy
10977         constructor.
10979 2009-02-09  Chris Toshok  <toshok@ximian.com>
10981         * value.cpp: call SetIsNull everywhere so we can always check
10982         GetIsNull.
10984 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
10986         * border.h:
10987         * shape.cpp:
10988         * border.cpp:
10989         * frameworkelement.cpp: Three more of the NUnit tests are now
10990           passing for FindElementsInHostCoordinates
10992 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
10994         * panel.h:
10995         * shape.h:
10996         * shape.cpp:
10997         * panel.cpp:
10998         * uielement.h:
10999         * frameworkelement.cpp: Commit some more of the hittest code.
11001 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
11003         * type.h.in (class Types): Added a private static field to record
11004         whether or not the static DP's have already been registered.
11006 2009-02-09  Geoff Norton  <gnorton@novell.com>
11008         * deployment.cpp: Support enabling coreclr for moonlight so we
11009         can start dogfooding this.
11011 2009-02-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11013         * deployment.cpp: Remove redundant call to SetObjectType.
11015 2009-02-08  Chris Toshok  <toshok@ximian.com>
11017         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11018         add inheritance of FrameworkElement::DataContextProperty.
11020         * frameworkelement.[cpp,h]: remove all the databinding stuff from
11021         here - it's all handled in managed code now.
11023         * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
11025         * cbinding.[cpp,h]: regen.
11027 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11029         * xaml.cpp: Adjust lookup to find StaticResources defined in 
11030         a ResourceDictionary. re-fix parsing of generic.xaml for the
11031         SL toolkit (unit tests)
11033 2009-02-07  Larry Ewing  <lewing@novell.com>
11035         * border.cpp (Border::ArrangeOverride): 
11036         * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
11037         border children.
11039         * grid.cpp (Grid::MeasureOverride): distribute the allocation
11040         across auto dimensions when it makes sense.
11041         
11042 2009-02-07  Larry Ewing  <lewing@novell.com>
11044         * grid.cpp (Grid::MeasureOverride): don't give our whole
11045         allocation to the first column.
11047 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11049         * stylus.cpp: Committed a variation of Geoff patch to fix
11050         the crash when running moon-unit
11052 2009-02-07  Geoff Norton  <gnorton@novell.com>
11054         * cbinding.cpp|h: Regenerate
11055         * deployment.cpp|h: API cleanup
11056         * downloader.cpp|h: Generate some code that doesn't need to be
11057         hand maintained.  Clean up some API to prevent a crash when
11058         unregistering downloaders.
11060 2009-02-07  Geoff Norton  <gnorton@novell.com>
11062         * color.h:
11063         * cornerradius.h:
11064         * point.h:
11065         * rect.h:
11066         * size.h: Account for an epsilon when comparing these structures
11067         to avoid erroneously emitting false results.
11069 2009-02-07  Jeffrey Stedfast  <fejj@novell.com>
11071         * text.cpp (TextBlock::GetTextInternal): Now takes an
11072         InlineCollection argument.
11073         (TextBlock::OnPropertyChanged): Pass args->new_value to
11074         GetTextInternal() so that we avoid unnecesary recursion in the
11075         case that we're being called as a result of a GetValue() of the
11076         InlinesProperty.
11077         (TextBlock::OnCollectionChanged): Updated.
11078         (TextBlock::OnCollectionItemChanged): Updated.
11080 2009-02-06  Larry Ewing  <lewing@novell.com>
11082         * shape.cpp (Shape::ArrangeOverride): take alignment into account
11083         when Stretch == None.
11085         * media.cpp (Image::ArrangeOverride):
11086         * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
11087         into account when Stretch == None.
11089         * grid.cpp, grid.h: keep track of the automagical w/h make handle
11090         it properly when alignment is not stretch.  Fixes leaf control
11091         placement on "the moment".
11093 2009-02-06  Larry Ewing  <lewing@novell.com>
11095         * type.cpp:
11096         * playlist.cpp:
11097         * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
11099         * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
11101         * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
11102         everywhere.
11104 2009-02-06  Larry Ewing  <lewing@novell.com>
11106         * control.cpp (Control::Control): remove bad setting of
11107         foreground.
11109 2009-02-06  Jackson Harper  <jackson@ximian.com>
11111         * xaml.cpp|h: Add a new method for retrieving the control template
11112         parent of a xaml element instance (called from unmanaged).
11113         - quick hack to force binding expressions to be parsed in managed.
11115 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11117         * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
11118         for *+/- and . to our Key enum needed for the DLR Console app.
11120 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11122         * Reverted previous commit as I goofed the unit test on
11123         Windows. Once I fixed it, the logic I worked so hard to achieve
11124         wasn't correct :(
11126 2009-02-06  Larry Ewing  <lewing@novell.com>
11128         * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
11129         we are the toplevel.
11131 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11133         See InkPresenter's ClearValue unit test
11135         1. Calling SetValue() in ctors was gross.
11136         2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
11137         3. it broke things if ClearValue was used and/or if the properties
11138            were set to null
11140         * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
11141         method to query for a default property value as used by the
11142         PropertyValueProviders.
11143         (DependencyObject::ReadLocalValue): Read the value directly from
11144         the hash table.
11146         * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
11147         Call DependencyObject::GetDefaultValue() to try and get a default
11148         value. If successful, set it on the current_values hash table.
11150         * *.cpp: Fixed all classes that had ctors that called SetValue()
11151         to instead override GetDefaultValue().
11153 2009-02-06  Chris Toshok  <toshok@ximian.com>
11155         * uielement.cpp (UIElement::SetSurface): if we have a subtree
11156         object (which is a UIElement), set its surface too.  Fixes the
11157         ContentPresenter textblocks in ItemsControl.
11159 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11161         * deepzoomimagetilesource.cpp: set subimage width/height
11162         * multiscaleimage.cpp: do not download subimages .xml, we can work
11163         without them
11165 2009-02-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11167         * cbinding.h:
11168         * cbinding.cpp: Regenerated.
11170         * dependencyobject.h:
11171         * dependencyobject.cpp:
11172           DependencyObject::ProviderValueChanged: Add a MoonError
11173           argument to be able to marshal managed exceptions through
11174           native code. ClearValue: Add a MoonError argument to match
11175           the signature of ProviderValueChanged.
11177         * dependencyproperty.h: Make NativePropertyChangedHandler
11178           take a MoonError argument to be able to marshal managed
11179           exceptions through native code.
11181         * error.h:
11182         * error.cpp: Add a gchandle_ptr field to hold managed
11183           exceptions.
11185         * frameworkelement.h:
11186         * frameworkelement.cpp: Update according to ClearValue
11187           signature changes.
11189         * provider.cpp: Update according to ProviderValueChanged
11190           signature changes.
11192 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11194         * morton-layout-table.inc: pre-computed table for Morton Layout 
11195         indices.
11197 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11199         * multiscaleimage.cpp: fix the most annoying rendering issue for
11200         subimages.
11202 2009-02-06  Jackson Harper  <jackson@ximian.com>
11204         * xaml.cpp: Store a list of resource dictionaries on the xaml
11205         context, so control templates can use these to lookup resources.
11206         Also go back to using the XamlElementInstance's for walking up the
11207         tree, this allows us to parse before parenting items.
11209 2009-02-05  Geoff Norton  <gnorton@novell.com>
11211         * deepzoomimagetilesource.cpp|h: We don't want to download all of
11212         the sub images at creation time, so allow them to defer, otherwise
11213         we might fire off hundreds of downloaders at once.
11215 2009-02-05  Jackson Harper  <jackson@ximian.com>
11217         * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
11218         Double).
11220 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11222         * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
11223         to be more consistent with the managed API.
11225         * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
11227 2009-02-05  Geoff Norton  <gnorton@novell.com>
11229         * multiscaleimage.cpp|h: We must emit this event on the main thread
11231 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
11233         * panel.h:
11234         * shape.h:
11235         * border.h:
11236         * cbinding.h:
11237         * uielement.h:
11238         * cbinding.cpp:
11239         * uielement.cpp:
11240         * frameworkelement.h:
11241         * frameworkelement.cpp: Create an unmanaged version of
11242           FindElementsInHostCoordinates
11244 2009-02-05  Geoff Norton  <gnorton@novell.com>
11246         * cbinding.cpp|h:
11247         * dependencyproperty.g.cpp:
11248         * type-generated.cpp: Regenerate
11249         * collection.h: Generate bindings for the multiscalesubimage collection.
11250         * deepzoomimagetilesource.cpp: Trigger a download when we get our URI 
11251         * multiscaleimage.cpp|h: Hide SubImages in a internal property until
11252         we can marshal collections as ReadOnly into managed automatically.
11253         Also emit the ImageOpenSucceeded event when we're done parsing.
11255 2009-02-05  Jackson Harper  <jackson@ximian.com>
11257         * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
11258         So I've added an ignore_case flag that the parser can use.
11260 2009-02-05  Jackson Harper  <jackson@ximian.com>
11262         * type.cpp: As far as I can tell, Type::Find does not need to be
11263         case sensitive. This fixes "Double" being found when we register
11264         it as "double".
11266 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11268         Save some additional state for an optimization I'd like to do.
11270         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
11271         character offset for each TextLine.
11272         (TextLayout::LayoutNoWrap): Same.
11273         (TextLayout::LayoutWrap): Here too.
11275 2009-02-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11277         * deployment.cpp: Fix typo.
11279 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
11281         * frameworkelement.cpp: Reverting r125649 as it's incorrect.
11283 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11285         * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
11286         ClearSelection() because we'll be syncing the SelectedText in
11287         SyncAndEmit() anyway.
11289         * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
11290         exit when inptr >= inend rather than when *inptr == 0.
11291         (TextLayout::GetCursorFromXY): Slightly improved.
11293 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
11295         * dependencyobject.cpp|h: Let GetLogicalParent optionally report
11296         a collection for it's parent. This is needed in some cases like
11297         a Style inside a ResourceDictionary that defines "{StaticResource..."
11298         that other Style needs (e.g. SL toolkit unit tests)
11299         * xaml.cpp: Adjust lookup to find StaticResources defined in 
11300         a ResourceDictionary
11302 2009-02-05  Stephane Delcroix  <sdelcroix@novell.com>
11304         * multiscaleimage.cpp: Renders subimages
11306 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11308         Memory Optimization:
11310         * textbox.cpp (append_runs): Updated. Also fixed a bug which would
11311         sometimes append empty TextRuns to the list.
11313         * text.cpp (TextBlock::Layout): Updated. No longer need to use the
11314         retarded TextRun linebreak ctor.
11316         * layout.cpp (TextRun): Changed TextRuns a bit, all members are
11317         now private but accessors have been added to get the values. Get
11318         rid of the crlf field and ctor params. We also no longer "strdup"
11319         for the ucs4 ctor since TextBox is the only consumer of that API
11320         and it is not constructed using a temp buffer.
11321         (TextSegment): Updated a bit for TextRun changes.
11322         (TextLayout): Updated for TextRun changes.
11324 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
11326         * style.cpp|h: Remove "style-hack" from SetterBaseCollection 
11327         since that collection has no need to know about the style itself.
11328         Simplify the API a bit.
11329         * xaml.cpp: Introduce an hack for SetterBase tp workaround the 
11330         fact that the current parser adds elements to the collections
11331         before setting their properties (and a SetterBase would seal
11332         itself when added to a collection).
11334 2009-02-05  Jb Evain  <jbevain@novell.com>
11336         * propertypath.h: new type.
11337         * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
11338         * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
11339         * animation.h: change type of Storyboard.TargetPropertyProperty
11340         from string to PropertyPath.
11341         * animation.cpp: update accordingly.
11342         * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
11343         * dependecyproperty.cpp: update accordingly.
11344         * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
11346 2009-02-05  Jackson Harper  <jackson@ximian.com>
11348         * xaml.cpp|h: Use the kind for getting content property names.
11350 2009-02-04  Chris Toshok  <toshok@ximian.com>
11352         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11353         fix property inheritance to walk back up the tree (instead of just
11354         looking at the direct parent.)  Also, we can't use the parent's
11355         kind directly, we have to use parent->Is().
11357 2009-02-04  Larry Ewing  <lewing@novell.com>
11359         * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
11360         apply when the final value is not equal to the measured value.
11362 2009-02-04  Jackson Harper  <jackson@ximian.com>
11364         * xaml.cpp|h: When setting properties pass in the
11365         XamlElementInstance.
11366         - Function so named items can be looked up from managed.
11367         * cbinding.cpp|h: regen.
11369 2009-02-04  Aaron Bockover  <abockover@novell.com>
11371         * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
11372         bug where the blue channel was dropped in sc#r,g,b
11374 2009-02-04  Sebastien Pouliot  <sebastien@ximian.com>
11376         * collection.cpp|h: Override AddWithError on UIElementCollection
11377         to return an error on duplicate elements
11379 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11381         * color.cpp (read_next_double): Use g_ascii_strtod().
11382         (color_from_str): Use g_ascii_strcasecmp().
11384         * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
11386 2009-02-04  Larry Ewing  <lewing@novell.com>
11388         * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
11389         case we implement star columns in a matching manor.
11391         * mediaelement.cpp (MediaElement::Render): disable mediaelement
11392         pixel snapping for now, we'll deal with this at a higher level.
11394 2009-02-04  Chris Toshok  <toshok@ximian.com>
11396         * type.cpp (type_is_dependency_object): no need to c&p the entire
11397         method, just call Type::IsSubclassOf with the kinds.
11399 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11401         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
11402         TimeManager's timeout functions instead of calling g_timeout_add()
11403         ourselves.
11405 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11407         * multiscaleimage.cpp: prepare the rendering for subimages.
11409 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11411         * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
11413 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11415         * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
11416         subimage creation.
11418 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11420         * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
11421         to false. Get rid of maxlen state, it's not needed.
11422         (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
11423         class member variable.
11424         (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
11425         useful for mouse events too.
11426         (TextBox::KeyPressFreeze): Removed.
11427         (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
11428         true, get the cursor from the x,y coordinates and update the
11429         selection to be zero-length starting at the cursor position.
11430         (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
11431         (TextBox::OnMouseMove): If we are in the 'selecting' state,
11432         translate current mouse coordinates into a new cursor position and
11433         update selection start/length.
11434         (TextBoxView::GetCursorFromXY): New helper method.
11435         (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
11437         * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
11439 2009-02-04  Jackson Harper  <jackson@ximian.com>
11441         * template.cpp|h: Add a function for creating xaml template
11442         bindings.
11444 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11446         * audio.cpp:
11447         * audio-pulse.cpp: More SetCurrentDeployments.
11449 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11451         * audio.cpp: One more SetCurrentDeployment.
11453 2009-02-04  Alan McGovern  <amcgovern@novell.com>
11455         * frameworkelement.cpp: Fixed hit tests which didn't do what
11456           i meant them to do and added new tests. Panels should not
11457           swallow a click when hit testing, so we should never abort
11458           checking children.
11460 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11462         * multiscalesubimage.cpp: fix the source uri in the subimage
11463         ctor. the source for the subimage is now parsed.
11465 2009-02-04  Alan McGovern  <amcgovern@novell.com>
11467         * type.h:
11468         * value.h:
11469         * cbinding.h:
11470         * uielement.h:
11471         * cbinding.cpp:
11472         * collection.h:
11473         * uielement.cpp:
11474         * collection.cpp:
11475         * type-generated.cpp: Hook up the managed hittesting code to
11476           the native hit testing code.
11478 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
11480         * multiscaleimage.cpp: iterate the collection and not the GList
11481         anymore.
11483 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
11485         * multiscalesubimage.h|cpp:
11486         * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
11487         so we can compute the UriSource based on parent's one
11489 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11491         * collection.cpp: MultiScaleSubImageCollection ctor
11493 2009-02-03  Larry Ewing  <lewing@novell.com>
11495         * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
11496         the toplevel logic.
11498         * usercontrol.cpp: fix missing modification.
11500 2009-02-03  Larry Ewing  <lewing@novell.com>
11502         * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
11503         clip by the margin.
11505 2009-02-03  Geoff Norton  <gnorton@novell.com>
11507         * frameworkelement.cpp (Arrange): If we have a negative margin,
11508         it moves our layout slot, instead of clipping it, as such we need
11509         to adjust the clipping path accordingly in these cases to accomodate
11510         this.
11512 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11514         * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
11515         ReadOnly status afterall.
11516         (TextBoxView::OnModelChanged): Same.
11517         (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
11518         the buffer.
11520         * control.h: Control's default FontSize is 11, not 14.666 like
11521         TextBlock's.
11523 2009-02-03  Larry Ewing  <lewing@novell.com>
11525         * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
11526         when we arrange.  Fixes the rectangle bg on pdc.
11528 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11530         * textbox.cpp (TextBox::OnPropertyChanged): Set the default
11531         SelectionBackground and SelectionForeground brushes if
11532         SelectionLength gets to be >0.
11533         (TextBox::TextBox): Don't set them here. Initialize a new state
11534         variable, cursor_column to 0.
11535         (TextBox::CursorDown): Update cursor_column and fix some
11536         inconsistencies with Microsoft's logic. Renamed and c++'ified from
11537         move_down().
11538         (TextBox::CursorUp): Same idea here.
11539         (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
11540         (TextBox::CursorPrevWord): Same idea.
11541         (TextBox::KeyPress*Down): Save/Restore cursor_column state after
11542         updating SelectionStart/Length properties.
11543         (TextBox::KeyPress*Up): Same.
11544         (TextBox::KeyPressHome): We can set cursor_column to 0 here.
11545         (TextBox::OnPropertyChanged): If Text, SelectedText,
11546         SelectionStart or SelectionLength chanegs, we need to reset
11547         cursor_column to -1 (aka "unknown").
11549 2009-02-03  Larry Ewing  <lewing@novell.com>
11551         * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
11552         and apply the finalsize adjustments to the existing values.
11553         Handle the empty row/col case specially.
11555         * usercontrol.cpp: revert accicdental diabling (for now).
11557 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11559         * textbox.cpp (TextBuffer::Replace): Do the right thing if length
11560         goes beyond the end of the buffer.
11561         (TextBuffer::Cut): Same.
11563         * layout.cpp (RenderSegment): Extend the selection line
11564         Silverlight's TextBox does if the selection crosses over the CRLF
11565         sequence at the end of a line.
11567 2009-02-03  Larry Ewing  <lewing@novell.com>
11569         * border.cpp:
11570         * usercontrol.cpp:
11571         * frameworkelement.cpp: handle the specified size case as well.
11573 2009-02-03  Jb Evain  <jbevain@novell.com>
11575         * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
11576         primitive types.
11578 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11580         * textbox.cpp: Rewrote selection logic and vastly simplified
11581         cursor movement along the way.
11583 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11585         * type.h:
11586         * type.cpp:
11587         * type.h.in:
11588         * dependencyproperty.h:
11589         * dependencyproperty.cpp: Remove the need for
11590           DependencyProperty to be a friend class of Type.
11592 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11594         * multiscalesubimage.h: DefaultValues for DPs.
11596 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11598         * deepzoomimagetilesource.h|cpp:
11599         * multiscaleimage.h|cpp:
11600         * multiscalesubimage.h|cpp: fill the subimages on MSI
11602 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
11604         * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
11605         because that was not part of the API before then (and it breaks
11606         compilation).
11608 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11610         * type.h:
11611         * type.cpp:
11612         * type.h.in: Type: don't make Types a friend class of Type.
11614 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11616         * animation.h:
11617         * animation.cpp: Remove animation_init, it's empty.
11619         * audio.cpp: We need to set the current deployment on the
11620           audio thread (but without touching mono at all).
11622         * cbinding.h:
11623         * cbinding.cpp:
11624         * type-generated.cpp:
11625         * dependencyproperty.g.cpp: Regenerated.
11627         * dependencyobject.h:
11628         * dependencyobject.cpp: Move object accounting and delayed
11629           unref handling to Deployment.
11631         * dependencyproperty.h: Remove DependencyProperty::Shutdown,
11632           it's empty.
11634         * deployment.cpp: Add a SetCurrent overload which allows us
11635           to specify whether the current appdomain should be updated
11636           too. GetCurrent: Never access mono if the current domain is
11637           NULL. Move object tracking and delayed unrefs here.
11639         * deployment.h: Add a SetCurrent overload which allows us to
11640           specify whether the current appdomain should be updated
11641           too. Move object tracking and delayed unrefs here.
11643         * runtime.cpp: Move object tracking reports to Deployment.
11644           Remove unnecessary static init and shutdown methods.
11646         * type.h:
11647         * type.cpp:
11648         * type.h.in: Completely remove all static Type
11649           initialization, we now rely on the Types* on the current
11650           Deployment.
11652 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
11654         * style.cpp: Remove extra logic and comment the main "bad" hack
11655         still required not to cause regressions. Affected test cases
11656         will marked as known issues until the XAML parser issue (which
11657         is adding elements to collections before setting their properties)
11658         is fixed.
11660 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11662         * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
11664 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11666         * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
11667           destruction the name might not be available anymore, so
11668           loop over the entire hash tables looking for the object to
11669           remove instead of trying to lookup with a null key. Fixes a
11670           crash while running moon-unit.
11672 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11674         * xaml.cpp: Use property accessors on Type instead of
11675           accessing the fields.
11677 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11679         * debug.h:
11680         * runtime.h|runtime.cpp: new LOG_MSI macro.
11682 2009-02-03  Fernando Herrera  <fherrera@novell.com>
11684         * runtime.cpp:
11685         * runtime.h: Move moonlight_flags and runtime_flags to 64bits
11686         as we reached the 32bits limit for debug.
11688 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11690         * deepzoomimagetilesource.h|cpp: Parse Collections.
11692 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11694         * deepzoomimagetilesource.h|cpp: data structures to parse
11695         DZ images with subimages. Move the common parts of both ctors
11696         in Init ()
11698 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11700         * tilesource.h:
11701         * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
11702         some methods and fields to the private section.
11704 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11706         * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
11708 2009-02-02  Chris Toshok  <toshok@ximian.com>
11710         * popup.h, popup.cpp: this inherits from FrameworkElement, not
11711         DependencyObject.
11713         * dependencyobject.cpp (dispose_value): this method is doing *way*
11714         too much.  we can't just blindly dispose of our values.  they
11715         could be shared across multiple elements.  don't even unref them
11716         here, as deleting the value does that.
11718         * type-generated.cpp: regen.
11720 2009-02-02  Larry Ewing  <lewing@novell.com>
11722         * mediaelement.cpp:
11723         * media.cpp (Image::UpdateSize): update horrible hacks that are
11724         used when we are part of canvas until they can be removed
11725         completely
11727 2009-02-02  Larry Ewing  <lewing@novell.com>
11729         2009-02-02  Chris Toshok  <toshok@ximian.com>
11731         * enums.cpp (keyboard_navigation_mode_map): add
11732         (initialize_enums): add TabNavigation property handling, mapping
11733         to keyboard_navigation_mode_map.
11735 2009-02-02  Geoff Norton  <gnorton@novell.com>
11737         * bitmapimage.h: 
11738         * xaml.cpp: Inject ImageSource underneath BitmapImage so that
11739         custom xaml that attaches a ImageSource can work.  Every
11740         ImageSource is a BitmapImage in SL2
11741         * type-generated.cpp:
11742         * type.h:
11743         * value.h: Regen
11745 2009-02-02  Larry Ewing  <lewing@novell.com>
11747         * border.cpp:
11748         * usercontrol.cpp:
11749         * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
11750         stretch back out to finalsize in the stretch case.
11752 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
11754         * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
11755         int because, duh, the range is -2 to 1, not 0 to 3 and so
11756         TextLine::crlf was being set to -2 instead of 2.
11757         (TextLayout::GetCursor): A minor tweak to get things to work if
11758         the cursor is right after the last char which is a \r.
11760         * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
11761         before.
11762         (move_down): Need to use a loop when advancing back to the
11763         previous column so we don't go beyond EOL.
11764         (move_up): Same, but more fixes as well.
11766 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
11768         * textbox.cpp: Moved all event handling back to TextBox since
11769         that's the focusable element.
11771         * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
11772         first Control subclass that we can focus.
11774 2009-02-02  Sebastien Pouliot  <sebastien@ximian.com>
11776         * dependencyproperty.g.cpp:Regenerated
11777         * style.cpp|h: Use validators on Setter instead of overriding
11778         SetValueWithErrorImpl on SetterBase
11779         * validators.cpp|h: Addvalidator for checking sealed Setter
11781 2009-02-02  Larry Ewing  <lewing@novell.com>
11783         * border.cpp (Border::Render): don't fill the whole are with the
11784         border brush only fill the BorderThickness.  
11786 2009-02-02  Larry Ewing  <lewing@novell.com>
11788         * textbox.cpp, textbox.h: first pass at implementing arrange and
11789         measure.
11791         * text.cpp: request with padding too.
11793 2009-02-02  Chris Toshok  <toshok@ximian.com>
11795         * textbox.h (class TextBox): store the contentElement as an
11796         instance field so we can update it in OnPropertyChanged.
11798         * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
11799         disgusting, and *SHOULD* be handled in the textbox template, but
11800         we can't handle it in ours in case people replace it.  if the
11801         ContentElement template child has DP's named
11802         VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
11803         them based on the value of ours.
11804         (TextBox::OnPropertyChanged): handle property changes on our
11805         VerticalScrollBarVisibility/HorizontalScrollBarVisibility
11806         properties by proxying them to our contentElement.
11808 2009-02-02  Alan McGovern  <amcgovern@novell.com>
11810         * media.cpp:
11811         * bitmapimage.cpp: Image.Source defaults to a BitmapImage
11812           with a uri of string.empty.
11814 2009-02-02  Chris Toshok  <toshok@ximian.com>
11816         * rect.h (struct Rect): we can be Grown by a negative amount. make
11817         sure we don't drop below 0 on width/height, since everything blows
11818         up when we do.
11820 2009-02-02  Alan McGovern  <amcgovern@novell.com>
11822         * bitmapimage.h:
11823         * dependencyproperty.g.cpp: The default value for
11824           Bitmap.ImageSource is an empty string.
11826 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
11828         * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
11829         events when the selection or text changes. TextBoxView cannot
11830         depend on getting those events if things are changed
11831         programatically.
11832         (TextBox::KeyPressThaw): Don't ever bother with emitting
11833         ModelChanged events here, they'll be emitted in
11834         OnPropertyChanged(), now.
11835         (TextBoxView): We no longer listen to TextChanged or
11836         SelectionChanged events.
11837         (TextBoxView::ResetCursorBlink): New method to do all of the
11838         proper state checking to see if the cursor should be rendered
11839         which calls the appropriate Begin/Delay/EndCursorBlink() method.
11840         (TextBoxView::OnModelChanged): Updated to handle Text and
11841         Selection changes. Dropped CursorPosition because it is no longer
11842         necessary.
11843         (TextBoxView::OnFocusIn): Set focused to true before calling
11844         ResetCursorBlink().
11845         (append_runs): Don't forget to append the LineBreak to the Runs
11846         list.
11847         (TextBoxView::SetTextBox): Need to sync some additional state.
11849 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11851         * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
11852           already be in one, and DrainUnrefs isn't recursive anymore.
11854 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11856         * src.mdp: Updated to use new MD features (ChangeLog and log
11857           message policy).
11859 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
11861         * deepzoomimagetilesource.h|cpp: add a parsed_callback.
11862         * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
11863         immediately.
11865 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
11867         * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
11868         in GetTileLayer for missing tiles.
11870 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
11872         * multiscaleimage.cpp: render lower layer if the current layer
11873         contains NULL tiles.
11875 2009-02-02  Chris Toshok  <toshok@ximian.com>
11877         * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
11878         correct apparent c&p error.
11880 2009-02-01  Larry Ewing  <lewing@novell.com>
11882         * control.cpp, control.h:
11883         * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
11884         MeasureOverride here from control where they are only used for
11885         binding.
11887 2009-02-01  Larry Ewing  <lewing@novell.com>
11889         * thickness.cpp (Thickness::FromStr): 
11890         * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
11891         that will cause the rest to be filled with 0.  Fixes parsing of
11892         single value entries.
11894         * frameworkelement.cpp: arrange based on the adjusted rect.
11896 2009-02-01  Chris Toshok  <toshok@ximian.com>
11898         * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
11899         the ApplyTemplate gunk here, as the template doesn't change when
11900         our content does - the ContentPresenter in our control template
11901         will changed based on our content.
11903         * xaml.cpp (dependency_object_set_attributes):
11904         handle_xaml_markup_extension has three possible return states.
11905         "Need SetValue", "Don't SetValue", and "Error".  the bool return
11906         value is the first two (true == need_setvalue), and p->error_args
11907         determines the last one.
11908         (handle_xaml_markup_extension): add a comment detailing the
11909         need_setvalue return value, and make the return values consistent.
11910         TemplateBindings are weird in that they don't (for now) set a
11911         value, but require that we don't continue on with the set value
11912         machinery in dependency_object_set_attributes.
11914         Also, the TemplateBinding handling in the case of
11915         Property1={TemplateBinding Property2} was attaching things such
11916         that updates to source.Property1 would update target.Property2.
11917         This is exactly backward - it should have been source.Property2 =>
11918         target.Property1.  We got lucky in a vast number of instances
11919         because the property names were the same.
11921 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
11923         * style.cpp: Revert first part (always seal) of last patch due to
11924         regressions.
11926 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com>
11928         * style.cpp: Always seal setters when added to collection (unit 
11929         tested) and unrelated to style (which may not be assigned, SIGSEGV)
11931 2009-01-31  Geoff Norton  <gnorton@novell.com>
11933         * animation.cpp: Its possible for a Storyboard to have TargetName
11934         and TargetProperty set, but be unresolvable, and still use a parent
11935         manual target (See Axelerate3D).
11937 2009-01-31  Chris Toshok  <toshok@ximian.com>
11939         * collection.h, collection.cpp (class UIElementCollection):
11940         UIElements can be reparented logical parent-wise, but can't have
11941         more than one *visual* parent.
11943 2009-01-31  Larry Ewing  <lewing@novell.com>
11945         * border.cpp:
11946         * control.cpp:
11947         * frameworkelement.cpp: rather than trying to fix the rendering
11948         fix the layout_xform to handle margins automatically.
11950 2009-01-31  Larry Ewing  <lewing@novell.com>
11952         * border.cpp (Border::Render): try to match the interior
11953         CornerRound behavior a littler closer.
11955 2009-01-31  Larry Ewing  <lewing@novell.com>
11957         * rect.cpp (Rect::Draw): fix typo in rect drawing.
11959 2009-01-31  Larry Ewing  <lewing@novell.com>
11961         * cornerradius.h: add == and != overloads.
11963         * uielement.cpp: don't include the layout clip if we are
11964         tranforming the bounds.  The layout clip only applies to local
11965         space.
11967         * border.cpp: restore the graphics context after clipping.
11969 2009-01-31  Larry Ewing  <lewing@novell.com>
11971         * rect.cpp, rect.h: move the rounded drawing here for now until
11972         there is a better place.
11973         
11974         * border.cpp: start drawing the borderbrush and using border
11975         thickness.
11976         
11977 2009-01-31  Larry Ewing  <lewing@novell.com>
11979         control.cpp: fix arranged size with border thickness or padding.
11981         border.cpp: fix arranged size with border thickness or
11982         padding. fix rendering with margins.
11984         panel.cpp: fix rendering with a margin.
11986 2009-01-31  Larry Ewing  <lewing@novell.com>
11988         * border.cpp (Border::Render): add corner radius rendering logic
11989         here for now.
11991 2009-01-31  Stephane Delcroix  <sdelcroix@novell.com>
11993         * multiscaleimage.h|cpp: ensure there's only one downloader running,
11994         fixes the issue where wrong images were cached.
11996 2009-01-31  Sebastien Pouliot  <sebastien@ximian.com>
11998         * contentcontrol.h: Add @CallInitialize so the event gets
11999         registred (in the managed side) and we can now track content
12000         changes.
12002 2009-01-30  Geoff Norton  <gnorton@novell.com>
12004         * textbox.cpp: FontFamily is now a FontFamily not a string.
12006 2009-01-30  Chris Toshok  <toshok@ximian.com>
12008         * xaml.cpp: fix ResourceDictionary once and for all.
12010 2009-01-30  Geoff Norton  <gnorton@novell.com>
12012         * deployment.cpp|h: Ensure that any downloaders that might
12013         call back into managed land are aborted before we throw out the
12014         domain.
12015         * downloader.cpp|h: Add a nice interface to DownloaderRequest
12016         and DownloaderResponse to save some code duplication in deployment
12018 2009-01-30  Geoff Norton  <gnorton@novell.com>
12020         * mediaelement.cpp:  If we finish downloading before we can
12021         fill the buffer, we still need to emit this event.
12023 2009-01-30  Chris Toshok  <toshok@ximian.com>
12025         * usercontrol.h (class UserControl): make managed access to
12026         ContentProperty protected internal, not just protected.
12028         * dependencyobject.h (class DependencyObject): generate a
12029         cbinding/pinvoke for SetLogicalParent.
12031         * cbinding.h, cbinding.cpp: regen.
12033 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12035         * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
12036         SelectionStart/Length.
12038 2009-01-30  Geoff Norton  <gnorton@novell.com>
12040         * runtime.cpp: Let managed code change the fullscreen state.
12041         * cbinding.cpp|h: Regenerate
12043 2009-01-30  Chris Toshok  <toshok@ximian.com>
12045         * xaml.cpp (dependency_object_set_property): remove the ugly
12046         assumption - we know if the property type is managed now.
12048 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12050         * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
12051         state rather than returning a changed mask. Also modified to treat
12052         selection.start as the cursor position when selection.length is
12053         0. Otherwise refer to the cursor state to figure out which end of
12054         the selection the cursor is at (for growing/shrinking).
12055         (TextBox::KeyPressFreeze): Reset 'emit' state.
12056         (TextBox::KeyPressThaw): Sync and then emit our changed events.
12057         (TextBox::OnPropertyChanged): Updated for ClearSelection() API
12058         change.
12059         (TextBox::ClearSelection): Now takes a 'start' argument to set
12060         SelectionStart to (e.g. cursor position).
12061         (TextBox::Select): Now longer needs to do a freeze/thaw.
12062         (TextBoxView::OnKeyDown): Updated.
12064 2009-01-30  Chris Toshok  <toshok@ximian.com>
12066         * control.h, control.cpp: same story with InsideObject.
12068 2009-01-30  Chris Toshok  <toshok@ximian.com>
12070         * control.h, control.cpp: remove Control::Render.  handling of the
12071         background property is left to a templatebinding in the visual
12072         tree of the applied template.
12074 2009-01-30  Chris Toshok  <toshok@ximian.com>
12076         * provider.cpp (StylePropertyValueProvider::SealStyle): call
12077         ProviderValueChanged on all values in the style so the object can
12078         do things with them.
12080         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
12081         a comment about SealStyle calling ProviderValueChanged.
12083 2009-01-30  Chris Toshok  <toshok@ximian.com>
12085         * xaml.cpp: when parsing multiple buffers (as we do when hydrating
12086         from a template), we need to keep track of the total offset from
12087         the start of all buffers, since XML_GetCurrentByteIndex returns a
12088         value with that range, it's not the byte index into the current
12089         buffer (unless there's only 1).  Fixes templates stored inside of
12090         other templates.
12092 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12094         * clock.cpp: no use stopping if it's already stopped
12096 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12098         * clock.cpp: reset the state flags as well
12100 2009-01-30  Larry Ewing  <lewing@novell.com>
12102         * text.cpp (TextBlock::Render): Start taking padding into account
12103         and limit the max size to actual not to the arranged value.
12105 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12107         * textbox.h (TextBox::GetCursor): Cursor position is aka
12108         selection.start.
12110         * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
12111         (TextBox::Thaw): Decrement freeze count and emit events when we
12112         reach 0.
12113         (TextBox::OnPropertyChanged): When SelectionStartProperty or
12114         SelectionLengthProperty change, call SyncSelectedText(). Fixed the
12115         selection.start/cursor positioning logic when TextProperty or
12116         SelectedTextProperty changes.
12117         (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
12118         methods.
12120 2009-01-30  Larry Ewing  <lewing@novell.com>
12122         * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
12123         computation.
12125 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12127         * frameworkelement.cpp: Make sure bounds_with_children is always
12128         initialized before being used.
12130 2009-01-30  Geoff Norton  <gnorton@novell.com>
12132         * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
12133         media.  Fixes the thumber moving on PDC player.
12135 2009-01-30  Jackson Harper  <jackson@ximian.com>
12137         * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
12138         about them being legal if they are equal.
12140 2009-01-30  Larry Ewing  <lewing@novell.com>
12142         * grid.cpp (Grid::ArrangeOverride): hack around spans in
12143         rebuilding the table until we understand them better.
12145 2009-01-30  Larry Ewing  <lewing@novell.com>
12147         * frameworkelement.cpp:
12148         * border.cpp:
12149         * control.cpp (Control::ArrangeOverride): use alignment properly
12150         in these places as well
12152 2009-01-30  Larry Ewing  <lewing@novell.com>
12154         * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
12155         the alignment here.
12157 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12159         * multiscaleimage.cpp: load png too
12161 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12163         * multiscaleimage.cpp: change the vporigin to relative coords
12165 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12167         * dependencyobject.cpp: EventObject::unref: don't try to get the
12168         typename if there's no deployment around.
12170         * pipeline.cpp: Media::Shutdown: set the current deployment before
12171         looping over each media.
12173 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12175         * deployment.cpp: Remove dead code.
12177 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12179         * downloader.cpp: Downloader::Write: update current deployment.
12181 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12183         * mp3.cpp:
12184         * audio.cpp:
12185         * pipeline.cpp:
12186         * mediaplayer.cpp:
12187         * audio-pulse.cpp:
12188         * mediaelement.cpp:
12189         * pipeline-asf.cpp:
12190         * mms-downloader.cpp:
12191         * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
12193 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12195         * deployment.cpp: Comment out log spammer.
12197         * runtime.cpp: Add some sanity checks.
12199         * dependencyobject.cpp: Set current deployment for delayed unrefs too.
12201 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12203         * deepzoomimagetilesource.cpp: normalize ViewportWidth
12205 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12207         * cbinding.cpp|h: Regenerated
12208         * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
12209         * rect.h: Add new ctor so the generator code can work
12211 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12213         * tilesource.h|cpp:
12214         * deepzoomimagetilesource.h|cpp:
12215         * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
12216         implement the DZ parser in native code.
12218 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12220         * mediaplayer.cpp: MediaPlayer: Set object type correctly.
12222 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12224         * deployment.cpp: Allow setting the current deployment to NULL.
12226 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12228         * mediaelement.cpp: Handle MediaElementStateIndividualizing and
12229         AcquiringLicense in all switch statements to fix gcc warnings.
12231 2009-01-30  Geoff Norton  <gnorton@novell.com>
12233         * debug.cpp: Use the proper headers here, we need them anyways.
12234         * window.h: Store the deployment we were created in.
12235         * window-gtk.cpp: Ensure we set our deployment before starting
12236         to call into our heirarchy.
12238 2009-01-30  Jb Evain  <jbevain@novell.com>
12240         * deployment.h: make Deployment::Surface DP internal.
12242 2009-01-29  Geoff Norton  <gnorton@novell.com>
12244         * deployment.h: Surface is now a DP on the deployment so we 
12245         can share it with managed.
12246         * dependencyproperty.g.cpp: Regen
12247         * clock.cpp: Get the surface of the Deployment we're in so that
12248         clocks from Dispatcher timer end up on the right surface.
12250 2009-01-29  Geoff Norton  <gnorton@novell.com>
12252         * deployment.cpp: Trust the domain over the TLS slot since mono
12253         will switch that on us on any thread really.
12255 2009-01-29  Geoff Norton  <gnorton@novell.com>
12257         * clock.cpp|h: Ensure that we set the correct deployment from the 
12258         clock ticks before traversing back into our heirarchy.
12260 2009-01-29  Jackson Harper  <jackson@ximian.com>
12262         * xaml.cpp: Add support for the primitive types in mscorlib.  This
12263         will get properly formed strings, doubles, and int32s working for
12264         now, we don't handle the oddities of the SL parsing properly yet
12265         though.
12267 2009-01-29  Jackson Harper  <jackson@ximian.com>
12269         * type-generated.cpp: regen
12271 2009-01-29  Larry Ewing  <lewing@novell.com>
12273         * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
12274         geometry.
12276         * grid.cpp: unref the dummy columns we create here.
12278 2009-01-29  Jeffrey Stedfast  <fejj@novell.com>
12280         * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
12282         * textbox.h: Shuffle some internal accessors/events around.
12284 2009-01-29  Larry Ewing  <lewing@novell.com>
12286         * text.cpp, text.h: implement basic layout size rules and strip
12287         the custom actual* properties.  Still a hack but passable for now.
12289         regenerate.
12291 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12293         * runtime.h:
12294         * runtime.cpp: Surface: Implement Dispose and call Dispose on the
12295         toplevel object. PaintToDrawable: Update current deployment.
12297 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12299         * uielement.cpp: Dispose: add a null-check, and only walk the visual
12300         tree if we haven't been disposed already.
12302 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12304         * namescope.h:
12305         * namescope.cpp: Namespace: Implement Dispose and remove all entries
12306         from our names hash table there.
12308 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12310         * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
12311         on upon destruction.
12313 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12315         * dependencyobject.h:
12316         * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
12317         Deployment::Current. Emit DestroyedEvent in Dispose instead of the
12318         dtor.
12320 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12322         * mediaelement.h:
12323         * mediaelement.cpp: Implement Dispose and put most of the cleanup there
12324         instead of in the dtor. media_element_advance_frame: we need to set
12325         the current deployment here.
12327 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12329         * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
12330         pre-chain. Set array's size to 0 after deleting all the values.
12332         * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
12333         one media thread per Media object, there's no need to set the current
12334         deployment for each work node, just set it at thread start.
12335         MediaClosure::SetContext: fix refcounting bug.
12337         * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
12339 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12341         * deployment.h:
12342         * deployment.cpp: Deployment: Enable support managed stackframes after
12343         initializing mono. Implement Dispose, and upon destruction set
12344         current application to NULL.
12346 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12348         * tilesource.h|cpp: image size is long
12350 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12352         * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
12354 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12356         * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
12357         logical is [0,1],[0,1]
12359 2009-01-28  Larry Ewing  <lewing@novell.com>
12361         * frameworkelement.cpp (FrameworkElement::MeasureOverride): 
12362         it might help to actually measure things, so do that... *sigh*
12364 2009-01-28  Larry Ewing  <lewing@novell.com>
12366         * shape.cpp (Shape::ComputeStretchBounds): remove the old
12367         width/height short circuiting when one or the other of
12368         width/height was not set simply use the lyaout clip when it is
12369         around.  Might need a little more work but it is definitely
12370         needed.
12372 2009-01-28  Larry Ewing  <lewing@novell.com>
12374         * frameworkelement.cpp, frameworkelement.h: layout and arrange
12375         children if there are any.  set IsLayoutContainer to true if we
12376         have kids.
12378 2009-01-28  Larry Ewing  <lewing@novell.com>
12380         * frameworkelement.cpp (FrameworkElement::HitTest): move the
12381         majority of the hit test logic here.  Now we only walk the
12382         children once and we only call InsideObject when we must.
12383         InsideObject now only checks the local object subtree is handled
12384         in HitTest.
12386         * panel.cpp, panel.h:
12387         * control.cpp, control.h:
12388         * border.cpp, border.h:
12389         * text.cpp, text.h: remove the old HitTest and rework InsideObject
12390         for the new rule.
12392         * uielement.cpp: make InsideClip potentially a little faster.
12394 2009-01-28  Larry Ewing  <lewing@novell.com>
12395         
12396         * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
12397         on visibility.
12399         * control.cpp:
12400         * border.cpp:
12401         * canvas.cpp: skip invisible elements.
12403 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12405         * textbox.cpp (TextBoxView::Layout): We need to break the text
12406         apart by lines so that the TextLayout engine can handle them
12407         properly.
12409         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
12410         over to line->crlf for each LineBreak.
12411         (TextLayout::GetCursor): Need to keep track of the line-ending
12412         character sequences as well.
12414         * layout.h (TextRun::IsLineBreak): New method to check if the run
12415         represents a LineBreak, cleaner than manually checking for text ==
12416         NULL.
12417         (TextRun::ctor): LineBreak version now takes a crlf argument to
12418         specify which line ending sequence it is.
12420 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12422         * textbox.cpp (move_down): Fixed to handle any line-ending.
12423         (move_up): Same.
12424         (next_word): Same.
12425         (prev_word): Same.
12426         (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
12427         sequence.
12428         (TextBox::KeyPressDelete): Same.
12429         (TextBox::KeyPressHome): Same.
12430         (TextBox::KeyPressEnd): Same.
12431         (TextBox::KeyPressRight): Same.
12432         (TextBox::KeyPressLeft): Same.
12433         (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
12434         inserts a \r character, not a \n, nor a \r\n.
12436         * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
12437         formats too.
12438         (TextBlock::SetTextInternal): Canonicalize line endings in our
12439         temp buffer.
12441         * layout.cpp (TextRun::TextRun): Don't worry about line endings...
12443 2009-01-28  Jackson Harper  <jackson@ximian.com>
12445         * xaml.cpp: Fix logic for setting name and key on
12446         storyboards. Rules are:
12447             1. You can set both if you set the name before the key
12448             2. You can set both if both values are equal
12449         
12450 2009-01-28  Chris Toshok  <toshok@ximian.com>
12452         * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
12453         DependencyObjectCollection::AddedToCollection.
12454         (SetterBaseCollection::RemovedFromCollection): chain up to
12455         DependencyObjectCollection::RemovedFromCollection.
12457 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
12459         * dependencyproperty.g.cpp: Regenerated
12460         * enums.cpp|h: Add MediaElementState
12461         * playlist.cpp: Use new MediaElementState enum
12462         * mediaelement.cpp|h: Use new MediaElementState enum
12464 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12466         * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
12468 2009-01-27  Larry Ewing  <lewing@novell.com>
12470         * grid.cpp: limit the reduction in size to zero.
12472 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12474         * runtime.cpp:
12475         * dependencyobject.cpp: Fix building with object tracking.
12477 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12479         * debug.h: Surround logging macros with #if LOGGING instead of #if
12480         DEBUG.
12482 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12484         * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
12485         header, it's not used anywhere but in this file.
12487         * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
12488         configure time now.
12490 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12492         * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
12493         ReadOnly status.
12494         (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
12496 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12498         * uielement.h: Make Dispose public.
12500 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12502         * codec-version.h.in:
12503         * dependencyobject.h:
12504         * dependencyobject.cpp: EventObject: Make the flags field an gint32
12505         field (to keep size consistent), put the flags at the upper bits and
12506         use the remaining lower bits for the object id. This requires a codec
12507         abi bump.
12509 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12511         * dependencyobject.cpp: Use bitfields correctly.
12513 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
12515         * text.cpp: FontFamily can be NULL so we can't just access its
12516         source field without a check. Fix SIGSEGV when running moon-unit.
12517         * value.cpp: FontFamily is not a (managed) struct so it can have
12518         a NULL value. Fix SIGSEGV when creating a Value out of a NULL
12519         FontFamily in moon-unit.
12521 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12523         * type.h:
12524         * type-generated.cpp: Regenerated.
12526 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12528         * type.h:
12529         * type.h.in:
12530         * cbinding.h:
12531         * cbinding.cpp:
12532         * type-generated.cpp: Regenerated.
12534 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12536         * audio.h:
12537         * audio.cpp:
12538         * audio-pulse.h:
12539         * audio-alsa.cpp:
12540         * audio-pulse.cpp: Don't register any audio threads, they may interact
12541         badly with the gc and deadlock. Audio threads shouldn't be doing
12542         anything which requires the current deployment to be set anyway.
12544 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12546         * pipeline.h:
12547         * pipeline.cpp: AudioStream: call SetObjectType.
12549 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12551         * dependencyobject.h:
12552         * dependencyobject.cpp: Add an EventObject ctor overload which takes a
12553         Type::Kind. In EventObject::ref don't warn about inexistent
12554         deployments for audio objects.
12556 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12558         * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
12560 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12562         * audio.h:
12563         * audio.cpp:
12564         * audio-pulse.h:
12565         * audio-alsa.cpp:
12566         * audio-pulse.cpp: Every AudioSource already has deployment set (since
12567         they inherit from EventObject), use that to set the current
12568         deployment.
12570 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12572         * src.mdp: Updated.
12574 2009-01-27  Chris Toshok  <toshok@ximian.com>
12576         * pipeline.cpp: include codec-version.h
12578         * pipeline-ui.cpp: same.
12580         * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
12581         here.
12583         * codec-version.h.in: new file.  update the
12584         MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
12586 2009-01-27  Larry Ewing  <lewing@novell.com>
12588         * mediaelement.cpp (MediaElement::MeasureOverride): correct
12589         argument order.
12591 2009-01-27  Larry Ewing  <lewing@novell.com>
12593         * frameworkelement.cpp, frameworkelement.h: move generic
12594         bounds_with_children computation here for now.  Make
12595         GetSubtreeBounds return bounds or bounds_with_children based on
12596         having children. Start setting the layout clip in arrange (it will
12597         probably move later).  Rework the layout_xform logic slightly.
12599         * uielement.cpp: remove the generic render warning, it is ok not
12600         to override here if there is nothing local you need to draw.  When
12601         intersecting bounds with the clip path take the layout clip into
12602         account too.
12603         
12604         * text.cpp: update for bounds changes.  Don't recompute the
12605         natural bounds every pass.
12607         * mediaelement.cpp, mediaelement.h:
12608         * media.cpp, media.h: rework arrange and measure to match shape.
12609         Remove overridden bounds logic since it is no longer needed. Only
12610         use the odd width/height setting logic when we aren're part of a
12611         layout tree. Use the layout clip when drawing.
12613         * shape.cpp: clean up the bounds logic. Use the layout clip when
12614         drawing.
12616         * control.cpp, control.h:
12617         * border.cpp, border.h: use the layout clip when rendering, remove
12618         overrides for bounds now that fe handles them.
12620         
12621 2009-01-27  Chris Toshok  <toshok@ximian.com>
12623         * Makefile.am (libmoon_include_headers): add fontfamily.h
12625         * fontfamily.h: add struct.
12626         
12627         * control.h, text.h: FontFamilyProperty is of type FontFamily now.
12629         * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
12630         string.
12632         * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
12633         unmarshaled bits.
12635         * value.h.in (struct Value): add FontFamily and guint32 cases.
12637         * xaml.cpp (value_from_str): add case for FONTFAMILY.
12639         * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
12641 2009-01-27  Geoff Norton  <gnorton@novell.com>
12643         * audio-pulse.cpp|h: Use the Deployment sourced from the player
12644         * dependencyobject.cpp: Fix the warning to not use triple not
12645         negative logic
12646         * deployment.cpp: If we find the deployment from the domain,
12647         put it in the tls slot to make future lookups use the fast-path.
12649 2009-01-27  Jeffrey Stedfast  <fejj@novell.com>
12651         * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
12652         events anymore. Instead of having a bool 'emit' flag, use
12653         something closer to gtk's freeze_count.
12654         (TextBox::OnKeyDown): Moved to TextBoxView.
12655         (TextBox::OnKeyUp): Same.
12656         (TextBox::SelectAll): Now returns bool to specify if the selection
12657         has changed.
12658         (TextBox::PreKeyPress): Freeze event emission for our state
12659         changes.
12660         (TextBox::PostKeyPress): Thaw them and emit the events.
12661         (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
12662         textbox->PreKeyPress() and after processing, call
12663         textbox->PostKeyPress().
12665 2009-01-27  Jackson Harper  <jackson@ximian.com>
12667         * value.cpp: unmarshall fonts properly.
12669 2009-01-27  Geoff Norton  <gnorton@novell.com>
12671         * dependencyobject.cpp|h:
12672         * mediaplayer.cpp: Remove the stupidity from my last commit.
12673         * audio.cpp: We're in the right thread and Deployment here, use
12674         Deployment::GetCurrent().
12676 2009-01-27  Geoff Norton  <gnorton@novell.com>
12678         * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
12679         the deployment on a EO.
12680         * deployment.cpp: Add some more logging.
12681         * mediaplayer.cpp: Inherit our Deployment from the MediaElement
12682         who owns us.
12684 2009-01-27  Geoff Norton  <gnorton@novell.com>
12686         * audio-alsa.cpp:
12687         * audio-pulse.cpp: Register the worker-thread's with mono and set our
12688         deployment correctly.
12689         * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
12690         around so that our audio-players can register the thread with mono.
12692 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12694         * pipeline.cpp: WorkerLoop: set the current deployment for every work
12695         item.
12697         * deployment.h:
12698         * deployment.cpp: Add RegisterThread.
12700 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12702         * deployment.cpp: Deployment: Add some logging, fix indentation and call
12703         the DependencyObject ctor which takes a Deployment instead of the
12704         default ctor.
12706 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12708         * dependencyobject.h:
12709         * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
12710         take a Deployment*, and an Initialize method which is called by both
12711         ctors of each type.
12713 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12715         * deployment.h: Initialize doesn't need cbinding/pinvoke.
12717 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12719         * debug.h: Add LOG_DEPLOYMENT.
12721         * runtime.h:
12722         * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
12723         runtime_init.
12725 2009-01-27  Geoff Norton  <gnorton@novell.com>
12727         * deployment.cpp|h: Lock our access to the hash.  Remove a SetCurrent()
12728         instance since its just sugar and cant be bound anyways.
12730 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12732         * dependencyobject.h:
12733         * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
12735 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12737         * dependencyobject.h:
12738         * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
12740 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12742         * collection.cpp: Collection::Dispose: Call base class Dispose too.
12744 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12746         * grid.h:
12747         * type.h:
12748         * text.h:
12749         * size.h:
12750         * popup.h:
12751         * shape.h:
12752         * value.h:
12753         * media.h:
12754         * error.h:
12755         * panel.h:
12756         * brush.h:
12757         * clock.h:
12758         * style.h:
12759         * stylus.h:
12760         * border.h:
12761         * canvas.h:
12762         * binding.h:
12763         * runtime.h:
12764         * trigger.h:
12765         * control.h:
12766         * textbox.h:
12767         * pipeline.h:
12768         * geometry.h:
12769         * template.h:
12770         * namescope.h:
12771         * uielement.h:
12772         * animation.h:
12773         * eventargs.h:
12774         * resources.h:
12775         * transform.h:
12776         * collection.h:
12777         * animation2.h:
12778         * downloader.h:
12779         * expression.h:
12780         * deployment.h:
12781         * tilesource.h:
12782         * bitmapimage.h:
12783         * usercontrol.h:
12784         * application.h:
12785         * mediaelement.h:
12786         * contentcontrol.h:
12787         * multiscaleimage.h:
12788         * dependencyobject.h:
12789         * type-generated.cpp:
12790         * frameworkelement.h:
12791         * multiscalesubimage.h:
12792         * deepzoomimagetilesource.h: Include all types derived from EventObject
12793         in the type system and remove the IncludeInKinds annotations from
12794         those classes.
12796 2009-01-27  Chris Toshok  <toshok@ximian.com>
12798         * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
12799         add the "XamlElementInstance* value" overload.  part of axelerate
12800         fix.
12801         (XamlElementInfoManaged::GetContentProperty): pass
12802         obj->AsDependencyObject() to GetContentPropertyName, instead of
12803         obj (which is a Value*).
12805 2009-01-26  Chris Toshok  <toshok@ximian.com>
12807         * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
12808         some behavior with x:Key/x:Name only happens when the element is a
12809         child of a ResourceDictionary.
12811 2009-01-26  Larry Ewing  <lewing@novell.com>
12813         * grid.cpp: rework proportional contribution of auto columns.
12815         * uielement.cpp: remove the slot logic from the transform here we
12816         will compute it in arrange.
12818 2009-01-26  Larry Ewing  <lewing@novell.com>
12820         * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
12821         bounds.
12823 2009-01-26  Geoff Norton  <gnorton@novell.com>
12825         * deployment.cpp: Cleanup our usage of hash a bit to avoid some
12826         senseless compare/branches.
12828 2009-01-26  Larry Ewing  <lewing@novell.com>
12830         * shape.cpp (Shape::Clip): hack back in shape clipping until the
12831         layout clip logic fixed.
12833 2009-01-26  Geoff Norton  <gnorton@novell.com>
12835         * deployment.cpp: Remove a useless null guard now that we have
12836         Deployment::Initialize.  Don't rudely nuke the TLS slot we might not
12837         own.
12839 2009-01-26  Geoff Norton  <gnorton@novell.com>
12841         * deployment.cpp|h:  Deployment now does all the domain book keeping
12842         for us, so that calls to GetCurrent will return the Deployment for 
12843         the appropriate context, it will also set the MonoDomain* appropriately
12844         where necessary.
12846 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
12848         * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
12849         Removed.
12850         (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
12851         TextProperty from reentrancy.
12852         (TextBox::EmitSelectionChanged): Update the value before emitting
12853         the event, this way we don't need the dynamic provider.
12854         (TextBox::EmitTextChanged): Same.
12855         (TextBox::OnKeyDown): Handle key == GDK_Return.
12857 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
12858         
12859         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
12860         to handle the TextProperty as well.
12861         (TextBox::TextBox): Init text_changed to false.
12862         (TextBox::EmitSelectionChanged): New helper method to set
12863         selection_changed to true and then emit the event.
12864         (TextBox::EmitTextChanged): Same idea.
12865         (TextBox::OnPropertyChanged): Use the new Emit helper methods.
12866         (TextBox::ClearSelection): Same.
12867         (TextBox::Select): Same.
12869 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12871         * animation.h: Change validators for TargetNameProperty and
12872         TargetNameProperty
12873         * dependencyproperty.g.cpp: Regenerated
12874         * validators.cpp|h: Add new IsTimelineValidator that check that
12875         the instance is derived from Timeline.
12877 2009-01-26  Larry Ewing  <lewing@novell.com>
12878         
12879         * border.cpp:
12880         * canvas.cpp:
12881         * dirty.cpp:
12882         * control.cpp, control.h:
12883         * frameworkelement.cpp, frameworkelement.h:
12884         * src/grid.cpp:
12885         * src/media.cpp:
12886         * src/mediaelement.cpp:
12887         * src/shape.cpp:
12888         * src/uielement.cpp:
12889         * src/usercontrol.h: Fix things to match the test results.  Still
12890         a few regressions in shapes.
12891         
12892 2009-01-26  Larry Ewing  <lewing@novell.com>
12894         * border.cpp (Border::MeasureOverride): 
12896 2009-01-26  Larry Ewing  <lewing@novell.com>
12898         * grid.cpp (Grid::MeasureOverride): handle out of bounds
12899         rows/columns the way the tests indicate.
12901 2009-01-24  Larry Ewing  <lewing@novell.com>
12903         * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
12905 2009-01-24  Larry Ewing  <lewing@novell.com>
12907         * uielement.h (class UIElement): add IsLayoutContainer () to test
12908         if a given element wants to do the layout dance.  Hopefully this
12909         can be removed once the logic is more clear.
12911         * panel.h:
12912         * canvas.h:
12913         * border.h:
12914         * usercontrol.h: add IsLayoutContainer values.
12915         
12916 2009-01-26  Larry Ewing  <lewing@novell.com>
12918         * frameworkelement.cpp: tests show some really crazy behavior in
12919         the short circuit case, try to emulate that.
12921 2009-01-26  Larry Ewing  <lewing@novell.com>    
12923         * frameworkelement.cpp (FrameworkElement::Measure): remove the
12924         short circuit.
12926         * media.cpp: fix rendering.
12928 2009-01-26  Larry Ewing  <lewing@novell.com>
12929         
12930         * control.cpp: 
12931         * border.cpp: Try to get alignment working visually.
12933         * frameworkelement.cpp: hack the needed behavior in until I
12934         understand the problem better.
12936         * mediaelement.cpp, mediaelement.h:
12937         * media.cpp: use the layout values in stretching
12939 2009-01-26  Larry Ewing  <lewing@novell.com>
12941         * frameworkelement.cpp:
12942         * shape.cpp:
12943         * media.cpp:
12944         * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
12945         new methods.
12947 2009-01-26  Larry Ewing  <lewing@novell.com>
12949         * media.h:
12950         * media.cpp: add bounds logic.
12952         * dirty.cpp:
12953         * control.cpp:
12954         * canvas.cpp:
12955         * border.cpp: start trying to deal with
12956         alignment.
12958         * frameworkelement.cpp: compute the layout_xform.
12959         
12960         * uielement.cpp, uielement.h: add layout_xform and use it.
12961         
12962         * shape.cpp: try something else in measure.
12964         * size.h: add == and != overrides.
12966 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
12968         * brush.cpp (VisualBrush::SetupBrush): Updated.
12970         * uielement.cpp (UIElement::Render): Render our subtree in the
12971         Region* version of this method and get rid of the old x,y,w,h
12972         version.
12974         * text.cpp (TextBlock::Render): Override the Render() that takes a
12975         Region.
12976         (Glyphs::Render): Same.
12978         * textbox.cpp (TextBoxView::Render): Same.
12980         * shape.cpp (Shape::Render): Here too.
12982 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12984         * src.mdp: Update.
12986 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12988         * type.cpp: Revert r124497.
12990 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12992         * transform.cpp: Add comment about a difference between SL2/ML 
12993         in caching/computing the resulting matrix value (exposed in SL2) 
12994         of a TransformGroup
12996 2009-01-26  Jackson Harper  <jackson@ximian.com>
12998         * xaml.cpp: Move this check into a function since it will be used
12999         in a few places.
13001 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13003         * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
13005 2009-01-26  Chris Toshok  <toshok@ximian.com>
13007         * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
13008         binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
13009         canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
13010         contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
13011         dependencyobject.[cpp,h], dependencyproperty.h,
13012         deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
13013         eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
13014         geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
13015         mediaelement.[cpp,h], multiscaleimage.[cpp,h],
13016         multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
13017         popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
13018         size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
13019         text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
13020         trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
13021         usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
13022         files, and remove GetObjectType - call SetObjectType instead.  Add
13023         @IncludeInKinds everywhere on types we want in the Kinds array -
13024         nothing is implicit now.  Also, add @SkipValue on types that
13025         shouldn't automatically appear in the Value struct (As* method,
13026         etc).
13028         * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
13029         but also call SetSubtreeObject at the right times (basically
13030         whenever our subtree object changes).
13032         * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
13033         too.  also, rework the control template application step - don't
13034         cache the tree and duplicate it.  just reparse.  hook up template
13035         bindings properly as well.  with this change buttons are starting
13036         to look right.
13038         * type.cpp: total_event_count = my_events +
13039         parent->total_event_count, so if my_events == 0...
13040         
13041         * xaml.cpp (start_element): reverse the subclass check.
13043         * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
13045         * Makefile.am: add expression.cpp, and there's no need for
13046         separate file lists anymore.
13048 2009-01-25  Chris Toshok  <toshok@ximian.com>
13050         * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
13051         this registers a custom property.  Fixes moon-unit failures.
13052         
13053 2009-01-25  Chris Toshok  <toshok@ximian.com>
13055         * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
13056         moon-unit crash.
13058 2009-01-25  Chris Toshok  <toshok@ximian.com>
13060         * xaml.cpp: mostly just remove the NULL's we were passing to the
13061         various DependencyObject methods that used to require an
13062         additional_types arg.
13063         (dependency_object_set_attributes): one important fix here - force
13064         the loader to do the SetValue if the type is URI, or if the type
13065         of the object itself is a custom type.  Also, if we've converted
13066         the string to a valid value already, don't pass a string to the
13067         loader - this keeps us from passing "{Binding foo...}" to the
13068         loader to setvalue on a databound property.  This does uncover a
13069         failing in our managed code, though, that there's no way to deal
13070         with the unmanaged BindingExpression from managed code.
13072         * application.cpp, application.h: instead of having a
13073         MonoDomain->Application mapping, we now have a
13074         MonoDomain->Deployment mapping, so Application::GetCurrent maps to
13075         Deployment::GetCurrent()->GetCurrentApplication().
13076         
13077         * deployment.cpp, deployment.h: flesh out Deployment, along with
13078         the MonoDomain->Deployment mapping.  Also add a per-deployment
13079         Types* object, so we can look them up anywhere in the engine
13080         without having to rely on the managed layer passing
13081         additional_types.
13082         
13083         * type.h.in, type.cpp: remove additional_types from all the apis.
13084         the currently registered custom types are always available from
13085         the Current deployment, which Type::Find uses.  Also, add
13086         IsCustomType which lets us check if a type is one of our special
13087         built-in types, or if it's one that's been registered dynamically.
13089         * value.h.in, value.cpp: remove additional_types.
13091         * dependencyproperty.h, dependencyproperty.cpp: remove
13092         additional_types.
13094         * dependencyobject.h, dependencyobject.cpp: remove
13095         additional_types.
13097         * uielement.h: add cbindings/pinvokes for ElementAdded and
13098         ElementRemoved.
13100         * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
13101         managed now.
13102         
13103         * Makefile.am: remove contentpresenter.{h,cpp}
13105         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
13106         regen.
13108 2009-01-25  Sebastien Pouliot  <sebastien@ximian.com>
13110         * cbinding.cpp|h: Regenerated
13111         * transform.cpp|h: Add GetMatrix (w/bindings).
13113 2009-01-23  Geoff Norton  <gnorton@novell.com>
13115         * xaml.cpp:  This is case-insensitive here too.
13117 2009-01-23  Geoff Norton  <gnorton@novell.com>
13119         * dependencyobject.cpp:  Avoid a SIGSEGV if the parent_scope is null.
13121 2009-01-23  Jeffrey Stedfast  <fejj@novell.com>
13123         * utils.cpp (managed_stream_read_func): Fixed to do as intended.
13124         (managed_stream_write_func): Same.
13126         * textbox.cpp (next_word): Implemented.
13127         (prev_word): Implemented.
13129 2009-01-23  Andreia Gaita  <avidigal@novell.com>
13131         * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
13132         list in case the dispatcher gets destroyed before they are processed.
13134 2009-01-23  Geoff Norton  <gnorton@novell.com>
13136         * utils.cpp: Remove some g_error and handle ridiculously large
13137         zip files to appease glib.
13139 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13141         * dependencyproperty.g.cpp: regenerated
13142         * brush.h: Set default values for RadialGradientTransform points
13144 2009-01-23  Stephane Delcroix  <sdelcroix@novell.com>
13146         * multiscaleimage.cpp: add a bool so render knows if it was
13147         invalidated locally or not, and should keep rendering the upper
13148         layers or restart from the bottom.
13150 2009-01-23  Geoff Norton  <gnorton@novell.com>
13152         * pipeline.h: Move ManagedStreamCallbacks to utils so other things
13153         can use them
13154         * utils.cpp|h: Implement a minizip io-style wrapper around
13155         ManagedStreamCallbacks so that we can unzip from / to managed Stream's. 
13157 2009-01-23  Stephane delcroix  <sdelcroix@novell.com>
13159         * multiscaleimage.cpp: no longer crash on null uri
13161 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13163         * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
13164         to be valid (xml-wise) but not a DO (e.g. a Color).
13166 2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13168         * src.mdp: Added new files.
13170 2009-01-22  Chris Toshok  <toshok@ximian.com>
13172         * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
13173         .cpp, and call SetDefaultStyleKey to get that working.
13175 2009-01-22  Chris Toshok  <toshok@ximian.com>
13177         [ fixes to get http://www.life-silverlight.com/ to come up with
13178         exceptions ]
13180         * enums.cpp (initialize_enums): add a mapping for the property
13181         VerticaalContentAlignment using the vertical_alignment_map.
13183         * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
13184         file.  Also, call SetSurface in SetVisualParent, so things like
13185         controls templates get the right surface assigned to them (they
13186         have no logical parent, only a visual one.)
13188         * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
13189         other template stuff - create a temp namescope here.  it won't be
13190         merged, so nothing to worry about.  Also, don't call
13191         PrepareContentPresenter here.  do it after we look up text and
13192         root in OnApplyTemplate.
13193         (ContentPresenter::OnApplyTemplate): prepare the content
13194         presenter.
13196 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13198         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13199         Clean up the goto.
13200         (ContentPresenter::OnLoaded): Only unref the template if it isn't
13201         null.
13203         * contentpresenter.h (ContentPresenter::GetElementRoot):
13204         Implemented temporary binding hack.
13206         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13207         Implemented.
13208         (ContentPresenter::OnPropertyChanged): Call
13209         PrepareContentPresenter() instead of ApplyTemplate().
13210         (ContentPresenter::OnApplyTemplate): Implemented.
13212 2009-01-22  Chris Toshok  <toshok@ximian.com>
13214         * application.h, application.cpp: make surface a per-application
13215         thing, and add GetSurface/SetSurface.
13217         * cbinding.h, cbinding.cpp: regen.
13219 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13221         * contentcontrol.cpp (ContentControl::ContentControl): I'm
13222         guessing this needs to call SetDefaultStyleKey as well.
13224         * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
13225         because that causes problems (the TextBox already has a logical
13226         parent). Instead, we'll just keep track of it internally
13227         ourselves.
13228         (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
13229         when the TextBox property changed.
13231         * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
13232         the default style key.
13233         (ContentPresenter::OnLoaded): Load the default template.
13235         * contentpresenter.cpp|h: New source files. Subclass Control even
13236         though in managed-land, we technically subclass
13237         FrameworkElement. This way we can take advantage of Control's
13238         template logic.
13240 2009-01-22  Chris Toshok  <toshok@ximian.com>
13242         * xaml.cpp (dependency_object_set_attributes): commit jackson's
13243         patch (with one slight modification) so everyone can have the
13244         wonderful world of non-broken setters.
13246 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13248         * dependencyobject.h:
13249         * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
13250         around object counters (we define DEBUG always anyways, and the
13251         counters are always useful).
13253 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13255         * dependencyobject.cpp: Protect objects_alive with a mutex.
13257 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13259         * dependencyobject.h:
13260         * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
13261         any use.
13263 2009-01-22 Stephane delcroix  <sdelcroix@novell.com>
13265         * tilesource.h:
13266         * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
13267         first time it's needed.
13269 2009-01-21  Geoff Norton  <gnorton@novell.com>
13271         * application.cpp: If we're set to NULL remove the application 
13272         from the hash table.
13274 2009-01-21  Geoff Norton  <gnorton@novell.com>
13276         * Makefile.am: Add bitmapimage.cpp to the build
13277         * application.cpp|h: Add a new callback into Application to
13278         return a resource stream.
13279         * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
13280         a managed resource stream and make this all native.
13281         * brush.cpp|h: Brush.ImageSource is now a BitmapImage
13282         * media.cpp|h: Image.Source is now a BitmapImage
13283         * xaml.cpp: BitmapImage can be constructed from a string in xaml
13284         * cbinding.cpp|h:
13285         * dependencyproperty.g.cpp: Regenerate
13287 2009-01-21  Larry Ewing  <lewing@novell.com>
13289         * grid.cpp (Grid::MeasureOverride): rework the incremental
13290         contribution logic.
13292 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
13294         * contentcontrol.cpp (ContentControl::OnPropertyChanged):
13295         Implemented by calling ApplyTemplate() when ContentTemplate or
13296         Content properties change.
13297         (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
13298         when the content changes.
13300 2009-01-21  Larry Ewing  <lewing@novell.com>
13302         * grid.cpp: store measurement info in the row and column
13303         definitions and don't allocate the arrays.
13305 2009-01-21  Larry Ewing  <lewing@novell.com>
13307         * grid.cpp, grid.h:  Hack things to handle missing row
13308         definitions and clean up some old errors.
13310 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
13312         * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
13313         rather than SetContent() since SetContent() has been removed.
13314         * contentcontrol.h (class ContentControl): Updated a bit, we're
13315         going to actually use this unmanaged class now.
13316         (class ContentControl): Set PropertyType for ContentProperty to
13317         'object' and get rid of the generated accessors.
13319 2009-01-21  Jackson Harper  <jackson@ximian.com>
13321         * dependencyobject.cpp|h: When setting values, unmarshal values
13322         first.
13323         * value.h|cpp: Add unmarshal function so we can convert types
13324         coming from managed.
13325         * type.h:
13326         * cbinding.cpp|h:
13327         * type-generated.cpp: Regenerated.
13328         
13329 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
13331         * dependencyproperty.g.cpp: Regenerated
13332         * text.cpp|h: Revert earlier change as it "turns black" too many
13333         things. DRT #47 will fail until I find the right fix :(
13335 2009-01-21  Larry Ewing  <lewing@novell.com>
13337         * grid.cpp (Grid::ArrangeOverride): make the basic cases work
13338         correctly.
13340 2009-01-21  Alan McGovern  <amcgovern@novell.com>
13342         * popup.cpp: Remove debug code from svn.
13344 2009-01-21  Alan McGovern  <amcgovern@novell.com>
13346         * popup.h:
13347         * popup.cpp:
13348         * cbinding.h:
13349         * Makefile.am:
13350         * cbinding.cpp:
13351         * type-generated.cpp: Initial attempt at trying to get Popup.Child
13352         rendering.
13354 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
13356         * dependencyproperty.g.cpp: Regenerated
13357         * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
13358         ctor initialized value. This means that GetLocalValue won't return
13359         null for this property, which makes it behave correctly for SL1/JS
13360         applications.
13361         [Fix DRT#47 failing since r123884]
13363 2009-01-20  Chris Toshok  <toshok@ximian.com>
13365         * application.h, application.cpp: switch from using a static
13366         Application* for "Current" to a hashtable mapping MonoDomain* to
13367         Application*.
13369 2009-01-20  Jackson Harper  <jackson@ximian.com>
13371         * xaml.cpp: Lookup resources in Application.Resources if we don't
13372         find the resource in the tree.
13374 2009-01-20  Chris Toshok  <toshok@ximian.com>
13376         * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
13377         cbinding.cpp: regen.
13379         * Makefile.am (libmoon_include_headers): add application.h
13380         (libmoon_la_SOURCES): add application.cpp
13382         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
13383         if the style was set, call Application::ApplyStyle -- doesn't
13384         actually *apply* the style, it just converts the values.
13386         * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
13387         the ConvertedValueProperty after the setter is sealed.
13389         * style.h (class Setter): add ConvertedValueProperty.
13391         * textbox.h (class TextBox): remove @CallInitialize.
13393         * textbox.cpp (TextBox::TextBox): i hate the way this is
13394         expressed (we need a ManagedTypeInfo ctor/dtor), but set
13395         DefaultStyleKey here instead of in managed land.
13397         * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
13398         return the converted property value, not the original (which may
13399         have been a string.)
13400         (StylePropertyValueProvider::SealStyle): only put setters in the
13401         hash if their converted value is non-null.
13403         * control.h (class Control): generate accessors for
13404         DefaultStyleKey.
13406         * control.cpp (Control::OnLoaded): do the default style
13407         application here.
13408         (Control::ApplyTemplate): output a little spew so we
13409         can tell if we're applying a template.
13411         * application.h, application.cpp: move Application here, and make
13412         it a full DO subclass.  It no longer maps to the managed
13413         ApplicationInternal.
13415         * deployment.h: remove Application from here.
13417 2009-01-20  Jackson Harper  <jackson@ximian.com>
13419         * xaml.cpp: When we create templates make sure we track the
13420         template ourself, we can't rely on the ControlTemplate still
13421         having a surface when it is applied.
13423 2009-01-20  Jeffrey Stedfast  <fejj@novell.com>
13425         * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
13426         (Keyboard::OnKeyRelease): Same.
13428 2009-01-20  Jackson Harper  <jackson@ximian.com>
13430         * clock.h: Set namespace for Duration and RepeatBehavior
13432 2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>
13434         * dependencyproperty.g.cpp: Regenerated
13435         * uielement.h: Re-apply default value for RenderTransformProperty
13437 2009-01-19  Larry Ewing  <lewing@novell.com>
13439         * runtime.cpp:
13440         * window.h:
13441         * window-gtk.cpp, window-gtk.h: clean up the set background
13442         clearing logic and make it general.
13444 2009-01-19  Larry Ewing  <lewing@novell.com>
13446         * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
13447         window to white by default.
13449 2009-01-19  Larry Ewing  <lewing@novell.com>
13450         
13451         * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
13452         implementing arrangeoverride.
13454 2009-01-19  Larry Ewing  <lewing@novell.com>
13456         * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
13457         screen message too.
13459 2009-01-19  Jackson Harper  <jackson@ximian.com>
13461         * uri.h:
13462         * binding.h: Get kinds generated for these guys.
13463         * type.h:
13464         * type-generated.cpp: updated
13465         
13466 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13468         * src.mdp: Update.
13470 2009-01-19  Jackson Harper  <jackson@ximian.com>
13472         * grid.h: GridLength lives in System.Windows.
13474 2009-01-19  Jackson Harper  <jackson@ximian.com>
13476         * color.h: Colours are in System.Windows.Media.
13478 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13480         * pipeline.h: Instead of overriding GetTypeName for media clases
13481         override GetObjectType so that the generator puts these classes into
13482         our type system. This will fix a lot of the "event not registered"
13483         warnings.
13485         * type.h:
13486         * value.h:
13487         * type-generated.cpp: Regenerated.
13489 2009-01-19  Alan McGovern  <amcgovern@novell.com>
13491         * type.h:
13492         * src.mdp:
13493         * popup.h:
13494         * value.h:
13495         * popup.cpp:
13496         * cbinding.h:
13497         * cbinding.cpp:
13498         * type-generated.cpp:
13499         * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
13501 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13503         * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
13504         Add support for 'unsigned X' types (used in src/asf/).
13506 2009-01-18  Geoff Norton  <gnorton@novell.com>
13508         * xaml.cpp: Only unref the surface if it exists.
13510 2009-01-18  Geoff Norton  <gnorton@novell.com>
13512         * dependencyobject.cpp:  Ensure that the parent scope registration
13513         behavior is only applied to UserControl's.
13515 2009-01-18  Geoff Norton  <gnorton@novell.com>
13517         * xaml.cpp: Only ref the surface if it exists.
13519 2009-01-18  Larry Ewing  <lewing@novell.com>
13521         * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
13523         * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
13524         arrange method for now.
13526 2009-01-18  Larry Ewing  <lewing@novell.com>
13528         * control.cpp: update invaliate/measure to look more like border
13529         (still wrong) and remove some debug spew.
13531 2009-01-18  Sebastien Pouliot  <sebastien@ximian.com>
13533         * cbinding.h|cpp, type.h, value.h: Regenerated
13534         * transform.h: Add UnmanagedMatrix (which is a DO accessible to
13535         managed code) and a new method to get the address of the matrix
13536         elements.
13537         * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
13539 2009-01-17  Larry Ewing  <lewing@novell.com>
13541         * canvas.cpp (Canvas::MeasureOverride): 
13542         * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
13544 2009-01-17  Jackson Harper  <jackson@ximian.com>
13546         * xaml.cpp: Dont create items for property elements. The element
13547         name for property elements can be an abstract type.
13549 2009-01-17  Jackson Harper  <jackson@ximian.com>
13551         * xaml.cpp: Don't try to set properties that are collections,
13552         they've already had the items added in add_child.
13554 2009-01-17  Jackson Harper  <jackson@ximian.com>
13556         * xaml.cpp|h: Change CreateObject to LookupObject and give it a
13557         flag for actually creating the object. This allows us to verify
13558         the type on hydrated elements without creating another instance
13559         and prevents a circular dependency when elements load themself in
13560         their LoadComponent xaml.
13562 2009-01-17  Geoff Norton  <gnorton@novell.com>
13564         * dependencyobject.cpp:  A custom UserControl has a local namescope
13565         but also needs to be locatable in its parent namescope.
13567 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13569         * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
13570         different font size (not that TextBox really needs that since all
13571         runs will be the same exact font).
13573         * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
13574         to update the cursor rect.
13575         (TextBoxView::Layout): Update the cursor after we finish laying
13576         the text out.
13577         (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
13578         (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
13579         maxlen.
13581 2009-01-16  Jackson Harper  <jackson@ximian.com>
13583         * xaml.cpp: NULL is OK if it's being explicitly set.
13585 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13587         * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
13588         cursor region and the new cursor region.
13589         (TextBoxView::Paint): Paint the cursor as well.
13591         * layout.cpp (Layout::GetCursor): Implemented.
13593 2009-01-16  Larry Ewing  <lewing@novell.com>
13595         * frameworkelement.cpp (FrameworkElement::MeasureOverride):
13596         fix typo.
13597         
13598         * panel.cpp, panel.h: remove arrange override and make measure
13599         override return (0,0) always.
13600         
13601 2009-01-16  Larry Ewing  <lewing@novell.com>
13603         * panel.cpp: Make ArrangeOverride and MeasureOverride do something
13604         closer to the right thing.
13606 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13608         * textbox.cpp (TextBox::ArrangeOverride): Removed.
13609         (TextBox::Background) needs to return NULL if not selected mode -
13610         we don't want to be redrawing the normal bg.
13612 2009-01-16  Geoff Norton  <gnorton@novell.com>
13614         * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
13615         we're going to keep it alive to apply control templates.
13617 2009-01-16  Geoff Norton  <gnorton@novell.com>
13619         * template.cpp: Add the namescope to the closure to avoid
13620         referencing random memory.
13621         * xaml.cpp: We create a new XamlLoader when applying control 
13622         templates, and inherit the callbacks.  Set vm_loaded to true in
13623         this case.
13625 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13627         * textbox.cpp (TextBox::TextBox): Don't init the selection
13628         brushes, they must come from the style.
13630 2009-01-16  Larry Ewing  <lewing@novell.com>
13632         * border.cpp, border.h:
13633         * uielement.cpp, uielement.h:
13634         * panel.cpp, panel.h:
13635         * canvas.cpp, canvas.h:
13636         * control.cpp, control.h:  Remove GetTransformFor completely, use
13637         the layout slot x/y when computing the local transform,
13638         invalidatemeasure (for now) when updating the tranform.
13640         * dirty.cpp: hack in the intial Left/Top stuff until we can clean
13641         up the logic here.
13643 2009-01-16  Larry Ewing  <lewing@novell.com>
13645         * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
13646         unless stretch is specified.
13648 2009-01-16  Geoff Norton  <gnorton@novell.com>
13650         * mediaelement.h: The MediaElement.Source is a Uri on the managed
13651         side.
13653 2009-01-16  Jackson Harper  <jackson@ximian.com>
13655         * xaml.cpp: FindTypeName type names dont' always have a
13656         namespace/assembly.
13657         - Special case Application and don't try to find it's name since
13658         it is renamed in the managed code. (Need to figure out a better
13659         solution here).
13660         - Pass in NULL for setting propertys and let the underlying types
13661         determine whether or not that is an error.
13663 2009-01-16  Jackson Harper  <jackson@ximian.com>
13665         * xaml.cpp: Before going to managed to create an element, scan the
13666         xnamespace for the x:Class attribute and pass that in as the
13667         element name if we have one, this allows you to use abstract names
13668         for the elements as long as the x:Class is a complete type. Should
13669         also allow us to optimize out a trip into managed.
13671 2009-01-16  Jackson Harper  <jackson@ximian.com>
13673         * xaml.cpp: The xaml context needs to store the callbacks so that
13674         we can properly invoke managed code in a template.
13676 2009-01-16  Jackson Harper  <jackson@ximian.com>
13678         * dependencyproperty.cpp: This warning isn't really needed and now
13679         with managed DP lookup's, this scenario happens about a trillion
13680         times during parsing of generic.xaml.
13682 2009-01-16  Larry Ewing  <lewing@novell.com>
13684         * uielement.h (class UIElement): remove the default value from
13685         RenderTransformProperty until the bugs it introduces are resolved.
13687         * dependencyproperty.g.cpp:Regenerated.
13689 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
13691         * dependencyproperty.g.cpp: Regenerated
13692         * grid.h: Add default values for [Column|Row]Definition Width
13693         and Height
13694         * xaml.cpp: Fix most cases (except empty) of GridLength
13696 2009-01-15  Geoff Norton  <gnorton@novell.com>
13698         * downloader.cpp|h: Add downloader_response_abort.
13700 2009-01-15  Jackson Harper  <jackson@ximian.com>
13702         * xaml.cpp|h: We need to pass a pointer to the elements parent
13703         object to managed code, this is so we can look up a Setter's
13704         Style.
13705         - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
13706         
13707 2009-01-15  Jackson Harper  <jackson@ximian.com>
13709         * dependencyproperty.cpp: Patch mostly by rolf. Allows property
13710         lookup to work on custom types that subclass custom types.
13711         * template.cpp: Now that templates work pretty well, lets reduce
13712         the spam a bit.
13714 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
13716         * dependencyproperty.g.cpp: Regenerated to include the specified 
13717         type (and not the implied one from the default value)
13718         * uielement.h: RenderTransformProperty defaults to a empty (identity)
13719         MatrixTransform
13721 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
13723         * textbox.cpp: Removed default_*[fore,back]ground() functions as
13724         well as textbox_shutdown() since they are no longer needed.
13725         (TextBox::TextBox): Initialize the default SelectionBackground and
13726         SelectionForeground brushes.
13728         * layout.h (struct TextSelection): Removed brushes from
13729         TextSelection struct.
13731 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
13733         * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
13734         Cannot compare a guint64 with -1, presuming the comparison was
13735         meant to be against TimeSpan_FromPTS (position) instead.
13737         * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
13738         instead of SelectionChangedEventArgs.
13740         * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
13741         ctor that takes a source.
13743         * textbox.h (class SelectionChangedEventArgs): Removed, this type
13744         of EventArgs is not actually emitted by TextBox as I had
13745         originally thought. TextBox's SelectionChanged event uses
13746         RoutedEventArgs.
13748 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13750         * type-generated.cpp:
13751         * dependencyproperty.g.cpp: Regenerated.
13753         * mediaelement.h:
13754         * mediaelement.cpp: Inherit directly from FrameworkElement instead of
13755         MediaBase. This requires copying some code from MediaBase into
13756         MediaElement (which at some later stage would move into Media).
13758 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13760         * cbinding.h:
13761         * cbinding.cpp: Regenerated.
13763         * type.h:
13764         * type.cpp:
13765         * type.h.in:
13766         * type-generated.cpp:
13767         * dependencyproperty.h:
13768         * dependencyproperty.cpp: Add support for looking up custom dependency
13769         properties by name.
13771 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
13773         * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
13774         Add comment on value_from_str_with_typename to update NativeMethods.cs
13776 2009-01-15  Larry Ewing  <lewing@novell.com>
13778         * panel.cpp:
13779         * border.cpp:
13780         * control.cpp:
13781         * frameworkelement.cpp: start taking layout slot into account when
13782         computing bounds.
13784 2009-01-15  Jackson Harper  <jackson@ximian.com>
13786         * xaml.cpp: Storyboard are allowed to have an x:Name and an
13787         x:Key. This is for backwards compatibility because SL1 didn't have
13788         x:Key. It's also stupid.
13790 2009-01-15  Jackson Harper  <jackson@ximian.com>
13792         * xaml.cpp: Add a fake element to templates with all the imported
13793         namespaces. This allows all the namespaces imported in the main
13794         source to work in the template.
13796 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
13798         * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
13799         re-layout.
13800         (TextBoxView::Layout): Build the text runs based on the selection.
13801         (TextBoxView::Paint): Updated to no longer pass the selection
13802         state to the layout engine.
13804         * layout.h (class ITextSource): Added a Background() accessor and
13805         changed the Foreground() accessor to take a bool selected
13806         argument.
13808         * layout.cpp (RenderSegment): Render the background if non-NULL.
13809         (TextRun::TextRun): Now takes a 'selected' state.
13810         (TextLayout::Render): No longer takes selection or cursor
13811         arguments.
13813 2009-01-14  Jackson Harper  <jackson@ximian.com>
13815         * xaml.cpp: Fix x:Null handling.
13817 2009-01-14 Sebastien Pouliot  <sebastien@ximian.com> 
13819         * brush.h: Add default values used by some brushes
13820         * dependencyproperty.g.cpp: Regenerated
13822 2009-01-14  Larry Ewing  <lewing@novell.com>
13824         * panel.cpp (Panel::GetTransformFor): override gettransformfor for
13825         now.
13827 2009-01-14  Jackson Harper  <jackson@ximian.com>
13829         * xaml.cpp: Add the namespaces to the xaml context.
13831 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
13833         * textbox.cpp (TextBox::CursorBackSpace): Implemented.
13834         (TextBox::CursorDelete): Implemented.
13836         * layout.cpp (RenderSegment): Split out from RenderLine().
13838 2009-01-14  Jackson Harper  <jackson@ximian.com>
13840         * xaml.cpp: Apparently there is a new NULL on the block.  Use
13841         SetIsNull instead of a NULL Value* now.
13843 2009-01-14  Jackson Harper  <jackson@ximian.com>
13845         * template.cpp: initialize xaml_context. (fixes shutdown crash)
13847 2009-01-14  Jackson Harper  <jackson@ximian.com>
13849         * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
13850         these before my last patch.
13852 2009-01-14  Jackson Harper  <jackson@ximian.com>
13854         * xaml.cpp: Styles use their TargetType as their
13855         ResourceDictionary key.
13856         - Handle the new type MANAGEDTYPEINFO by allowing the managed code
13857         to parse it.
13858         * value.cpp|h|.h.in:
13859         * type.h|h.in: New type, ManagedTypeInfo. Contains info for
13860         loading managed types.
13861         * style.h:
13862         * control.h:
13863         * template.h: Use ManagedTypeInfo when we have a System.Type on
13864         the managed side.
13865         * dependencyproperty.g.cpp:
13866         * typegenerated.cpp: Regen
13868 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
13870         * textbox.cpp: More fixes for cursor movement & keyboard selection.
13872 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com> 
13874         * grid.cpp (MeasureOverride): Free allocated arrays
13876 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com>
13878         * grid.cpp: Add a bunch of NULL checks for width and height to avoid
13879         crashes when running the SDK controls unit tests.
13881 2009-01-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13883         * dependencyobject.cpp: Fix
13884         media/video/test-reset-media-element-source.html.
13886 2009-01-14  Alan McGovern  <amcgovern@novell.com>
13888         * enums.cpp: Control.HorizontalContentAlignment should map to the
13889         HorizontalAlignment enum.
13891 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
13893         * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
13894         changed.
13896 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
13898         * deepzoomtilesource.h: mark it with CallInitialize
13900 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
13902         * tilesource.h|cpp: autogenerate the cbinding
13904         * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
13905         managed side for xml parsing.
13907 2009-01-13  Chris Toshok  <toshok@ximian.com>
13909         * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
13910         message
13911         (XamlLoader::CreateFromStringWithError): same.
13912         (XamlLoader::HydrateFromStringWithError): same.
13913         (~XamlLoader): unref the error_args.
13914         (XamlLoader::HydrateFromString): no need to ref the object again
13915         here if it was passed in.
13917 2009-01-13  Larry Ewing  <lewing@novell.com>
13919         * uielement.cpp, uielement.h (class LayoutInformation): add
13920         LayoutInformation class to hold the layout related attached
13921         properties. (will move it later).
13923         * frameworkelement.cpp: use the new layout information and use it
13924         for invalidation.
13926         * border.cpp: fix the arrange logic.
13928 2009-01-13  Larry Ewing  <lewing@novell.com>
13929         
13930         * shape.cpp: switch over to using the computed values for stretch.
13932         * frameworkelement.cpp:
13933         * uielement.cpp: 
13934         * dirty.cpp, dirty.h:  Try to get invalidation logic close to
13935         correct.
13937 2009-01-13  Larry Ewing  <lewing@novell.com>
13939         * shape.cpp: treat rect and ellipse like normal framework elements.
13940         
13941 2009-01-13  Larry Ewing  <lewing@novell.com>
13943         * frameworkelement.cpp:
13944         * control.cpp:
13945         * canvas.cpp:
13946         * media.cpp: 
13947         * mediaelement.cpp: 
13948         * panel.cpp: Use the layout values for values we used to compute
13949         directly.
13951 2009-01-13  Larry Ewing  <lewing@novell.com>
13953         * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
13954         collection while iterating.
13956 2009-01-13  Larry Ewing  <lewing@novell.com>
13958         * src/canvas.cpp
13959         * src/frameworkelement.cpp
13960         * src/media.cpp
13961         * src/panel.cpp, src/panel.h: layout updates
13963 2009-01-13  Larry Ewing  <lewing@novell.com>
13965         * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
13966         size.
13968         * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
13970 2009-01-13  Larry Ewing  <lewing@novell.com>
13972         * shape.cpp, shape.h: start moving cleaning up references to width
13973         and height and moving towards using the layout logic.  Remove
13974         stale LargestRect stuff
13976         * runtime.c, dirty.h: stub in an update layout function.
13978         * border.cpp, canvas.cpp: try to match some more tests.
13980 2009-01-13  Jeffrey Stedfast  <fejj@novell.com>
13982         * textbox.cpp (TextBox::CursorPageDown): Implemented.
13983         (TextBox::CursorPageUp): Implemented.
13984         (TextBox::CursorHome): Implemented.
13985         (TextBox::CursorEnd): Implemented.
13986         (TextBox::CursorDown): Implemented.
13987         (TextBox::CursorUp): Implemented.
13988         (TextBox::OnKeyDown): Implemented Select-All keybinding and
13989         stubbed out cut/copy/paste.
13991 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com> 
13993         * dependencyproperty.g.cpp: Regenerated
13994         * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and 
13995         Shape.StrokeDashArray and set them in the constructors (which is 
13996         bit ifferent and fix Polyhedra animation).
13998 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com>
14000         * dependencyproperty.g.cpp: Regenerated
14001         * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
14002         StrokeDashArray since they are not NULL in SL2
14004 2009-01-13  Alan McGovern  <amcgovern@novell.com>
14006         * src.mdp: Add the provider stuff to the MD solution
14008 2009-01-13  Chris Toshok  <toshok@ximian.com>
14010         * provider.cpp (StylePropertyValueProvider::SealStyle): only
14011         insert the setter into the hash if the setter's value matches the
14012         type of the setter's property.  Fixes
14013         StyleTest.InvalidValueProgrammatically.
14015 2009-01-13  Jackson Harper  <jackson@ximian.com>
14017         * xaml.cpp|h: Add the ability to lookup full uri's based on local
14018         prefixes. This is so managed can convert something like
14019         'local:' into 'clr-namespace=Foo;assembly=bar'
14021 2009-01-13  Jackson Harper  <jackson@ximian.com>
14023         * xaml.cpp|h: Pass the ParserInfo to every callback, this will
14024         allow us to call back into unmanaged to do extra stuff.
14026 2009-01-13  Stephane Delcroix  <sdelcroix@novell.com>
14028         * tilesource.h|cpp: add a callback and a method to set the callback
14029         so we can poke the managed GetTileLayers.
14031 2009-01-12  Chris Toshok  <toshok@ximian.com>
14033         * style.cpp, style.h (Style::GetPropertyValue): remove this.  it's
14034         been replaced by the hash lookup in the style provider.
14036         * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
14037         change... apparently there's something that happens to lower
14038         precedence providers after you call ClearValue, but *only if the
14039         local value was actually cleared*.  yuck.
14041         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
14042         remove the Style sealing from SetValueWithErrorImpl, and move it
14043         here where it should have been all along.  Also, do the sealing
14044         via the Style value provider, so it can make things a bit more
14045         efficient.
14047         * provider.cpp (StylePropertyValueProvider::SealStyle): new
14048         method, called by FWE::OnPropertyChanged when the style is
14049         initially set.  we cache the setters (keyed by DP) in a hashtable.
14050         (StylePropertyValueProvider::RecomputePropertyValue): this is the
14051         magic method that DependencyObject::ClearValue calls, which causes
14052         the style provider to refresh its cache for the listed property.
14054 2009-01-12  Jackson Harper  <jackson@ximian.com>
14056         * xaml.cpp: Fix typo, makes ControlTemplates inside of
14057         ControlTemplates work properly.
14059 2009-01-12  Jackson Harper  <jackson@ximian.com>
14061         * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
14062         we can load some sites and see which properties are missing, right
14063         now it will only work for attributes. Intentionally not using the
14064         debug flags stuff, because i don't want this hack to stay around
14065         for very long.
14067 2009-01-12  Jackson Harper  <jackson@ximian.com>
14069         * xaml.cpp: Stop trying to set attributes once we hit the first
14070         error.
14072 2009-01-12  Jeffrey Stedfast  <fejj@novell.com>
14074         * collection.cpp (InlineCollection::Equals): New convenience
14075         method to replace text.cpp's inlines_simple_text_equal().
14077         * textbox.h (class TextBox): Now implements ITextSource.
14079         * text.cpp (Inline::UpdateFontDescription): New convenience method
14080         to populate the cached TextFontDescription since we can no longer
14081         rely on doing so from within OnPropertyChanged().
14082         (Inline::Equals): Base comparison method used by
14083         InlineCollection::Equals().
14084         (Run::Equals): Compare the Text property as well.
14085         (TextBlock::Layout): Call UpdateFontDescription() on each Inline
14086         as we iterate through them. Also updated for TextRun ctors.
14087         (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
14088         premise is that we do not want to force a layout calculation to be
14089         redone, we just need to invalidate if all that changed was a
14090         foreground brush.
14091         (inlines_simple_text_equal): Removed, use
14092         InlineCollection::Equals() instead.
14093         (TextBlock::SetTextInternal): Updated to use
14094         InlineCollection::Equals().
14096         * text.h (class Inline): Now implements the ITextSource
14097         interface. Moved the local TextFontDescription and autogen state
14098         into the private section and added accessors for them.
14100         * layout.cpp|h (class ITextSource): New interface sued by TextRuns
14101         and the internal Layout logic to grab a run's foreground brush and
14102         text decorations.
14103         (TextRun::ctor): No longer take TextDecoration,
14104         TextFontDescription, or Brush arguments, instead takes an
14105         ITextSource that it can query for those properties when it needs
14106         to.
14107         (RenderLine): Updated to get the decorations and foreground brush
14108         from the ITextSource.
14110 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14112         * validators.h:
14113         * validators.cpp:
14114         * mediaelement.h:
14115         * dependencyproperty.g.cpp: Add range validation to TimeSpan
14117 2009-01-12  Jackson Harper  <jackson@ximian.com>
14119         * xaml.cpp: Moved nameditem lookup into the parser info so we can
14120         use the parser context data to lookup resources.  This allows
14121         templates to reference StaticResources.
14123 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14125         * clock.cpp: Minimum FPS is clamped at 1.
14126         
14127 2009-01-12  Jackson Harper  <jackson@ximian.com>
14129         * xaml.cpp|h: Create a xaml context object so we can save some
14130         state information for buffered templates.
14131         * template.h|cpp: Updated xaml methods.
14133 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14135         * animation.h:
14136         * validators.h:
14137         * validators.cpp:
14138         * dependencyproperty.g.cpp: Add correct validator for
14139         Storyboard.TargetName and Storyboard.TargetProperty
14141 2009-01-12  Sebastien Pouliot  <sebastien@ximian.com>
14143         * grid.h: Hide RowDefinitionCollection ctor from managed code
14144         * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
14145         returns true the Style value can still be NULL (fix two new crash
14146         in SDK control unit tests)
14148 2009-01-12  Andreia Gaita  <avidigal@novell.com>
14150         * stackpanel.cpp|h: removed, stackpanel is now done in managed
14151           land
14153         * cbinding.cpp|h, dependencyproperty.g.cpp,
14154           type-generated.cpp, type.h,
14155           value.h: regen
14156     
14157         * Makefile.am, src.mdp: update build
14159 2009-01-11  Chris Toshok  <toshok@ximian.com>
14161         * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
14162         now.  the run fg will always be initialized.
14163         (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
14164         (TextLayout::Render): no need to pass in the default foreground.
14166         * runtime.cpp (runtime_shutdown): text_shutdown is gone.
14168         * text.h, text.cpp: stop caching the foreground.  and there's no
14169         need to create the default foreground brush in code.  it's simply
14170         the default value of the Foreground dependency property.
14171         (inlines_simple_text_equal): this needed fixing up since the font
14172         flags really aren't used for inheritance anymore - we need (and
14173         really, always needed to) compare the actual values, not just if
14174         they're set.
14175         (text_shutdown): no need for this anymore.
14176         
14177         * textbox.cpp (TextBoxView::Paint): same.  no more default_fg
14178         needed.
14180 2009-01-11  Chris Toshok  <toshok@ximian.com>
14182         * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
14183         if a DO is frozen, any SetValue() call raises an
14184         UnauthorizedAccessException.  We use this for default values of
14185         DependencyProperties.
14187         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
14188         freeze the default value.
14190 2009-01-11  Andreia Gaita  <avidigal@novell.com>
14192         * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(), 
14193         it could be called in the middle of a tick. Instead, just reset and 
14194         reuse the clock on every tick. Track if the timer is stopped during 
14195         a tick so the clock is not relaunched. Set a default duration so 
14196         it's never automatic.
14198 2009-01-11  Chris Toshok  <toshok@ximian.com>
14200         * text.h, text.cpp (class Inline): generate accessors for
14201         FontFamily, FontSize, and TextDecoration.
14202         (class Inline, class TextBlock): add an internal DP for the font
14203         filename.
14204         (Inline::OnPropertyChanged): the only case that's needed at the
14205         moment is foreground, but that's slated for the axe as well.
14206         
14207         * dependencyproperty.g.cpp: regen.
14209         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
14210         make sure we inherit properly across the logical tree if the node
14211         doesn't have a visual parent (this fixes inheritance for non
14212         UIElement's, like Runs).  Also, add the FontFilename property to
14213         the list of things that inherit.
14215         * dependencyobject.h,
14216         dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
14217         method.  Providers can call this whenever the value at their
14218         precedence level has changed.  It contains all the smarts to
14219         correctly generate OnPropertyChanged method calls in the face of
14220         all the provider levels.
14222 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
14224         * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
14225         TextChangedEvent and SelectionChangedEvent. Don't combine those
14226         into the ModelChangedEvent that is only meant for TextBoxView.
14227         (TextBox::OnPropertyChanged): Emit TextChangedEvent and
14228         SelectionChangedEvent appropriately.
14229         (TextBoxView::OnSelectionChanged): New event callback handler.
14230         (TextBoxView::OnTextChanged): Same.
14231         (TextBoxView::OnModelChanged): Don't handle text/selection change
14232         notification here anymore, because those 'change' enum types have
14233         been dropped.
14234         (TextBoxView::OnPropertyChanged): Need to listen to more events.
14236 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
14238         * value.cpp (Value::Value): the const char* ctor now takes a bool
14239         argument specifying whether to take ownership of the string
14240         buffer.
14242         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
14243         don't need to keep a char* selection, we only need it temporarily
14244         while creating the Value*.
14245         (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
14246         pressed.
14247         (TextBox::ClearSelection): Don't set the TextProperty value
14248         anymore. Also don't bother with the setvalue state variable
14249         anymore.
14250         (TextBox::OnPropertyChanged): Don't worry about setvalue state
14251         here anymore.
14252         (TextBox::TextBox): Get rid of 'setvalue' state.
14254 2009-01-10  Geoff Norton  <gnorton@novell.com>
14256         * media.cpp: surface->filename might be NULL, so we need to guard
14257         against this in our cleanup accordingly.
14259 2009-01-09  Chris Toshok  <toshok@ximian.com>
14261         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14262         oops.  we still need to seal the style if that's the thing we're
14263         setting.
14265 2009-01-09  Chris Toshok  <toshok@ximian.com>
14267         * Makefile.am (libmoon_include_headers): add provider.h
14268         (libmoon_la_SOURCES): add provider.cpp
14270         * provider.h, provider.cpp: clean up this some.  the only provider
14271         really not being used right now is the Animation value provider,
14272         since the animation code assumes it can just set local values.
14273         
14274         * shape.cpp (Shape::OnPropertyChanged): no need to look up the
14275         default value - GetValue will return it now.
14277         * textbox.h, textbox.cpp (class
14278         TextBoxDynamicPropertyValueProvider): new custom provider class to
14279         replace the ::GetValue override.  Install it in the ctor.
14281         * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
14282         new custom provider class to replace the ::GetValue override.
14283         Install it in the ctor.
14284         (GetBoundingWidth, GetBoundingHeight): don't use
14285         GetValueNoDefault.
14286         (SetActualHeight, SetActualWidth): no longer needed.
14287         (textblock_property): no longer needed.
14288         (Inline::GetDefaultValue): no longer needed.  the inherited
14289         property provider handles it.
14290         (TextBlock::OnPropertyChanged): no need to deal with
14291         Actual{Height,Width}Property here anymore.
14292         
14293         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
14294         remove styles initialization.
14295         (FrameworkElement): remove styles destruction.
14296         (FrameworkElement::ClearValue): this doesn't need any styles stuff
14297         anymore - just clear the binding if we have one, and otherwise
14298         chain up.
14299         (FrameworkElement::GetLocalValue): I'm not sure why this was
14300         looking things up via a style, as styles are a lower priority than
14301         local values.  if there's a binding return that, otherwise chain
14302         up.
14303         (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
14304         here.
14305         (FrameworkElement::UpdateFromStyle): remove.  the style lookup is
14306         done in the style provider.
14309         * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
14310         public Style* field and use SetStyle to set it.
14311         (Style::GetPropertyValue): new method.  this should probably be a
14312         hash lookup instead of the linear lookup, but for now this will
14313         work.
14314         (SetterBaseCollection::ValidateSetter): make this a static method
14315         on the class instead of just a C function.
14317         * dependencyobject.h: add a couple more GetValue overrides to deal
14318         with precedence levels.  Remove GetDefaultValue, as it's no longer
14319         needed - we can finally use DependencyProperty::GetDefaultValue as
14320         it's meant to be used.
14322         * dependencyobject.cpp (DependencyObject::GetLocalValue): change
14323         this to just call the LocalValue provider.
14324         (DependencyObject::GetValue (DependencyProperty* property)): call
14325         the overload that lets us specify a starting precedence (start at
14326         the highest precedence level).
14327         (DependencyObject::GetValue (DependencyProperty *property,
14328         PropertyPrecedence startingAtPrecedence)): new method.  loop over
14329         the providers until one of them gives us a value.
14330         (DependencyObject::GetValueSkippingPrecedence): we need this for
14331         looking up the value of FrameworkElement::StyleProperty from
14332         inside the style provider.
14333         (DependencyObject::GetValueNoDefault): reimplement this for the
14334         time being using the providers.
14335         (DependencyObject::DependencyObject): register all the default
14336         providers.  we leave a DynamicValue slot open for subclasses who
14337         want to implement "computed" properties.
14338         (DependencyObject): free all the providers.
14340         * dependencyproperty.g.cpp: regen
14342 2009-01-09  Geoff Norton  <gnorton@novell.com>
14344         * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
14346 2009-01-09  Geoff Norton  <gnorton@novell.com>
14348         * media.cpp: Ensure that we actually do change the value of the 
14349         Source property when we call MediaBase::SetSource (char*)
14351 2009-01-09  Jeffrey Stedfast  <fejj@novell.com>
14353         * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
14354         with layout-hint changes (including TextWrapping hints).
14355         (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
14356         anymore. Also no need to set the wrapping mode here anymore as it
14357         is set in OnProeprtyChanged() now.
14359         * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
14360         it doesn't make sense to have them separate.
14362         * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
14363         we'll pass changes directly to the View as they get updated.
14364         (TextBox::OnPropertyChanged): If the layout hints change, set
14365         changed to the appropriate TextBoxModelChanged hint enum. Also
14366         pass the PropertyChangedEventArgs to the ModelChangedEventArgs
14367         ctor so that TextBoxView can grab the new value to update its
14368         state.
14369         (TextBoxView::OnModelChanged): Handle the new enums.
14370         (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
14371         a new TextBox gets set.
14373 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14375         * dependencyproperty.cpp: 'validator' should never be null - it should
14376         be default_validator instead. Regression caused by previous change to
14377         generator.
14379 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14381         * validators.cpp: Validator only converts -1 to null. All other values
14382         appear to be left the same
14384 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14386         * validators.h:
14387         * mediaelement.h:
14388         * validators.cpp: Add a validator to AudioStreamIndex. This converts
14389         negative values to null, as the unit tests show.
14391 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14393         * dependencyproperty.h:
14394         * dependencyproperty.cpp:
14395         * dependencyproperty.g.cpp: Make it possible to use validators with
14396         Nullable properties.
14398 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
14400         * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
14401         (Glyphs::GetFill): Same.
14403         * text.h (class Glyphs): GenerateAccessors for FillProperty too.
14405         * textbox.cpp (TextBox::CursorRight): Implemented.
14406         (TextBox::CursorLeft): Implemented.
14407         (TextBox::GetValue): New override to set the SelectedText property
14408         if the selection has been changed since the last request.
14410         * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
14412         * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
14413         different way so that we don't have to use GetValueNoDefault().
14415 2009-01-08  Larry Ewing  <lewing@novell.com>
14417         * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
14419         * geometry.h, geometry.cpp (class RectangleGeometry): remove
14420         GetRadius logic everything is handled property by the properties
14421         these days.
14423 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
14425         * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
14426         KeyEventArgs APIs.
14428         * keyboard.cpp (Keyboard::KeyIsChar): Removed.
14429         (Keyboard::KeyToChar): Removed.
14430         (Keyboard::KeyIsMovement): Removed.
14432         * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
14433         GetState() to make the purpose clearer.
14434         (KeyEventArgs::IsModifier): New helper method.
14435         (KeyEventArgs::GetKeyVal): New helper method.
14436         (KeyEventArgs::GetUnicode): New helper method.
14438         * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
14439         state, all places that set dirty=true are now handled by
14440         TextBoxView instead. Only call Invalidate() when appropriate. For
14441         selection state changes, check setvalue state to see if we need to
14442         do anything.
14443         (TextBox::ClearSelection): New helper method to clear the
14444         selection.
14445         (TextBox::OnKeyDown): Properly clear the selection using
14446         ClearSelection() so that the DP values get updated.
14448 2009-01-08  Larry Ewing  <lewing@novell.com>
14450         * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
14451         replace it with proper NAN state.  Remove MixedWidthAndHeight for
14452         c&p checks that will be removed in the layou code.
14453         
14454         * frameworkelement.cpp: more nan cleanup.
14456         * border.cpp:
14457         * control.cpp: handle nan.
14459 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14461         * style.h:
14462         * value.h:
14463         * value.h.in:
14464         * frameworkelement.cpp:
14465         * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
14466         to/from native. This removes a hack in Style where DP's used to be
14467         looked up by name, which couldn't be done with properties registered
14468         through C#. Fixes 2 NUnit tests.
14470 2009-01-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14472         * validators.h:
14473         * validators.cpp: Added DoubleGreaterThanZeroValidator.
14475         * mediaelement.h: Use double validator instead of int validator for
14476         double properties.
14478         * dependencyproperty.g.cpp: Regenerated.
14480 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14482         * dependencyobject.cpp: *Warning - Changing default values* When
14483         DO.ClearValue is called, we always return 'NULL' as the new value.
14484         This is incorrect as the pattern: do.ClearValue (property),
14485         do.GetValue (property) will actually return do.GetDefaultValue
14486         (DependencyProperty*). This change fixes a failing assertion in
14487         StyleTest.cs - ModifyAfterBinding.
14489 2009-01-08  Sebastien Pouliot  <sebastien@ximian.com>
14491         * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
14492         Regenerated for ITEM_COLLECTION
14494 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14496         * text.cpp:
14497         * dependencyobject.h:
14498         * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
14499         overridden by Inlines
14501 2009-01-07  Larry Ewing  <lewing@novell.com>
14503         * frameworkelement.cpp, frameworkelement.h:
14504         move all the various duplicate versions GetTransformOrigin here.
14506         * mediaelement.cpp: fix GetTransformOrigin for new default values.
14507         
14508         * shape.cpp, shape.h:
14509         * canvas.cpp, canvas.h:
14510         * media.cpp, media.h:
14511         * shape.cpp, shape.h:
14512         * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
14514         Fixes run-tests 27
14516 2009-01-07  Geoff Norton  <gnorton@novell.com>
14518         * collection.cpp: Ensure that we call any AddWithError overrides
14519         that might exist in a subclass (like TimelineMarkerCollection) as
14520         it could affect the integer returned.
14522 2009-01-07  Geoff Norton  <gnorton@novell.com>
14524         * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
14525         to TextStream::OpenFile
14526         * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
14527         * downloader.cpp: GetResponseText needs to ensure it returns data in
14528         UTF-8, and doesn't handle zip files.
14530 2009-01-07  Jeffrey Stedfast  <fejj@novell.com>
14532         * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
14533         input a bit. Cutting a lot of corners for now, but oh well.
14534         (TextBoxView::TextBoxView): Hooked up some cursor blinking
14535         action. We don't actually render the cursor yet tho.
14537         * keyboard.cpp (Keyboard): Moved into it's own source file from
14538         eventargs.cpp. I have a sneaking suspicion that this logic will
14539         get large and complicated someday soon.
14541 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14543         * dependencyobject.cpp (set_surface): Add null check since the 
14544         hashtable can contain Value with a NULL DependencyObject
14546 2009-01-07  Larry Ewing  <lewing@novell.com>
14548         * canvas.cpp:
14549         * frameworkelement.cpp:
14550         * shape.cpp: Quick hacks to get test 0 passing after the default
14551         value changes.
14553 2009-01-07  Chris Toshok  <toshok@ximian.com>
14555         * textbox.h (class TextBox): add @CallInitialize so we can set the
14556         DefaultStyleKey.
14558         * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
14559         call to before ApplyTemplate(), as the template isn't applied
14560         until after the Loaded event is fired.
14562 2009-01-07  Geoff Norton  <gnorton@novell.com>
14564         * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
14565         memory cache of all downloads <= 64KB that are streamed in 1 shot.
14567 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14569         * contentcontrol.h|cpp: Remove properties that are not in SL2 final
14570         * dependencyproperty.g.cpp: Regenerated.
14572 2009-01-07  Alan McGovern  <amcgovern@novell.com>
14574         * uielement.h:
14575         * validators.h:
14576         * validators.cpp:
14577         * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
14578         it to the default cursor instead.
14580 2009-01-06  Larry Ewing  <lewing@novell.com>
14582         * uielement.h (class UIElement): add a default value to
14583         UIElement::CusorProperty, fixes a crossing event crash.
14585         * uielement.cpp (UIElement::ElementRemoved): remove the element
14586         from the dirty list since it is an orphan now.
14588         * runtime.cpp (Surface::PaintToDrawable): add some logging.
14590 2009-01-06  Jeffrey Stedfast  <fejj@novell.com>
14592         * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
14593         callbacks so that we can eventually make TextBox receive keyboard
14594         input. Currently the events never seem to fire, tho.
14596 2009-01-06  Sebastien Pouliot  <sebastien@ximian.com>
14598         * enums.h: Add enums values for MouseCursorSize[NS|WE]
14599         * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
14601 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14603         * frameworkelement.cpp:
14604         * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
14605         again after my previous commit changing the handling of
14606         GetValue/GetLocalValue.
14608 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14610         * cbinding.h:
14611         * cbinding.cpp:
14612         * dependencyobject.h:
14613         * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
14614         DP.GetDefaultValue function. Fixed the implementation of 'null'
14615         Value*. Now a Value* with GetIsNull () == true will be returned as
14616         'NULL' for calls to GetValue or GetValueNoDefault. This makes
14617         Value.GetIsNull opaque to native code so existing null checks will
14618         work as they should. The only function which is aware of GetIsNull is
14619         GetLocalValue, and this correctly handles this case.
14621 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14623         * textbox.h:
14624         * validators.h:
14625         * validators.cpp:
14626         * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
14627         null string is passed to PasswordBox.Password. Use correct range
14628         validation for MaxLength.
14630 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14632         * frameworkelement.h:
14633         * frameworkelement.cpp:
14634         * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
14635         NAN.
14637 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14639         * style.h:
14640         * style.cpp:
14641         * frameworkelement.cpp: Implement proper validation of Setters and also
14642         correctly implement behaviour of sealed/unsealed styles. They are now
14643         passing all the NUnit tests except for one.
14645 2009-01-05  Chris Toshok  <toshok@ximian.com>
14647         * frameworkelement.h, frameworkelement.cpp: remove all reference
14648         to template_namescope.
14650         * template.cpp (ControlTemplate::Apply): remove call to
14651         FrameworkElement::SetTemplateNameScope - just set it as the
14652         namescope on the root of the applied template.  This way name
14653         references within the template resolve correctly.
14655         * control.cpp (Control::GetTemplateChild): with the above change,
14656         this just becomes template_root->FindName ()
14658 2009-01-05  Sebastien Pouliot  <sebastien@ximian.com>
14660         * runtime.cpp: Add a null check in Surface::FocusElement since both
14661         the C bindings and the MouseLeftButtonDown event can call it with a
14662         NULL value causing a SIGSEGV.
14664 2009-01-05  Jeffrey Stedfast  <fejj@novell.com>
14666         * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
14667         TextBoxView in the appropriate place.
14669         * control.cpp (Control::GetTemplateChild): Now takes a const
14670         char*.
14672 2009-01-05  Alan McGovern  <amcgovern@novell.com>
14674         * uielement.h: Cursor shouldn't have a default value in SL2.
14676         * template.cpp:
14677         * dependencyobject.h:
14678         * dependencyobject.cpp:
14679         * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
14680         code calling NameScope::[Un]RegisterName to ignore empty names just
14681         like it ignores null names.
14683 2009-01-05  Alan McGovern  <amcgovern@novell.com>
14685         * validators.h:
14686         * validators.cpp:
14687         * frameworkelement.h:
14688         * frameworkelement.cpp:
14689         * dependencyproperty.h:
14690         * dependencyproperty.cpp:
14691         * dependencyproperty.g.cpp: We need a reference to the current
14692         DependencyProperty so that write-once properties can be properly
14693         validated. Moved validation of StyleProperty from
14694         FrameworkElement.SetValue into the new StyleValidator.
14696 2009-01-05  Alan McGovern  <amcgovern@novell.com>
14698         * validators.h:
14699         * validators.cpp:
14700         * dependencyobject.cpp:
14701         * dependencyproperty.h:
14702         * dependencyproperty.cpp: When validating the Value we need a reference
14703         to the current DependencyObject as some properties are
14704         write-once/read-only
14706 2009-01-02  Jeffrey Stedfast  <fejj@novell.com>
14708         * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
14709         dirty flag. TextBox is basically just a model now. Also added a
14710         ModelChanged event.
14711         (TextBox::Render): Removed.
14712         (TextBox::GetValue): Removed, dunno why it was ever overridden.
14713         (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
14714         view needs to be updated.
14715         (TextBoxView): New class that renders the contents of a TextBox
14716         control.
14718         * value.cpp (Value::GetIsNull): Fixed compiler warning.
14720         * pipeline.h (class MediaMarker): dtor needs to be virtual.
14722 2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>
14724         * validators.cpp: Remove the printf calls (that won't compile under
14725         SLED10 without changing includes).
14727 2008-12-22  Alan McGovern  <amcgovern@novell.com>
14729         * border.h:
14730         * validators.h:
14731         * validators.cpp:
14732         * dependencyproperty.g.cpp: Add validators for the Border class
14734         * value.h:
14735         * value.cpp:
14736         * value.h.in: unused_padding is now used as a bitfield. Currently used
14737         to indicate whether an object is null or not
14739         * frameworkelement.cpp: the styles hashtable only indicates if the
14740         current value comes from a style. It does not show if a dp has been
14741         bound to a style. If the current value is cleared, we need to update
14742         from the style to repopulate the styles hashtable and correctly set
14743         the style value. This can be optimised by passing the current dp to
14744         UpdateFromStyle.
14746         * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
14747         set the null value as opposed to calling do.ClearValue(dp).
14749 2008-12-22  Andreia Gaita  <avidigal@novell.com>
14751         * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
14752         Regenerated for DispatcherTimer
14754         * animation.h: Move Completed events to the timeline
14756         * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
14757         clock whose duration is the timer Interval property. The timeline's
14758         completed event is a tick of the timer, and the clock gets restarted
14759         when it completes.
14760         Save the current time when a clock starts so that clocks that are
14761         set to be started on the next tick with BeginOnTick include the time
14762         between the BeginOnTick call and the actual Begin in their elapsed
14763         time. Also, clocks beneath the time manager root clock now track time
14764         since they were started, and not since the time manager started.
14766 2008-12-20  Larry Ewing  <lewing@novell.com>
14768         * mediaelement.cpp (MediaElement::UpdateProgress): 
14769         * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
14770         to 0.05 which appears to be what the docs actually say.
14772 2008-12-19  Sebastien Pouliot  <sebastien@ximian.com>
14774         * cbinding.cpp|h: Regenerated for read-only DP.
14775         * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter 
14776         to RegisterManagedProperty.
14778 2008-12-19  Alan McGovern  <amcgovern@novell.com>
14780         * src.mdp:
14781         * animation.h:
14782         * dependencyproperty.g.cpp: Add validation + tests for
14783         Storyboard.TargetNameProperty and TargetPropertyProperty
14785 2008-12-18  Chris Toshok  <toshok@ximian.com>
14787         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
14788         textbox.h: decorate properties with @Validator attributes which
14789         the generator uses to generate the proper call to
14790         DependencyProperty::RegisterFull.
14792         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
14793         textbox.cpp: Remove the calls to
14794         DependencyProperty::SetValueValidator.  They're generated by the
14795         generator now from our metadata.
14797         * dependencyproperty.cpp, dependencyproperty.h: add new parameter
14798         to RegisterFull prototypes so we can supply a validator at
14799         registration time.
14801         * dependencyproperty.g.cpp: regen.
14802         
14803 2008-12-18  Chris Toshok  <toshok@ximian.com>
14805         * validators.cpp, validators.h: move these into a class instead of
14806         static C methods, and don't include C methods into every file.  we
14807         were getting warnings every time they went unused, and namespacing
14808         with C++ is better than #including them all over the place.
14810         * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
14811         dependencyproperty.cpp, frameworkelement.cpp: track change above.
14812         
14813 2008-12-18  Chris Toshok  <toshok@ximian.com>
14815         * xaml.cpp (class XamlElementInstanceManaged): this instance can
14816         be a DependencyObject sometimes.  we need an instance field to
14817         tell.
14818         (XamlElementInstanceManaged::XamlElementInstanceManaged): when
14819         @obj, set is_dependency_object to true.  This fixes setting x:
14820         namescope properties on managed DependencyObject subclasses, as in
14821         '<Button x:Name="foo" />'.
14822         (dependency_object_add_child): remove the template case from here.
14823         it'll be handled differently (being parsed at application time,
14824         essentially).
14826 2008-12-18  Alan McGovern  <amcgovern@novell.com>
14828         * text.cpp:
14829         * control.cpp:
14830         * validators.h:
14831         * mediaelement.cpp:
14832         * multiscaleimage.h:
14833         * multiscaleimage.cpp:
14834         * frameworkelement.cpp: Add validation to DPs
14836 2008-12-18  Alan McGovern  <amcgovern@novell.com>
14838         * mediaelement.cpp: Add validation for NaturalVideoHeight and
14839         NaturalVideoWidth.
14841 2008-12-18  Alan McGovern  <amcgovern@novell.com>
14843         * src.mdp:
14844         * grid.cpp:
14845         * textbox.h:
14846         * textbox.cpp:
14847         * Makefile.am:
14848         * dependencyobject.h:
14849         * frameworkelement.h:
14850         * frameworkelement.cpp:
14851         * dependencyproperty.cpp: Move parameter validation for DP's to use the
14852         new ValueValidator callback.
14854         * validators.h: All validators are defined in this header file so they
14855         can be easily reused for different DPs.
14857 2008-12-18  Alan McGovern  <amcgovern@novell.com>
14859         * grid.cpp: Correctly set the validators - forgot to revert changes
14860         before committing.
14862 2008-12-18  Alan McGovern  <amcgovern@novell.com>
14864         * grid.cpp:
14865         * dependencyobject.cpp:
14866         * dependencyproperty.h:
14867         * dependencyproperty.cpp: Add the ability to validate the value for a
14868         DependencyProperty before setting it.
14870 2008-12-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
14872         * text.h, text.cpp: Remove some useless code.
14874 2008-12-16  Alan McGovern  <amcgovern@novell.com>
14876         * cbinding.h:
14877         * cbinding.cpp:
14878         * dependencyproperty.h: If a default value has been set in native code,
14879         propagate that to managed code.
14881 2008-12-15  Chris Toshok  <toshok@ximian.com>
14883         * template.cpp (ControlTemplate::Apply): make sure we clear the
14884         toplevel namescope from the template tree.  instead we keep a
14885         different namescope around (full of the duplicated elements) which
14886         is populated during DuplicateObject.
14888 2008-12-15  Jeffrey Stedfast  <fejj@novell.com>
14890         * xaml.cpp: Macroize the static tables.
14891         (create_binding_expression_from_markup): Got rid of
14892         BindingExtension::path.
14893         (xaml_markup_parse_binding): Update the markup pointer before a
14894         successful return.
14896 2008-12-15  Jackson Harper  <jackson@ximian.com>
14898         * xaml.cpp: fix typo.
14899         - remove sneaky debug
14901 2008-12-15  Jackson Harper  <jackson@ximian.com>
14903         * xaml.cpp: Always check if we are in buffering mode. (Otherwise
14904         we'll get cdata content at the end of a template or a namespace
14905         handler during a template).
14907 2008-12-15  Alan McGovern  <amcgovern@novell.com>
14909         * grid.h:
14910         * dependencyproperty.g.cpp: ShowGridLines is true by default.
14912 2008-12-15  Alan McGovern  <amcgovern@novell.com>
14914         * control.cpp: Default foreground brush is black
14916 2008-12-12  Jackson Harper  <jackson@ximian.com>
14918         * xaml.cpp: Remove some old code.
14920 2008-12-12  Jackson Harper  <jackson@ximian.com>
14922         * xaml.cpp: Still need to call setproperty on non managed
14923         attributes, they could be events.
14925 2008-12-12  Jackson Harper  <jackson@ximian.com>
14927         * xaml.cpp: A little cleanup so that we only try setting non-dp
14928         attributes on managed objects. (previously we would try but fail,
14929         so the results are basically the same, just less waste).
14931 2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
14933         * runtime.h: Make DetachDownloaders public so that the plugin can call
14934           it.
14936 2008-12-12  Alan McGovern  <amcgovern@novell.com>
14938         * textbox.cpp: Add bounds checking to SelectionStartProperty too
14940 2008-12-12  Alan McGovern  <amcgovern@novell.com>
14942         * textbox.h:
14943         * textbox.cpp: Add range checking for MaxLengthProperty and
14944         SelectionLengthProperty
14946 2008-12-11  Sebastien Pouliot  <sebastien@ximian.com>
14948         * dependencyobject.h: Name setter is public in SL2 final.
14950 2008-12-11  Chris Toshok  <toshok@ximian.com>
14952         * control.h, control.cpp: hook up TemplateApplied event.
14954         * type-generated.cpp: regen.
14956 2008-12-11  Chris Toshok  <toshok@ximian.com>
14958         * control.h (class Control): generate cbinding/pinvoke for
14959         GetTemplateChild.
14961         * cbinding.h, cbinding.cpp: regen.
14963 2008-12-11  Alan McGovern  <amcgovern@novell.com>
14965         * textbox.cpp: Unbreak the build.
14967 2008-12-11  Alan McGovern  <amcgovern@novell.com>
14969         * textbox.cpp: It should not be possible to set a null value as the
14970         password.
14972 2008-12-11  Alan McGovern  <amcgovern@novell.com>
14974         * textbox.h:
14975         * dependencyproperty.g.cpp: Fix several issues with default values for
14976         TextBox and PasswordBox
14978 2008-12-11  Andreia Gaita  <shana@jitted.com>
14980         * cbinding.h|cpp, clock.h: Framerate accessors
14982 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
14984         * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
14985           remove some stale code.
14987 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
14989         * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
14990           audio field. Added comments/explicit verification in every method
14991           describing which methods must be thread-safe and which aren't.
14993 2008-12-10  Jeffrey Stedfast  <fejj@novell.com>
14995         * xaml.cpp (parser_error): Now takes varargs to simplify
14996         things. Fixed all callers to not strdup/g_strdup_printf (and leak)
14997         the message argument.
14998         (create_binding_expression_from_markup): Check that the source is
14999         a DO before casting.
15001 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15003         * type.h:
15004         * textbox.h:
15005         * type-generated.cpp:
15006         * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
15007         is represented by an int32 in unmanaged code.
15009 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15011         * audio-pulse.cpp: Fix int->enum conversion.
15013 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15015         * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
15016           random constants for the connected variable.
15018 2008-12-10  Jackson Harper  <jackson@ximian.com>
15020         * xaml.cpp: Add a buffering mode to the parser, this mode is used
15021         for templates and simply buffers all the text without doing
15022         any real parsing. So everything between a
15023         <DataTemplate>..</DataTemplate> block is turned into a string.
15025 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15027         * textbox.h:
15028         * textbox.cpp: Implement the SelectAll function and raise an event when
15029         the Password changes
15031         * type.h:
15032         * value.h:
15033         * cbinding.h:
15034         * cbinding.cpp:
15035         * type-generated.cpp:
15036         * dependencyproperty.g.cpp: Commit the files from the generator.
15038 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15040         * textbox.h: Partial implementation of the PasswordBox control
15042 2008-12-09  Chris Toshok  <toshok@ximian.com>
15044         * template.h, template.cpp: add DataTemplates.
15046         * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
15047         regen.
15048         
15049 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15051         * xaml.cpp (create_binding_expression_from_markup): Converter can
15052         also take a StaticResource.
15054         * playlist.cpp: Don't use ctype is*() with a char argument, these
15055         functions are meant to take unsigned char values cast to an
15056         int. Use the g_ascii_is*() functions instead.
15058         * xaml.cpp (create_binding_expression_from_markup):
15059         ConverterParameter can either be a string or a StaticResource. If
15060         it is a StaticResource, lookup the resource object.
15062         * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
15063         takes a Value* since we need to handle either string or
15064         DependencyObject.
15066 2008-12-09  Jackson Harper  <jackson@ximian.com>
15068         * xaml.cpp: Don't use the cpp initializers.
15069         - More consistent naming.
15071 2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15073         * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
15074           pulseaudio to initialize - keep waiting if we get spurious wakeups.
15076 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15078         * xaml.cpp (create_binding_expression_from_markup): Lookup the
15079         StaticResource property for Source.
15081         * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
15082         longer needed.
15083         (BindingExpressionBase::*): No longer do dynamic lookup of the
15084         source_name.
15086 2008-12-09  Sebastien Pouliot  <sebastien@ximian.com>
15088         * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to 
15089         false in C++ constructor.
15091 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15093         * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
15094         action.
15095         (xaml_markup_parse_binding): Fixed to handle
15096         "Source={StaticResource ...}" syntax.
15098 2008-12-08  Sebastien Pouliot  <sebastien@ximian.com>
15100         * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
15101         for UserControl while it's true for Control
15103 2008-12-08  Jeffrey Stedfast  <fejj@novell.com>
15105         * xaml.cpp: A bit of refactoring...
15107         * binding.cpp (BindingExpressionBase::SetConverterParameter):
15108         Added.
15109         (BindingExpressionBase::SetConverterCulture): Same.
15110         (BindingExpressionBase::SetConverter): Same.
15111         (BindingExpressionBase::SetSourceName): Same.
15112         (BindingExpressionBase::AttachListener): Lookup the source by name
15113         if we don't already have it.
15114         (BindingExpressionBase::GetValue): Same.
15115         (BindingExpressionBase::UpdateSource): Same.
15117         * xaml.cpp (binding_expression_from_str): Finished implementing.
15119 2008-12-07  Jeffrey Stedfast  <fejj@novell.com>
15121         Fixes bug #444872
15123         Patches by Argiris Kirtzidis
15125         * dependencyobject.h: Fix forward declarations of classes declared
15126         struct.
15128         * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
15129         point constant to make sure we get the correct overload in MSVC.
15131         * playlist.cpp (duration_from_asx_str): Same.
15133         * value.cpp (Value::FreeValue): Free corner radius.
15135 2008-12-05  Geoff Norton  <gnorton@novell.com>
15137         * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
15138         and sometimes async.  Lets ensure we can actually connect before
15139         continuing on.
15141 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15143         * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
15145         * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
15146         #if SL_2_0 check.
15148         * binding.h (class Binding): Added more bool members.
15150         * xaml.cpp (binding_expression_from_str): New method to
15151         parse {Binding} markup syntax into a BindingExpression.
15152         (handle_xaml_markup_extension): Parse Binding markup extensions.
15154 2008-12-05  Chris Toshok  <toshok@ximian.com>
15156         * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
15157         the GenerateAccessors thing the right way.
15159         * dependencyproperty.g.cpp: regen.
15160         
15161 2008-12-05  Jackson Harper  <jackson@ximian.com>
15163         * xaml.cpp: Move the markup extension handler out of
15164         set_attributes, ideally each markup extension will get it's own
15165         function eventually.
15167 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15169         * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
15170         char *
15172         * xaml.cpp: Conditionally define DEBUG, which I guess is a
15173         temporary thing, in a way which will not spew gcc warnings.
15175 2008-12-05  Jackson Harper  <jackson@ximian.com>
15177         * xaml.cpp: Let managed code own it's Value pointers.
15179 2008-12-04  Jackson Harper  <jackson@ximian.com>
15181         * xaml.cpp: We can store the Value* in the base element instance
15182         now, since they all use a Value.
15184 2008-12-05  Fernando Herrera  <fherrera@novell.com>
15186         * playlist.cpp:
15187         * playlist.h: Don't check duration at playlist level but let MediaPlayer
15188         handle it. Don't do a delayed element->Play() for repeats because that
15189         can broke js doing "e.Play();e.Stop()"
15191 2008-12-04  Fernando Herrera  <fherrera@novell.com>
15193         * playlist.cpp (Playlist::Open): Check duration properly.
15195 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15197         * binding.cpp: Get rid of excessive use of 'this' keyword.
15199 2008-12-04  Geoff Norton  <gnorton@novell.com>
15201         * playlist.cpp: 100ms not 10s should be when we start playing the
15202         playlist entries.
15204 2008-12-04  Larry Ewing  <lewing@novell.com>
15206         * layout.cpp (RenderLine): do all the filling in one pass rather
15207         than adding a stroke at the end.  Tidy up the path creation and
15208         modification logic.
15210 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15212         We only support vector fonts, so get rid of the TextFont::Render()
15213         API that is only useful as an abstraction over rendering as bitmap
15214         vs pathing. Leave the *Path() APIs which are the only ones
15215         actually used.
15217         * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
15218         fonts are scalable for now.
15220         * font.cpp (TextFont::RenderGlyphPath): Removed.
15221         (TextFont::Render): Same.
15223 2008-12-04  Sebastien Pouliot  <sebastien@ximian.com>
15225         * control.h: Changed my mind and moved DefaultStyleKeyProperty and
15226         IsEnabledProperty to the managed world
15227         * dependencyproperty.g.cpp: regenerated
15229 2008-12-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15231         * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
15232           size using video and audio streams. Fixes #456154.
15234 2008-12-04  Jackson Harper  <jackson@ximian.com>
15236         * xaml.cpp: The element instance now has ownership of the Value
15237         objects.
15239 2008-12-03  Jackson Harper  <jackson@ximian.com>
15241         * xaml.cpp: Cleanup managed namespaces when we shutdown.
15242         - Reduce the number of Value's we are creating. These still aren't
15243         being freed properly, but at least there isn't as many of them.
15245 2008-12-03  Geoff Norton  <gnorton at novell.com>
15247         * media.cpp: Ensure we null our reference to the image loader in
15248         all the failure cases to avoid a possible double free/unref.
15250 2008-12-03  Alan McGovern  <amcgovern@novell.com>
15252         * binding.h:
15253         * frameworkelement.h:
15254         * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
15255         the binding when the context is altered.
15257 2008-12-03  Alan McGovern  <amcgovern@novell.com>
15259         * frameworkelement.h:
15260         * dependencyproperty.g.cpp: DataContext should take 'object'
15262 2008-12-03  Jackson Harper  <jackson@ximian.com>
15264         * xaml.cpp: Call setproperty for all the children in the property
15265         block, this is needed because we aren't doing as much magic
15266         collection handling in addchild anymore.
15268 2008-12-02  Sebastien Pouliot  <sebastien@ximian.com>
15270         * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
15271         * dependencyproperty.g.cpp: regenerated
15273 2008-12-02  Jackson Harper  <jackson@ximian.com>
15275         * xaml.cpp: Map in enumerations in 2.0. So you can do something
15276         like <Visibility>Collapsed</Visibility>
15277         * enums.h|cpp: Expose a function so we can check if a certain enum
15278         exists.
15280 2008-12-02  Jackson Harper  <jackson@ximian.com>
15282         * xaml.cpp: We can map in non-DO managed elements now, so check to
15283         make sure it's actually a dependency object.
15284         - Pass NULL for the property name if we weren't able to query for
15285         a content property name.  The managed backing might be able to
15286         find a name some other way.
15288 2008-12-02  Jackson Harper  <jackson@ximian.com>
15290         * xaml.cpp: Return false if the base content property setter didnt
15291         work.
15293 2008-12-02  Alan McGovern  <amcgovern@novell.com>
15295         * cbinding.h:
15296         * cbinding.cpp:
15297         * dependencyproperty.h:
15298         * dependencyproperty.cpp: Ensure the default value of a CustomDP is
15299         propagated to the unmanaged
15301 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15303         * dependencyobject.cpp: We need to raise changed events when clearing
15304           values too.
15305         * cbinding.cpp, cbinding.h: Regenerated.
15307 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15309         * dependencyproperty.h: Added a IsNullable setter (instead of adding
15310           yet another parameter to the Register methods).
15312 2008-12-02  Andreia Gaita  <shana@jitted.com>
15314         * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
15316 2008-12-02  Andreia Gaita  <shana@jitted.com>
15318         * panel.cpp: Fix debugging messages
15320 2008-12-01  Larry Ewing  <lewing@novell.com>
15322         * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
15323         we can handle image and video brush opacity properly.
15325         * src/control.cpp
15326         * src/layout.cpp
15327         * src/panel.cpp
15328         * src/shape.cpp
15329         * src/text.cpp: use the new Fill and Stroke methods when using
15330         brushes.  Fixes test-imagebrush-opacity* when the masters are
15331         correctly updated.
15333 2008-12-01  Chris Toshok  <toshok@ximian.com>
15335         * frameworkelement.h: add decl for ClearBindingExpression.
15336         
15337         * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
15338         factor out the 2 operations (Detach + hash_remove) here since
15339         we'll be calling it in a couple places.
15340         (binding_destroy): this should delete value, not call ValueFree.
15341         (FrameworkElement::SetBindingExpression): call
15342         ClearBindingExpression if there's a current one, and don't ref the
15343         expression.  Value will hold one.
15344         (FrameworkElement::ClearValue): a couple of changes.
15345         
15346         1. Call ClearBindingExpression instead of just removing the
15347         binding from the hash (and not detaching it...)
15349         2. don't remove the style value from the style has.
15351         3. instead of looping over all the setters in the style just set
15352         the value back to the value in the styles hash.
15353         
15354         4. if we're going to be resetting the value to the style, don't
15355         notify listeners in UIElement::ClearValue.  it'll happen in
15356         SetValue.
15358 2008-12-01  Geoff Norton  <gnorton@novell.com>
15360         * audio.cpp: Fix a logic error that prevented falling back to alsa when
15361         built with both pulse and alsa support.
15363         r: toshok
15365 2008-12-01  Chris Toshok  <toshok@ximian.com>
15367         * template.cpp, template.h: when copying the tree over, register
15368         the template element names to their instantiated counterparts.
15369         and build up a NameScope object as we go.
15371         * frameworkelement.cpp: add a "template_namescope" which maps
15372         names that were registered in the template itself to elements in
15373         the instantiated visual tree.
15375         * control.cpp (Control::GetTemplateChild): look the child up in
15376         the template namescope, not against the visual tree.
15378 2008-12-01  Jackson Harper  <jackson@ximian.com>
15380         * xaml.cpp: Value types can not have properties set on them.
15382 2008-12-01  Fernando Herrera  <fherrera@novell.com>
15384         * mediaelement.cpp:
15385         * mediaplayer.cpp:
15386         * pipeline.cpp:
15387         * playlist.cpp:
15388         * playlist.h: Implement Server side playlists. Still missing duration based
15389         constraints.
15391 2008-12-01  Alan McGovern  <amcgovern@novell.com>
15393         * border.h: ChildProperty should not be exposed
15395 2008-12-01  Alan McGovern  <amcgovern@novell.com>
15397         * frameworkelement.cpp: If a null value is being set to a DP when using
15398         databinding, clear the value instead. Makes test pass. (left this out
15399         of the last commit)
15401 2008-11-28  Alan McGovern  <amcgovern@novell.com>
15403         * binding.h:
15404         * cbinding.h:
15405         * binding.cpp:
15406         * cbinding.cpp:
15407         * frameworkelement.cpp: DataBinding now works for one-way, one-time and
15408         two-way bindings with managed objects.
15410 2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15412         * audio.cpp: Remove a print_stack_trace.
15414 2008-11-27  Andreia Gaita  <shana@jitted.com>
15416         * runtime.cpp: enable debug #if that was disabling the D key.
15418 2008-11-27  Alan McGovern  <amcgovern@novell.com>
15420         * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
15422 2008-11-27  Alan McGovern  <amcgovern@novell.com>
15424         * binding.h:
15425         * cbinding.h:
15426         * binding.cpp:
15427         * cbinding.cpp:
15428         * frameworkelement.cpp: Allow the Binding class to be mapped between
15429         managed and unmanaged code.
15431 2008-11-26  Larry Ewing  <lewing@novell.com>
15433         * shape.cpp (Shape::IsCandidateForCaching): add more logic to
15434         avoid the cache in special cases.
15436 2008-11-26  Jackson Harper  <jackson@ximian.com>
15438         * xaml.cpp|h: clean up the managed/plugin interface, use Values
15439         for most things instead of expected DependencyObjects.
15440         * deepzoomimagetilesource.h|cpp: Add the uri property and a public
15441         constructor so we can parse these from attributes.
15442         * cbinding.h|cpp:
15443         * dependencyproperty.g.cpp: regen
15445 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15447         * frameworkelement.cpp: Store a Value * rather than
15448         BindingExpressionBase in the bindings hashtable to allow
15449         GetLocalValue to work.
15451 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15453         * frameworkelement.h:
15454         * dependencyobject.h:
15455         * frameworkelement.cpp: Styles are now used/ignored correctly when local
15456         values are set/unset. Added tests for this.
15458         * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
15460         * shape.cpp: args->new_value will be null if DO.ClearValue has been
15461         called. In this case use DP.DefaultValue
15463 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15465         * binding.h:
15466         * cbinding.h:
15467         * binding.cpp:
15468         * cbinding.cpp:
15469         * frameworkelement.h:
15470         * dependencyobject.h:
15471         * frameworkelement.cpp:
15472         * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
15473         unmanaged code. Only handles databindings.
15475 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15477         * binding.h:
15478         * cbinding.h:
15479         * binding.cpp:
15480         * cbinding.cpp:
15481         * frameworkelement.cpp: Rename the members of BidningExpressionBase to
15482         better reflect their actual usage.
15484 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15486         * style.h:
15487         * style.cpp:
15488         * collection.h:
15489         * collection.cpp: InsertWithError should return a bool to match Insert
15491         * media.h:
15492         * media.cpp: Fix regression introduced in r119963 when changing which
15493         collection functions were virtual
15495 2008-11-25  Larry Ewing  <lewing@novell.com>
15497         * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
15498         rotations as well.
15500         * media.cpp (Image::GetCoverageBounds): be slightly smarter about
15501         computing coverage.
15503 2008-11-25  Geoff Norton  <gnorton@novell.com>
15505         * cbinding.(cpp|h): Regenerate
15506         * downloader.h: Expose the status code and status text to the
15507         DownloaderResponse object.
15509 2008-11-25  Alan McGovern  <amcgovern@novell.com>
15511         * style.h:
15512         * error.h:
15513         * style.cpp:
15514         * cbinding.h:
15515         * cbinding.cpp:
15516         * collection.h:
15517         * dependencyproperty.g.cpp: Added full support for sealing styles.
15519 2008-11-25  Stephane Delcroix  <sdelcroix@novell.com>
15521         * multiscaleimage.h: element_to_logical_point
15523 2008-11-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15525         * cbinding.cpp, cbinding.h: Regenerated.
15527 2008-11-24  Larry Ewing  <lewing@novell.com>
15529         * media.cpp (MediaBase::SetSource): only queue a tick if we need
15530         to, fixes regression on mediaelement downloaders.
15532         r:toshok
15534 2008-11-24  Larry Ewing  <lewing@novell.com>
15536         * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
15537         precise about the coverage bounds.  Use the coveragebounds when
15538         invalidating based on position so that we don't invalidate a lot
15539         more area than we need to.  Only use CAIRO_FILTER_FAST when
15540         playing use the default when in other states.
15542 2008-11-24  Geoff Norton  <gnorton@novell.com>
15544         * media.cpp: If we do a SetSource on a image element with a 
15545         completed downloader, short circuit the async call, as the downloader
15546         theoretically can be immediately reused in javascript after the call.
15547         Also remove the internal completed event after its been fired, for the
15548         same reason (downloader reuse).  Fixes halo3
15549         
15550         r: lewing
15552 2008-11-24  Larry Ewing  <lewing@novell.com>
15554         * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
15555         them where appropriate.
15557         * mediaplayer.cpp: use MOON_FORMAT_RGB.
15559 2008-11-24  Larry Ewing  <lewing@novell.com>
15561         * brush.cpp, brush.h: add IsAnimating member to indicate if the
15562         brush is expected to change each render tick.
15564         * shape.cpp: don't cache animating brushes.
15566 2008-11-22  Jeffrey Stedfast  <fejj@novell.com>
15568         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15569         Set the destination element and property on the binding expression
15570         so that we can easily get at them in the callback when the source
15571         property changes. Instead of passing 'this' as the user_data
15572         argument to the property change handler, pass the expression.
15573         (FrameworkElement::BoundPropertyChanged): No longer need to
15574         iterate thru the hash table, we now are able to get all the info
15575         we need from the binding expression.
15576         (FrameworkElement::bound_property_changed): Updated.
15578 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15580         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15581         Implemented properly (I think/hope).
15583 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15585         * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
15586         callback and user data.
15587         (BindingExpressionBase::DetachListener): Now takes a callback.
15589         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15590         Moved here from binding.cpp.
15591         (FrameworkElement::SetBindingExpression): Made protected instead
15592         of public.
15593         (FrameworkElement::GetBindingExpression): Same.
15595 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15597         * frameworkelement.cpp: Fixed to build w/o SL2 support.
15599 2008-11-21  Larry Ewing  <lewing@novell.com>
15601         * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
15602         filter in videobrush when scaling.
15604         r: kangaroo
15606 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15608         * binding.cpp (changed_cb): Implemented... but it's
15609         wrong. Committing anyay with a big FIXME explaining why it's
15610         wrong.
15612         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15613         New method to set a binding expression for a property.
15614         (FrameworkElement::GetBindingExpression): Get the binding
15615         expression for a property.
15616         (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
15617         stuff to make the logic a bit clearer.
15619 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15621         * binding.cpp (BindingExpressionBase::AttachListener): We want to
15622         use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
15623         we want to provide our own callback, not re-use
15624         OnSubPropertyChanged() for a purpose it wasn't meant for.
15626         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
15627         #if 0'd out, we might not need this afterall.
15629         * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
15630         chaining up if the property change wasn't handled.
15632         * text.cpp (Inline::OnSubPropertyChanged): Same.
15633         (TextBlock::OnSubPropertyChanged): Same.
15634         (Glyphs::OnSubPropertyChanged): Same.
15636 2008-11-21  Larry Ewing  <lewing@novell.com>
15638         * shape.cpp: disable custom layout code as it seems to have
15639         changed in 2.0 final.
15641 2008-11-21  Alan McGovern  <amcgovern@novell.com>
15643         * frameworkelement.cpp: If a style is already set, you cannot set it
15644         again.
15646 2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15648         * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
15649           create such a Value.
15651 2008-11-21  Alan McGovern  <amcgovern@novell.com>
15653         * frameworkelement.cpp: Implement initial support for using a Style when
15654         it is present.
15656 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
15658         * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
15659         (TextBlock::OnSubPropertyChanged): Always chain up.
15660         (Glyphs::OnSubPropertyChanged): Always chain up.
15662         * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
15664         * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
15666         * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
15668         * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
15669         might not be correct.
15671         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
15672         Stubbed out.
15674 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
15676         * binding.cpp (BindingExpressionBase::AttachListener): Now takes
15677         an FE argument as the listener.
15678         (BindingExpressionBase::DetachListener): Same.
15680         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15681         Fixed up a bit.
15683 2008-11-20  Alan McGovern  <amcgovern@novell.com>
15685         * src.mdp:
15686         * binding.h:
15687         * binding.cpp:
15688         * frameworkelement.cpp: Add more support code for databinding.
15690 2008-11-19  Geoff Norton  <gnorton@novell.com>
15692         * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
15693         giving up on media entirely.
15695         r: toshok
15697 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
15699         Note: the way this is abstracted will probably go thru several
15700         iterations of change.
15702         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15703         Do special handling if setting a binding expression or if the
15704         value is replacing a binding expression.
15706         * dependencyobject.cpp (DependencyObject::IsValueValid): Made
15707         protected, no reason for this to be public.
15708         (DependencyObject::SetValueWithErrorImpl): New virtual method, has
15709         all the code logic of the old SetValueWithError().
15710         (DependencyObject::SetValueWithError): Call IsValueValid() and
15711         then SetValueWithErrorImpl().
15713 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
15715         * frameworkelement.cpp (FrameworkElement::IsValueValid):
15716         Overridden so that we can check if the Value is a
15717         BindingExpression. All DependencyProperties of FrameworkElements
15718         may be data-bound.
15720 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15722         * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
15723           Rendered/DroppedFramesPerSecond DP.
15724         * pipeline.cpp: Fix warning.
15726 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15728         * dependencyproperty.g.cpp: Regenerated.
15729         * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
15730         * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
15731           and DroppedFramesPerSecond.
15733 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15735         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
15736           type-generated.cpp, value.h: Added InputMethod.
15738 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15740         * geometry.cpp: Fix breakage in r119300.
15742 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15744         * dependencyproperty.g.cpp, transform.h: Corcompare.
15745         * geometry.h: Move FillRule from Geometry to
15746           PathGeometry/GeometryGroup.
15748 2008-11-18  Jeffrey Stedfast  <fejj@novell.com>
15750         * expression.h, binding.cpp|h: added to the build
15752 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15754         * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
15756 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15758         * uielement.h: Define UseLayoutRounding accessors to unbreak build.
15760 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15762         * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
15763           uielement.h: More corcompare work.
15765 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15767         * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
15768           value.h: Add TriggerBase, make EventTrigger inherit from it and
15769           regenerate.
15771 2008-11-17  Jeffrey Stedfast  <fejj@novell.com>
15773         * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
15775 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
15777         * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple 
15778         repeats when seeking anims with RepeatBehavior >= 2.0).
15780 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
15782         * clock.cpp: When running without idle hint (runtime init) do not apply it 
15783         here. Makes the idle hint switch actually do something and makes debugging
15784         easier.
15786 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
15788         * animation.cpp:
15789         * animation.h: The KeySpline quadratics used to generate interpolation
15790         values are generated dynamically = faster and less mem.
15792 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
15794         * animation.cpp:
15795         * animation.h: Slightly more nice value caching.
15797 2008-11-14  Geoff Norton  <gnorton@novell.com>
15799         * pipeline-ui.cpp:
15800         * codec-url.h:  Update to the final URLs for beta 1
15802         r: miguel
15804 2008-11-14  Geoff Norton  <gnorton@novell.com>
15806         * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
15807         handle the pango markup we're using.
15809         r: miguel
15811 2008-11-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15813         * mediaelement.cpp: SetMedia: when getting the playlist for an
15814           asxdemuxer, set the media for it. Fixes a memory leak (the media
15815           should get disposed with the playlist gets disposed).
15816         * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
15817         * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
15818           add a parameter to PlaylistEntry::SetMedia to specify whether the
15819           entry should start playing the media or not.
15821 2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
15823         * runtime.cpp (running_on_nvidia): Fix leak of Display
15824         r: kangaroo
15826 2008-11-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15828         * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
15829           request even if we're currently playing, there might be a PauseNow
15830           request already queued.
15832 2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
15834         * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
15835         r: fer
15837 2008-11-11  Geoff Norton  <gnorton@novell.com>
15839         * Makefile.am: Only build the appropriate pipeline-ui based on wether
15840         we're building on a os/arch combo that supports the SMP.
15841         * codec-url.h: Set the appropriate CODEC_URL for our target platform
15842         * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
15843         of the codec install pipeline.
15845 2008-11-11  Geoff Norton  <gnorton@novell.com>
15847         * debug.h: Its unlikely that debug flags will be set.
15849         r: spouliot
15851 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15853         * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
15854           Plugs a memory leak.
15856 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15858         * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
15859           too.
15861 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15863         * pipeline.cpp, pipeline.h: Plug a memory leak.
15865 2008-11-10  Geoff Norton  <gnorton@novell.com>
15867         * runtime.cpp: Do not enable debug features by default, and remove a 
15868         superflous warning.
15869         r: toshok
15871 2008-11-10  Geoff Norton  <gnorton@novell.com>
15873         * runtime.cpp: Force NVIDIA binary driver to go to the image backend
15874         to work around serious performance problems when we use accelerated
15875         rendering with it.
15876         r: toshok
15878 2008-11-10  Chris Toshok  <toshok@ximian.com>
15880         * runtime.cpp (copy_input_list_from_node): rename
15881         copy_input_list_with_visibility_check to this method.  the
15882         caller (HandleMouseEvent) already walks over the list to determine
15883         if an element has total render or hittest visibility == false.  By
15884         definition, everything before that in the input list (the input
15885         list is ordered from most deeply nested to the root) also has
15886         those == false, so we can short circuit things by traversing from
15887         the tail of the list, and then only copying the nodes we've seen
15888         before (but which come after) the offending one.
15890 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15892         * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
15893           pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
15894           move that to Playlist(Entry) and Dispose of the playlist instead.
15895           This makes re-playing already played content in playlists work
15896           again.
15898 2008-11-10  Michael Dominic K.  <mdk@mdk.am>
15900         * animation.cpp:
15901         * animation.h: Cache some vals internally in *Animation for better 
15902         performance in loop-called routines.
15904 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15906         * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
15907           Implement MediaElement.AudioStreamIndex.
15909 2008-11-07  Michael Dominic K.  <mdk@mdk.am>
15911         * clock.cpp: Fixing one broken block in the AnimationMatrix2 test. 
15912         It was broken but diff was too small to be picked by the test runner.
15914 2008-11-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15916         * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
15917           need to keep decoding until the entire input has been consumed.
15919 2008-11-06  Geoff Norton  <gnorton@novell.com>
15921         * pipline(-ui).cpp: Move the codec location on more time.
15922         r: miguel
15924 2008-11-05  Michael Dominic K.  <mdk@mdk.am>
15926         * animation.cpp:
15927         * animation.h: Fixing one more mem-leak case. Fixes #436068.
15929 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
15931         * downloader.h: change the signature of downloaderRequestFinishedHandler
15932         to pass the resulting uri.
15934         * downloader.cpp: validate the returned uri against redirection policies
15936         r:gnorton
15938 2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
15940         Patches by Argiris Kirtzidis to fix bug #441687
15942         * audio.cpp: Use g_alloca() to create dynamically sized arrays on
15943         the stack rather than relying on g++ features.
15945         * clock.cpp: Applied MSVC portability patch which implements
15946         gettimeofday().
15948 2008-11-04  Fernando Herrera  <fherrera@novell.com>
15950         * mediaplayer.cpp: Add logging information about selected streams
15951         properties.
15953 2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
15955         See tests/xaml/test-textblock-actualheight.html and
15956         test-textblock-hittest.html as compared with Microsoft
15957         Silverlight.
15959         * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
15960         actually do count toward ActualHeight metrics.
15962 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15964         * audio-pulse.cpp: OnContextStateChanged: always print an error message
15965           if we fail to connect to pa daemon.
15967 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15969         * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
15970           invalidate when that flag is set.
15972 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15974         * runtime.cpp: get_flags: take the default flags as an argument, this
15975           way the environment variables can disable flags which are enabled
15976           by default.
15978 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15980         * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
15981           codecs by default for browsers.
15983 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15985         * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
15986           because of a buffer underflow and we're waiting for the initial
15987           frame, enqueue a request for another frame. Fixes #440317.
15989 2008-11-03  Larry Ewing  <lewing@novell.com>
15991         * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
15992         extreme exposure issues in popfly.
15994 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15996         * runtime.h: Remove #include <config.h> from headers
15998 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16000         * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
16001           reading a header, try to sync to one. FindMpegHeader: Return proper
16002           error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
16003           #426440 (slideshow doesn't go beyond the first slide).
16005 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16007         * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
16008           opened, the final state is Stopped, not Paused. When media finish,
16009           the final state is Paused, not Stopped. Fixes #365827.
16011 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16013         * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
16014           external reference.
16016 2008-11-03  Fernando Herrera  <fherrera@novell.com>
16018         * audio-alsa.cpp:
16019         * audio-pulse.cpp:
16020         * audio.cpp:
16021         * audio.h:
16022         * debug.cpp:
16023         * debug.h:
16024         * dependencyobject.cpp:
16025         * downloader.cpp:
16026         * font.cpp:
16027         * http-streaming.cpp:
16028         * layout.cpp:
16029         * media.cpp:
16030         * mediaelement.cpp:
16031         * mediaplayer.cpp:
16032         * mms-downloader.cpp:
16033         * pipeline-asf.cpp:
16034         * pipeline-ffmpeg.cpp:
16035         * pipeline-ui.cpp:
16036         * pipeline.cpp:
16037         * playlist.cpp:
16038         * runtime.cpp:
16039         * runtime.h:
16040         * text.cpp:
16041         * textbox.cpp:
16042         * xaml.cpp:
16043         * yuv-converter.cpp: Change debug macros to runtime conditionals based
16044           on MOONLIGHT_DEBUG env variable of compile time. Checks are only
16045           enabled if configured with --with-debug=yes option.
16047 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16049         * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
16050           specified.
16052 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16054         * pipeline-ffmpeg.cpp: Revert r117547 and related.
16056 2008-11-02  Chris Toshok  <toshok@ximian.com>
16058         * text.cpp (TextBlock::InsideObject): textblocks are hit only in
16059         their ActualWidth/ActualHeight, not in the full bounding
16060         rectangle.  Fixes bug #434258.
16062 2008-10-31  Chris Toshok  <toshok@ximian.com>
16064         * runtime.h, runtime.cpp: remove transparency from properties of
16065         the surface
16066         (Surface::PaintToDrawable): add a @transparent argument to this
16067         method.
16069         * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
16070         transparency to Surface::PaintToDrawable.
16072         * window.h: move the idea of transparency here from Surface.
16074 2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
16076         Portability patch by Argiris Kirtzidis.
16078         * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
16080         * xaml.cpp (start_element): strchr() returns const.
16081         (repeat_behavior_from_str): Same.
16083 2008-10-31  Larry Ewing  <lewing@novell.com>
16085         * runtime.cpp (Surface::PaintToDrawable): instead of the content
16086         type check if active_window is fullscreen. This is uglier but the
16087         mozilla hands us rgb drawables not rgba drawables so until we have
16088         a better plan this will solve the problem.
16090 2008-10-31  Larry Ewing  <lewing@novell.com>
16092         * runtime.cpp (Surface::PaintToDrawable): only follow the
16093         transparent path if our target supports it.
16095 2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
16097         * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
16098         a bad stream so we dont include NULL holes streams[]
16100 2008-10-31  Michael Dominic K.  <mdk@mdk.am>
16102         * runtime.cpp: Reverting for now the recent crossing events 
16103         changes -- causes issues with Ink Journal.
16105 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16107         * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
16108         * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
16109           complex ifs on the GetType return value.
16111 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16113         * debug.cpp: dlopen libmono too for our stack walking methods.
16115 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16117         * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
16118           present in older ffmpeg version (r10885).
16120 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16122         * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
16123           conditions.
16125 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16127         * pipeline-ffmpeg.cpp: dlopen ffmpeg.
16129 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16131         * pipeline.cpp: Fix warning (variable might be used uninitialized).
16133 2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
16135         Fix for bug #435815.
16137         * stylus.cpp (StrokeCollection::AddedToCollection): Override so
16138         that we can avoid aborting if a stroke already has a logical
16139         parent (not an error for strokes).
16141         * error.h (MoonError::Clear): New convenience method.
16143 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16145         * libmoon.h: Fix build.
16147 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16149         * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
16150           Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
16151           mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
16152           src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
16153           into its own mediaelement.[cpp|h].
16155 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16157         * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
16158           mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
16159           mplayer.[cpp|h] -> mediaplayer.[cpp|h].
16161 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16163         * cbinding.cpp, cbinding.h: Regenerated.
16165 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16167         * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
16168           mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
16169           pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
16170           pipeline.[h|cpp] to pipeline-asf.[h|cpp].
16172 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16174         * pipeline.h: IMediaDemuxer: Add Source getter.
16175         * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
16176           account streams which aren't selected. IMediaStream::AppendFrame:
16177           update last available pts with the frame's pts.
16178         * media.cpp: MediaElement::CalculateBufferingProgress: never use last
16179           available pts to calculate buffering progress for streams which can
16180           seek to directly to the requested pts. Fix math to check for
16181           negative values to avoid weird results.
16183 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16185         * media.cpp, media.h: MediaElement: fix buffering progress after
16186           seeking regression - don't only use the buffer level in the
16187           pipeline to report buffering progress, but take into accout the
16188           point from where we seek.
16189         * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
16190           the stream's LatestAvailablePts field whenever we read a frame.
16191           Also rename the previous 'stream' (IMediaSource*) field to 'source'
16192           to avoid confusion with AudioStream.
16193         * pipeline.cpp, pipeline.h: Add a last_available_pts field to
16194           IMediaStream and the corresponding GetLastAvailablePts to
16195           IMediaDemuxer, enabling the calculation of correct buffering
16196           progress after a seek. This also requires a codec abi version bump.
16198 2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
16200         * clock.h: Change MilliSeconds_[From|To]Pts to use the new
16201         PTS_PER_MILLISECOND define.
16202         * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
16203         resulting in zero (and the endless loop of #439631).
16205 2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16207         * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
16208           #439631.
16210 2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
16212         * downloader.cpp (scheme_is): Check protocol non-null.
16213         (same_scheme): Same.
16215         * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
16216         instead of file. Also make sure to parse the path in all valid
16217         cases.
16219 2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16221         * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
16222           target_pts.
16223         * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
16224           do anything.
16226 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
16228         * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
16229         to parse out the uri scheme.
16231 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
16233         Performance optimization patch for bug #409793
16235         * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
16236         Rect bounds argument so that we can update a bounds of our
16237         choosing.
16238         (Stroke::ComputeBounds): Updated.
16239         (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
16240         (Stroke::OnCollectionItemChanged): Same.
16241         (InkPresenter::PostRender): Reset stroke dirty regions.
16242         (InkPresenter::OnCollectionItemChanged): Invalidate only the
16243         stroke's dirty region.
16245 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16247         * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
16248           null.
16250 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16252         * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
16253           work with ffmpeg.
16254         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
16255           up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
16256           i.e. the decoder output is the input of the previous time we called
16257           avcodec_decode_video, so keep track of pts from previous frame and
16258           properly set pts of the decoded frame.
16260 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16262         * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
16263           frame is above the target pts (previously we only showed the frame
16264           if the start pts was above the target pts, causing us to show one
16265           frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
16267 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16269         * media.cpp: MediaElement::Play: Call Play when in Opening state too.
16271 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16273         * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
16274           we should just work as if there's no audio at all. The video might
16275           play after the audio has stopped if the a/v streams have different
16276           length.
16278 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16280         * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
16281           queue_mutex unlocked, since the node dtor may cause unrefs, causing
16282           other dtors to be called, and it may all end up in Media::Dispose
16283           which will then try to lock the mutex again (and deadlock).
16285 2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
16287         * font.cpp (style_info_parse): Tokenize the style string so that
16288         the individual sub-parsers can be a bit smarter than than
16289         strstr().
16290         (style_width_parse): Made smarter - now handles lwsp between
16291         multi-word width specifiers (or no lwsp at all).
16292         (style_weight_parse): Same.
16294 2008-10-23  Larry Ewing  <lewing@novell.com>
16296         * media.cpp: remove compute bounds since it mirrors
16297         FrameworkElement now.
16299 2008-10-23  Larry Ewing  <lewing@novell.com>
16301         * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
16302         GetSizeForBrush.
16304 2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
16306         * textbox.cpp (TextBox::Paint): Updated.
16308         * text.cpp (TextBlock::Paint): Updated.
16310         * layout.cpp (TextLayout::Render): Swapped origin & offset
16311         arguments which feels more natural to me.
16313 2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
16315         * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
16316         width over 2048 pixels since this is likely to be corrupted values.
16317         * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
16318         someday people will laugh at me for proposing such a small value)
16320 2008-10-23  Larry Ewing  <lewing@novell.com>
16322         * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
16324         * textbox.cpp:
16325         * text.cpp: call layout with the new arguments.
16326         
16327 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16329         * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
16330           fast-forwarding video when seeking to a position which hadn't been
16331           downloaded (since we automatically pause the video then). Fixes
16332           #435908.
16334 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16336         * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
16337           DroppedFramesPerSecond. Only in SL 2.0, but very useful for
16338           debugging 1.0 too.
16340 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16342         * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
16343           changed size). IMediaStream: Remove msec_per_frame, it's already in
16344           VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
16345           loose less precision.
16346         * mplayer.cpp: Calculate advance frame timeout based on video fps.
16348 2008-10-22  Chris Toshok  <toshok@ximian.com>
16350         * runtime.cpp (Surface::HandleUICrossing): disable the crossing
16351         check from r116528 in the case of a windowless plugin (where
16352         event->window == NULL).  Also, active_window->GetGdkWindow should
16353         never be trusted to return the actual window - it's use is
16354         strictly to find the screen/monitor for full-screening.  In the
16355         windowless case it returns the toplevel netscape window.
16357 2008-10-22  Larry Ewing  <lewing@novell.com>
16359         * brush.cpp, brush.h: remove the uielement references from the api
16360         pass the required information as a rect to SetupBrush instead.
16362         * shape.cpp, shape.h:
16363         * panel.cpp:
16364         * layout.cpp:
16365         * text.cpp:
16366         * uielement.cpp:
16367         * control.cpp:
16368         * broder.cpp: update SetupBrush callers for the new signature.
16370 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16372         * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
16373           last_current_pts to their max value, to detect when they haven't
16374           been set yet. Properly reinitialize these variables (to their max
16375           values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
16376           case.
16377         * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
16378           current pts, handle this. Fixes fast-forwarding issue in #435908.
16380 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16382         * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
16383           use random memory if we don't have a reader.
16385 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16387         * mms-downloader.cpp: Add logging methods.
16389 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16391         * media.cpp: Sprinkle Dispose calls to plug leaks.
16393 2008-10-20  Chris Toshok  <toshok@ximian.com>
16395         * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
16396         before reassigning (and reallocating memory for) it.
16398         * dependencyobject.h, dependencyobject.cpp: add an optional
16399         argument to all the EventObject::AddHandler* overloads, called
16400         data_dtor, which is invoked just before the EventClosure is
16401         destroyed so that the data can be freed.
16403 2008-10-20  Chris Toshok  <toshok@ximian.com>
16405         * window-gtk.h, window-gtk.cpp: move the Surface conversion from
16406         MouseCursor -> GtkCursor here.
16408         * runtime.h, runtime.cpp: surface only deals with MouseCursors
16409         anymore.  the gtk support is in window-gtk now.
16410         
16411         * window.h: remove SetCursor (GdkCursor) and add
16412         SetCursor (MouseCursor), so subclasses of MoonWindow can do their
16413         own thing.
16415 2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
16417         * media.cpp (MediaElement::MediaOpened): If the stream decoder is
16418         null, use null for the decoder_name. Fixes a segfault.
16420 2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
16422         * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
16423         since a lot of loops don't handle NULL values.
16425 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
16427         * runtime.cpp: More fixes to crossing events: when entering fullscreen
16428         ignore the crossing events coming from previous window. Otherwise we get
16429         double enter/leave pair.
16431 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
16433         * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
16434         correctly (no parent window).
16436 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16438         * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
16439           nothing if not DEBUG is set, removing the need for surrounding all
16440           print_stack_trace calls with #if DEBUG.
16442 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16444         * pipeline.cpp: Remove debugging code.
16446 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
16448         * animation.cpp:
16449         * animation.h:
16450         * applier.h: Fixing one more osbcure case of Storyboard transitions where
16451         stopping a prev sboard makes the next one starting from bad base value.
16453 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
16455         * runtime.cpp: Make sure we get the new pointer motion notify when 
16456         entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
16457         but interestingly doesn't fix the original problem of #434267.
16459 2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
16461         * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
16462         when using "backend=image".
16464 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16466         * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
16467           now, not tiled), and fix inner loop, we were including one pixel
16468           too many for width and height.
16470 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16472         * pipeline.cpp: RegisterMSCodecs: if there's no codec in
16473           ~/.mozilla/plugins, use just the filename of the codec library and
16474           make dlopen search for it. This makes it easier to run parallell
16475           tests from different revisions without having the codecs from each
16476           revision overwrite eachother in user's home.
16478 2008-10-16  Geoff Norton  <gnorton@novell.com>
16480         * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
16481         center it in the available window instead.
16483 2008-10-16  Geoff Norton  <gnorton@novell.com>
16485         * pipeline-ui.cpp: Avoid a resize when realizing which causes an
16486         annoying flicker in the codec window.
16488 2008-10-16  Geoff Norton  <gnorton@novell.com>
16490         * pipeline.cpp: Unbreak the world.
16492 2008-10-16  Geoff Norton  <gnorton@novell.com>
16494         * pipeline(-ui).cpp: Use the updated mscodec name and location.
16496 2008-10-16  Fernando Herrera  <fherrera@novell.com>
16498         * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
16500 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
16502         * text.cpp (TextBlock::Layout): Delay allocation of List so that we
16503         don't leak when TextBlock::TextProperty is NULL.
16505 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
16507         * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
16508         on the window. Fix one more leak.
16510 2008-10-16  Jb Evain  <jbevain@novell.com>
16512         * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
16513         mark managed constructor internal.
16515 2008-10-16  Jb Evain  <jbevain@novell.com>
16517         * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
16518         instead of an ArgumentException when providing an out of range index.
16520 2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16522         * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
16524 2008-10-15  Chris Toshok  <toshok@ximian.com>
16526         * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
16527         is already down, and if so, don't emit another event.  (really?
16528         there's a test for this?  ugh.).  also, let Keyboard know the key
16529         is down.
16530         (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
16532         * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
16533         quite a bit -- it might soon deserve its own file.  It now
16534         maintains a static hashtable of keys that are pressed/released
16535         inside the moonlight plugin, and has logic to map a gdk keyval to
16536         Key, and query if a particular key is pressed.
16538 2008-10-15  Larry Ewing  <lewing@novell.com>
16540         * uielement.cpp: fix the transform ordering.
16542         * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
16544 2008-10-15  Larry Ewing  <lewing@novell.com>
16546         * uielement.cpp, uielement.h: remove UpdatePosition and
16547         ComputePosition, all transform changes are handled in
16548         ComputeTransform now.
16550         * shape.cpp, shape.h: update for the new transform api.
16551         
16552         * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
16553         
16554         * canvas.cpp: Use UpdateTransform. 
16556         * point.h: add a (lame) == operator.
16557         
16558 2008-10-15  Larry Ewing  <lewing@novell.com>
16560         * geometry.cpp, geometry.h: add shape bounds caching to all
16561         geometry classes apply the transform when retrieving the bounds.
16562         Make GetBounds the public bounds interface and make the
16563         computation interface protected.
16565         * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
16567 2008-10-14  Larry Ewing  <lewing@novell.com>
16569         * geometry.cpp, geometry.h: remove unused arguments to
16570         ComputeBounds remove caching from PathGeometry.
16572         * uielement.cpp, shape.cpp: call with correct arguments.
16574 2008-10-14  Larry Ewing  <lewing@novell.com>
16576         * uielement.cpp, uielement.h: make ComputeTransform virtual and
16577         have it return a bool.
16579         * shape.cpp, shape.h: override ComputeTransform and optimize the
16580         bounds computations.  Use a general ComputeShapeBounds for actual
16581         drawn bounds compuations for now.
16582         
16583         * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
16584         circuit path to DirtyTransform for elements that can recompute
16585         without updating bounds.
16587 2008-10-13  Larry Ewing  <lewing@novell.com>
16589         * geometry.cpp, geometry.h: remove unused arguments from function
16590         prototypes.
16591         
16592         * uielement.cpp, shape.cpp: update calls.
16593         
16594 2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
16596         Fix for bug #435798
16598         * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
16599         that we are setting the default brush/inlines.
16600         (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
16601         the actualHeight.
16603 2008-10-14  Chris Toshok  <toshok@ximian.com>
16605         * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
16606         the return value.
16607         (MoonWindowGtk::InitializeFullScreen): unref the return value of
16608         GetGdkWindow.
16610         * cbinding.h, cbinding.cpp: regen so we don't have to use void*
16611         for the parent parameter to MoonWindowGtk.
16613 2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
16615         * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
16616         the hashtable while we're flushing it on shutdown. Add a few more
16617         checks and avoid re-creating the hashtable on flush.
16619 2008-10-14  Geoff Norton  <gnorton@novell.com>
16621         * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
16622         longer requiring the bits_per_pixel.
16624 2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
16626         * window.h: GetGdkWindow () method
16628         * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
16629         taking the parent window reference. Only go fullscreen on the monitor
16630         moonlight is running on.
16632         * runtime.cpp: call the new MoonWindowGtk ctor
16634 2008-10-14  Fernando Herrera  <fherrera@novell.com>
16636         * pipeline-ui.cpp: Override codecs download URL with
16637         MOONLIGHT_CODEC_URL env variable if present.
16639 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
16641         * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
16642         variable expecting it to be the value returned from read(), don't
16643         modify it inside the loop, use another variable for that. Before
16644         eating leading whitespace, make sure we have data.
16646 2008-10-13  Fernando Herrera  <fherrera@novell.com>
16648         * audio.cpp: Fix AudioSources::GetNext iteration for next playing
16649         source logic. Fixes bug #433267
16651 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
16653         * media.cpp (MediaElement::Play): Don't add a TickCall to start
16654         playing if we haven't even opened the media yet. Fixes bug
16655         #434462.
16657 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
16659         * dependencyproperty.cpp: Fixing a mem leak.
16661 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
16663         * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
16664         This fixes some recent problems in PopFly.
16666 2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
16668         * downloader.cpp (validate_policy): Made static so we don't export
16669         this symbol.
16671 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
16673         * dependencyproperty.cpp (detach_target_func): Fix bad function 
16674         signature for GHFunc.
16675         * dependencyobject.cpp (unref_object): Fix bad function signature
16676         for GFunc.
16678 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16680         * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
16681           start buffering until this is set to true (starts out as false).
16682         * media.cpp: Only enable buffering on the media after reading the
16683           markers, otherwise we may loose markers in the beginning of the
16684           media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
16685           tick call to notify the MediaElement that a marker has been added,
16686           always check in AdvanceFrame.
16687         * mplayer.cpp: Add a null check in a printf.
16689 2008-10-10  Larry Ewing  <lewing@novell.com>
16691         * media.cpp (Image::DownloaderComplete): handle the case where the
16692         sureface uri and the new uri are the same.
16694 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16696         * pipeline-logo.cpp: New logo.
16698 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16700         * media.cpp: MediaElement::Reinitialize: Dispose the media to break
16701           cyclic refs.
16702         * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
16703           get non-decoded frames anymore. Open: Handle null demuxers,
16704           shouldn't happen, but at least we won't crash if it happens.
16705         * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
16706           Media::Open: unref the decoder after giving it to the stream, the
16707           stream now take a ref on the decoder. Media::EnqueueWork:
16708           queued_requests might be nothing if we're disposed. IMediaStream:
16709           move cleanup to dispose and take a ref on the decoder. Add decoder
16710           getter/setters, and update code to use them.
16712 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
16714         * applier.cpp: Fix another bad function signatures for GFunc.
16716 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16718         * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
16719           FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
16720           stuttering when using ffmpeg.
16722 2008-10-09  Jackson Harper  <jackson@ximian.com>
16724         * runtime.cpp: The resize event is only emitted when switching
16725         from fullscreen to non fullscreen.
16727 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16729         * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
16730           deleting them.
16732 2008-10-09  Jackson Harper  <jackson@ximian.com>
16734         * runtime.cpp: When we change to/from fullscreen there should be a
16735         resize event.
16737 2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
16739         * media.cpp (Image::CreateSurface): Protect against a NULL
16740         filename (valid value). This will avoid crash like bug #433810
16741         even if, in this case, the problem lies elsewhere (bad downloader
16742         which looks related to #433814).
16744 2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
16746         * font.cpp (FontFace::LoadDefaultFace): Pass the families to
16747         LoadDefaultFont() for font name comparison, we need to match the
16748         font names exactly or fall back to the next font.
16750 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16752         * audio.cpp: Add a nullcheck.
16754 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
16756         * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
16757         don't dupe) uri.
16759 2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
16761         * font.cpp: Add fallback for Liberation fonts.
16763         * pipeline.cpp (Media::Warning): Replacement for both
16764         Media::AddMessage() methods.
16766 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
16768         * applier.cpp: Fix function signatures for GFunc and GHFunc.
16769         Fix random crash when closing silverlight world #433461
16771 2008-10-08  Larry Ewing  <lewing@novell.com>
16772         * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
16773         any existing render_cb attachments before adding new ones in case
16774         our realize wordering is out of sync.
16776         Fixes the rest of b.n.c #432975
16778 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16780         * mp3.cpp: Fix boolean->MediaResult logic.
16782 2008-10-08  Jackson Harper  <jackson@ximian.com>
16784         * playlist.cpp|h: When we encounter invalid characters in an
16785         attribute try to patch them and reparse the document.
16787 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16789         * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
16790           block sizes instead of hard-coded almost-matching values. Make
16791           mpeg_frame_length return a floating point value, and in ReadHeader
16792           calculate total duration using floating point. Fixes
16793           test-mp3-media-properties.html
16795 2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
16797         * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
16798         1.8.0, changing the error msg.
16800 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
16802         * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
16803         on bad XAML input when no (NULL) dependecy property is returned.
16805 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16807         * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
16808           MediaMarker refcounted. Fix a couple of crashing leakfixes, and
16809           simplify cleanup code a tiny bit.
16811 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16813         * audio-pulse.h: Remove unused method definition.
16815 2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
16817         * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
16818         the old baseValue before allocating a new one.
16820         * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
16821         delete dx_info when we're done with it. Also get rid of the
16822         unneeded parser pointer since we're just using this->parser
16823         anyway.
16825 2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
16827         * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
16828         GdkColor unless we need them. Unref the pixmap after the call to
16829         gdk_cursor_new_from_pixmap.
16831 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
16833         * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
16834         a MediaFrame leak-per-node whenever the queue is cleared.
16836         * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
16837         frame->bufefr before updating it to point to a new malloc'd
16838         buffer.
16839         (ASFDemuxer::TryReadFrame): Delete the frame on error.
16840         (IMediaStream::PopFrame): After getting the node's frame, set the
16841         node->frame to NULL.
16843 2008-10-06  Larry Ewing  <lewing@novell.com>
16845         * media.cpp, media.h: rework image code to skip using a downloader
16846         when a cached image surface is available.  Fix a crash where
16847         multiple loading errors occur for a single image.  Rewrite
16848         existing SetSourceAsync ticks when the source changes again before
16849         the initial tick was processed.  
16851         The goal here is to greatly reduce the work we do in cases where
16852         existing sources are moved between images. Future work should
16853         consist of moving things to the ImageSource model internally.
16855 2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
16857         * text.cpp (Glyphs::Layout): Handle NULL values coming from 
16858         GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
16859         not come up before today or why it now fails anyway).
16861 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
16863         * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
16864         stuff, it's too expensive for what we need.
16865         (ImageBrush::TargetUnloaded): Same.
16867 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16869         * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
16871 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16873         * pipeline.cpp: Reorganize some code.
16875 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16877         * audio.cpp, audio.h: Access the Media directly to enqueue frames,
16878           avoiding the need for a tick call on the main thread. If audio
16879           underflowed and we don't have more data available, set buffer
16880           underflow flag on the media player.
16881         * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
16882           the data available, return MEDIA_NOT_ENOUGH_DATA.
16883         * downloader.cpp, downloader.h: Remove RequestPosition methods, no
16884           longer needed.
16885         * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
16886           use that value to determine if we should seek or not.
16887         * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
16888           audio/video needs more data, but the buffer is empty.
16889         * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
16890           have an in-memory buffer of demuxed frames (one queue for frames
16891           for each stream), and calculate buffer size from that.
16892           ProgressiveSource: open an additional file descriptor for writing,
16893           makes locking unnecessary. Change al io to return failure if there
16894           is not enough data, this allows us to remove all the
16895           blocking/waiting logic. MemoryQueueSource: push seeks to
16896           MmsDownloader, instead of waiting for MmsDownloader to check for
16897           pending seeks. FileSource: don't reinvent the wheel and use stdio
16898           to get buffered io instead of having buffering logic ourselves.
16899         * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
16900           underruns correctly.
16901         * media.cpp: MediaElement: Retrieve buffer size from the demuxer
16902           instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
16903           trying to open media and retry later on.
16905 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16907         * src.mdp: Updated.
16909 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16911         * dependencyobject.cpp: Use atomic operations with
16912           objects_created|destroyed.
16914 2008-10-02  Chris Toshok  <toshok@ximian.com>
16916         * resources.cpp (glib_is_stupid): we need to cast value in order
16917         to delete it.
16919 2008-10-02  Geoff Norton  <gnorton@novell.com>
16921         * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
16922         Add some headers needed to compile when #undef DEBUG
16924 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
16926         * xaml.cpp:  Fix mixup between delete and g_free
16928 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
16930         * value.cpp: Fix == for KeyTime (padding too). Add comments and
16931         indent method correctly.
16933 2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
16935         * xaml.cpp: Move the definition of XamlElementInfo to the top so
16936         that g++ doesn't complain about deleting an incomplete type inside
16937         the XamlElementInstance dtor. Also gets rid of other g++ compiler
16938         warnings.
16940         * list.cpp (List::InsertAfter): New convenience function to sort
16941         of balance the API.
16943         * font.cpp (FontFace::Load): Don't ref the default face, it is
16944         returned to us with a ref already.
16946 2008-10-02  Jackson Harper  <jackson@ximian.com>
16948         * xaml.cpp: Now that Info's aren't shared, Instance's can free
16949         them.  Also properties need to free their name.
16951 2008-10-02  Larry Ewing  <lewing@novell.com>
16953         * geometry.cpp (Geometry::OnSubPropertyChanged): move
16954         OnSubPropertChanged to Geometry to pick up transform changes until
16955         a better solution is devised.  Fixes updated
16956         test-clip-invalid-update.htm.
16958 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
16960         * value.cpp: Fix == for Duration and RepeatBehavior. We can't
16961         use memcmp to compare them since they include (unassigned)
16962         padding. Both structs overrides their == operator so we use that.
16964 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
16966         * resources.cpp: Free the values (not only their content) when
16967         the hash table is destroyed. Correctly (delete) free the value
16968         when compiled against glib < 2.12 (e.g. SLED10).
16970 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
16972         * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
16973         mess clipping. Add similar fill rule setting code in Geometry::Draw
16974         because Shape::Fill is not called for clipping (but the fill rule
16975         still applies). Comment both so I don't mess with them again :)
16977 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
16979         * font.cpp (FontFace::LoadGlyph): We need to force the font size
16980         if we don't own it, since we don't know what the current size is
16981         set to.
16982         (FontFace::Kerning): Same.
16983         (FontFace::GetExtents): Here too.
16985 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
16987         Attempt #2 at fixing bug #430766.
16989         * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
16990         - this helps us do better fallback for bug #430766.
16991         (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
16992         try to use the Microsoft Lucida Sans font if available. If not,
16993         fall back to GNOME's Bitstream Vera Sans font. Then fallback to
16994         DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
16995         render many of the glyphs in bug #430766, hence why it is last
16996         choice). If the user doesn't have the X.Org fonts, he's SOL.
16998 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17000         * value.h[.in],value.cpp: Fix operator == to work for non-DO and
17001         non-string values. This fix the issue of removing stuff from a
17002         ResourceDictionary (while a copy still exists in the underlying
17003         Collection).
17005 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17007         Attempt #1 at fixing bug #430766.
17009         * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
17010         argument to LoadFontFace() so that we don't fail when matching the
17011         loaded family name.
17013 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17015         * font.cpp (FontFace::OpenFontDirectory): Now a static class
17016         method.
17017         (FontFace::LoadFontFace): New static method which tries to load an
17018         FT_Face given an FcPattern and a list of families.
17019         (FontFace::FontFace): No longer tries to load an FT_Face, instead
17020         we have it passed to us as an argument.
17021         (FontFace::LoadDefaultFace): New static method to load a global
17022         FT_Face representing the default system font.
17023         (FontFace::GetDefault): Instantiates a new FontFace using the
17024         global system default FT_Face.
17025         (FontFace::Load): Now takes only a TextFontDescription (much
17026         cleaner/simpler). If we are loading the default system font or if
17027         loading the requested font fails, simply return a new FontFace
17028         based on the global system default FT_Face.
17029         (TextFont::TextFont): Now takes fewer arguments (cleaner API,
17030         yay!).
17031         (TextFont::Load): Now only takes a TextFontDescription argument to
17032         make the API simpler/cleaner.
17033         (TextFontDescription::CreatePattern): Now public and takes a
17034         'sized' argument specifying whether or not the created pattern
17035         should include the size field. This is needed because TextFont
17036         caches based on all attributes while FontFace caches on everything
17037         but size. Also, don't include weight, width, or slant if our font
17038         family is the default (Portable User Interface is not allowed to
17039         have any of those attributes).
17040         (TextFontDescription::IsDefault): New method to decide if our
17041         family is the default or not.
17042         (TextFontDescription::GetFamilies): New convenience method to
17043         strsplit the family string into an array.
17044         (TextFontDescription::SetFamily): If the value "Portable User
17045         Interface" is set, set our family to NULL instead.
17047 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17049         * geometry.cpp (GeometryGroup::Draw): Make sure the original
17050         fill rule is still in effect at the end of drawing the group.
17052 2008-10-01  Chris Toshok  <toshok@ximian.com>
17054         * geometry.cpp (GeometryGroup::Draw): reinstate the call to
17055         cairo_set_fill_rule removed in r105643.  This fixes
17056         http://mapul.com/Tutorials.html.
17058 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17060         * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
17061         extents.PointInside check since there was no cairo_restore
17062         if false was returned. Looks likely that false was not much
17063         returned (if ever).
17065 2008-09-30  Chris Toshok  <toshok@ximian.com>
17067         * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
17068         recompute our bounds when an item (can only be a stylus point)
17069         changes its properties.  Fixes stroke bounds in the face of
17070         dragging text in inkjournal.
17072 2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17074         * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
17075           pa_stream_[cork|trigger|flush|drain] since the audio source might
17076           have gotten deleted by the time the callback is called.
17078 2008-09-30  Chris Toshok  <toshok@ximian.com>
17080         * dirty.cpp (Surface::ProcessDownDirtyElements): use
17081         AddDirtyElement instead of |= to set flags, since it might require
17082         dirty list manipulation.
17084 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17086         * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
17087         this time with new/delete to make it work with non-DO.
17089 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
17091         * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
17093 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17095         * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
17096         returns false.
17098 2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
17100         * downloader.cpp: fix the leak in validate_policy.
17102 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17104         * debug.cpp: Make sure allocated 'binary' is freed in every case
17105         inside addr2line_offset.
17107 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17109         * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
17110           ensures that the dtor won't be called while playing or that we'll
17111           be playing destructed sources, but Close might be called at any
17112           time.
17114 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17116         * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
17117           underflows and /0 errors.
17119 2008-09-29  Chris Toshok  <toshok@ximian.com>
17121         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
17122         if during the course of traversing the tree, we come across a temp
17123         namescope, merge that up instead of recursing down even further.
17124         (DependencyObject::SetLogicalParent): only clear the namescope if
17125         we're merging ourselves into a parent namescope.
17127         * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
17128         here.  the parser does it for us if we're parsing an element, and
17129         programmatically created objects don't seem to have them.
17131 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17133         * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
17134         to get the download policy based on the uri. By default, returns
17135         MediaPolicy.
17136         (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
17137         mms://
17138         (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
17139         of hardcoding mms:// check.
17140         (MediaBase::OnPropertyChanged): Same.
17142         * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
17143         (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
17144         image once we have at least 1 target which is loaded in the visual
17145         tree.
17146         (ImageBrush::TargetUnloaded): Disallow image downloads once our
17147         loaded_count falls back to 0.
17148         (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
17149         events.
17150         (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
17151         and Unloaded events placed on the target object.
17153         * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
17155         * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
17156         AddTarget()/RemoveTarget() on DO property values as they are
17157         set/unset.
17158         (DependencyObject::AddTarget): New virtual method which gets
17159         called on DependencyObject property values when they are set on a
17160         target.
17161         (DependencyObject::RemoveTarget): Same but when unset.
17163         * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
17164         state-change of allowing new downloads vs not.
17165         (MediaBase::OnLoaded): Call SetAllowDownloads(true).
17167 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17169         * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
17170         state. Fixes some regressions introduced by moving the async
17171         downloading logic from MediaBase::SetSurface() into
17172         ImageBase::OnLoaded().
17174 2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
17176         * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
17178 2008-09-28  Chris Toshok  <toshok@ximian.com>
17180         * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
17181         SetValue (NameProperty) - just set the NameProperty, it'll update
17182         the proper namescope automatically.
17183         (get_parent): remove.
17184         (set_parent): remove.  we no longer need to maintain a temporary
17185         chain while parsing.  there's also no need for set_parent(NULL)
17186         anywhere.
17187         (XamlElementInstance::TrySetContentProperty): if there was an
17188         error in DependencyObject::SetValueWithError or
17189         Collection::AddWithError, raise a parser error.
17190         (dependency_object_add_child): call
17191         Collection/ResourceDictionary::AddWithError, and raise a
17192         parser_error if it fails.  also, remove set_parent (NULL) calls.
17194         * dependencyobject.h,
17195         dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
17196         (DependencyObject::RegisterAllNamesRootedAt): this now takes a
17197         MoonError argument so we can signal when there's been a conflict.
17198         (DependencyObject::SetLogicalParent): this also now takes a
17199         MoonError argument, and this is where ALL the namescope merging
17200         code lives.  It's been removed from everywhere else.  Also, this
17201         change means we can no longer be setting/clearing the parent in
17202         xaml.cpp, as it destroys temp namescopes.
17204         * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
17205         a MoonError parameter, so we can communicate back an
17206         error (conflicting names) properly.
17207         (NameScope::Dump): new method.
17208         
17209         * collection.h, collection.cpp (Collection::AddWithError): new
17210         method, generate a binding for this instead of Add.  This allows
17211         us to check for name conflicts when a DOCollection is updated.
17212         (Collection::InsertWithError): same.  Also, this method has
17213         something quirky about it - it calls AddedToCollection *before*
17214         the collection is modified.  suck, but the logic in that code
17215         needs to be run before the change occurs.
17216         (Collection::AddedToCollection): add a MoonError arg so we can
17217         properly pass errors back up.
17218         (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
17219         MoonError arg.
17220         (DependencyObjectCollection::AddedToCollection,
17221         DependencyObjectCollection::RemovedFromCollection): remove
17222         namescope handling from here.
17223         
17224         * animation.h,
17225         animation.cpp (KeyFrameCollection::AddedToCollection): track api
17226         change to Collection::AddedToCollection.
17228         * resources.h, resources.cpp: track changes to AddedToCollection,
17229         RegisterAllNamesRootedAt, and AddWithError.  Also, remove
17230         namescope handling code from here.
17232         * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
17233         
17234 2008-09-28  Chris Toshok  <toshok@ximian.com>
17236         * geometry.cpp (Geometry::OnPropertyChanged): this method was
17237         never chaining up to DependencObject::OnPropertyChanged, which it
17238         must do for properties whose ownerType != Geometry.
17240 2008-09-28  Chris Toshok  <toshok@ximian.com>
17242         * media.cpp (TimelineMarkerCollection::Add): no need to check the
17243         element type of the value, by the time it makes it here it should
17244         already be the right type.
17246 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
17248         * media.cpp (MediaBase::OnLoaded): Logic moved here from
17249         SetSurface().
17250         (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
17251         should start the downloader yet.
17253         * xaml.cpp: Revert the hydrating check for SetSurface() from the
17254         previous commit. This is causing a bunch of failures :(
17256 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
17258         * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
17259         parser_info->hydrating and parser_info->hydrate_expecting based on
17260         whether or not we are really doing a HydrateFromString() vs
17261         CreateFromString().
17262         (create_element_info_from_imported_managed_type): Only
17263         SetSurface() if we are hydrating.
17264         (XamlElementInstanceNative::CreateItem): Same.
17265         (XamlElementInfoManaged::CreateElementInstance): Here too.
17266         (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
17267         (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
17268         (XamlElementInfoImportedManaged::CreateElementInstance): Same.
17269         (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
17270         (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
17272 2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17274         * dependencyobject.cpp, dependencyobject.h: Make objects_created and
17275           objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
17276           track a specific type, might be useful when the id varies from run
17277           to run. Make Dispose public.
17278         * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
17279           destructed.
17280         * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
17281           cleanup properly there instead of in the dtor. This breaks a
17282           circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
17284 2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
17286         * downloader.cpp: use StreamingPolicy for streaming
17288 2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
17290         * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
17291         g_str_has_prefix() on NULL strings.
17293 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17295         * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
17296           only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
17298 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17300         * downloader.cpp: validate_policy: Fix boolean logic according to
17301           comment, fixes crash.
17303 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17305         * media.cpp: Plug one more leak.
17307 2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
17309         * downloader.cpp: neforce security policies on Open ()
17311 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17313         * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
17314           for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
17315           exist anymore.
17317 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17319         * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
17321 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17323         * downloader.cpp: Fix a potential leak.
17325 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17327         * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
17328           delete the listener link, not only remove it. Plugs a leak.
17330 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17332         * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
17333           yuv-converter.h: Sprinkle virtual on some destructors.
17335 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17337         * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
17338           another leak.
17340 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17342         * audio-pulse.cpp: Another leak plugged.
17344 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17346         * debug.cpp: Fix stack traces.
17348 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17350         * audio-pulse.cpp: Add a missing unref.
17352 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17354         * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
17356 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17358         * pipeline-ui.cpp: Hush.
17360 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17362         * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
17363           functions.
17365 2008-09-24  Aaron Bockover  <abockover@novell.com>
17367         * pipeline-ui.cpp: 
17368         * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
17369         in regards to header messages, detail messages, spacing, padding, and
17370         button layout; use a GtkDialog instead of a GtkWindow, and take all
17371         input through the dialog's response signal; require the user to explicitly
17372         tell us that they never want to see the installer again instead of 
17373         assuming on cancel; fix crash when cancelling while downloading
17375 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
17377         * dependencyproperty.cpp (resolve_property_path): Fixicated.
17379 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
17381         * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
17382         given to g_file_test 
17384 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
17386         * dependencyproperty.cpp (resolve_property_path): Cleaned up the
17387         code, robustified, and fixed bug #429396.
17389 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
17391         * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
17392         does not exists.
17393         [Fix bug #429396]
17395 2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17397         * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
17398         * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
17399           pipeline-logo.cpp and made it an extern variable to avoid
17400           duplicating the entire image in the binary for every time we want
17401           to use it.
17402         * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
17403           codecs from our configuration, and always register ms codecs first
17404           in the list. NullDecoder: fix a buffer overrun and update according
17405           to pipeline-logo changes.
17406         * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
17407           to store our configuration.
17408         * media.cpp: MediaElement::MediaOpened: if any of the streams is
17409           handled by a nulldecoder, it means we don't have ms codecs
17410           installed. If so, show the codec downloader UI.
17411         * Makefile.am, src.mdp: Updated.
17413 2008-09-23  Chris Toshok  <toshok@ximian.com>
17415         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17416         back out (#if false) this change for now.
17418 2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
17420         * runtime.h|cpp: Surface::GetSourceLocation()
17422 2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
17424         * uielement.cpp: Delete the temporary region before returning on an
17425         invisible element (common in defiwind).
17427 2008-09-22  Chris Toshok  <toshok@ximian.com>
17429         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17430         another case we hadn't addressed - if the object we're merging
17431         *from* doesn't have a namescope, we iterate over the entire tree,
17432         registering names into our (possibly temporary, if it didn't exist
17433         before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
17435         * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
17436         leak.
17438 2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
17440         * dependencyobject.cpp (merge_namescope): Return the parent_ns so
17441         that our caller doesn't have to call FindNameScope() in case it
17442         was created.
17443         (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
17444         change.
17446 2008-09-22  Larry Ewing  <lewing@novell.com>
17448         * geometry.cpp (Geometry::Draw): fix the transform brokeness that
17449         crept in.  Fixes test-geometry-transform.xaml
17451 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
17453         * animation.cpp:
17454         * clock.cpp:
17455         * clock.h: 0-time animations are valid (as in: passing the timeline
17456         validation test) but do nothing. Fixes the clock11 test.
17458 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
17460         * animation.cpp:
17461         * animation.h: Attach storage only once. Fixes a crash in clock21.html.
17463 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
17465         Fix for bug #427560
17467         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17468         Use FindNameScope() to get the scope to merge into, and only call
17469         this once - don't re-get it ever loop.
17471 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
17473         * dependencyobject.cpp (EventObject::AddXamlHandler): New method
17474         to add a handler from XAML so that we can force the listener token
17475         to be 0, like Silverlight does.
17477 2008-09-19  Michael Dominic K.  <mdk@mdk.am>
17479         * animation.cpp:
17480         * animation.h: Attach the storage to the prev storage on the
17481         partuclar AnimationClock/Storage Begin, not when the parent
17482         storyboard begins. That fixes: #412074 .
17484 2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
17486         * src/downloader.cpp:
17487         * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
17488         argument. Drop downloder_open method.
17489         * src/media.cpp:
17490         * src/playlist.cpp:
17491         * src/deepzoomimagetilesource.cpp:
17492         * src/text.cpp: use the new Open with the corresponding policy.
17494 2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
17496         * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
17497         offenders are gone now but it's still leaking in a few cases.
17499 2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17501         * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
17502           any custom Cleanup methods (allowing the Cleanup method to free
17503           buffer if g_free isn't the way to do it).
17505 2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
17507         Fixes bug #410619.
17509         * dependencyobject.cpp (class EventLists): Init current_token to
17510         1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
17511         apps use 0 to mean that a g_signal is not connected).
17513 2008-09-18  Geoff Norton  <gnorton@novell.com>
17515         * media.cpp: Stop leaking pixbuf loaders.
17517 2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
17519         * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
17520         g_free-ing it later.
17522 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17524         * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
17525           RUNTIME_INIT_CODECS_DEBUG.
17526         * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
17527           info.
17529 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17531         * src.mdp: Updated.
17532         * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
17533           moonlight logo for video and plays silence for audio.
17534         * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
17535         * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
17536           data.
17537         * pipeline-logo.inc: Added.
17539 2008-09-17  Larry Ewing  <lewing@novell.com>
17541         * border.cpp:
17542         * control.cpp:
17543         * grid.cpp:
17544         * frameworkelement.cpp: start filling in InvalidateArrange and
17545         InvalidateMeasure calls.
17547         * panel.cpp:
17548         * panel.h:
17549         * canvas.h:
17550         * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
17551         change handling here from panel since it is a Canvas property.
17553 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17555         * pipeline.h: Remove some dead code.
17557 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17559         * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
17560           add flags to disable both ffmpeg and ms codecs and include them by
17561           default.
17562         * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
17563           (until it gets integrated in libmscodecs.so), and register the mp3
17564           codec. Media::Initialize: Update according to runtime init flag
17565           changes, and always register null encoders.
17567 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17569         * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
17570           delete downloaded media files.
17572 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17574         * dependencyobject.cpp: Add TODO.
17576 2008-09-17  Jackson Harper  <jackson@ximian.com>
17578         * xaml.cpp: Don't try setting the content prop in managed if there
17579         is no cdata content (we're just dealing with spaces).
17581 2008-09-17  Larry Ewing  <lewing@novell.com>
17583         * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
17584         use the right index value.
17586 2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
17588         * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
17589         SizeChangedEventArgs.
17591 2008-09-17  Michael Dominic K.  <mdk@mdk.am>
17593         * clock.cpp:
17594         * clock.h: Separate raising events from raising completed events. 
17595         In certain clock hierarchies this would cause us to emit completed event
17596         before raising animation setter events.
17598         * applier.cpp: Enabling the applier again.
17599         * applier.h: Animation resets don't have INSTANT precedence. The just 
17600         have higher precedence than normal animation setters.
17602 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17604         * audio-pulse.cpp: Remove stray characters.
17606 2008-09-16  Chris Toshok  <toshok@ximian.com>
17607         
17608         * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
17610         * frameworkelement.h, frameworkelement.cpp
17611         (FrameworkElement::UpdateLayout): override
17612         UIElement::UpdateLayout, and if that base class method returns
17613         true, emit LayoutUpdatedEvent.
17615         * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
17616         DirtyMeasure.
17617         (UIElement::InvalidateArrange): add DirtyArrange.
17618         (UIElement::DoMeasure): this should drive the measure process -
17619         needs filling in, though.
17620         (UIElement::DoArrange): this should drive the arrange
17621         process. same.
17622         (UIElement::UpdateLayout): change return type to bool.  call
17623         DoMeasure and DoArrange synchronously, and return true if we
17624         arrange.
17626         * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
17627         toplevel.
17629         * cbinding.h, cbinding.cpp: regen.
17631 2008-09-16  Larry Ewing  <lewing@novell.com>
17633         * clock.cpp: make AddTimeout take a priority. Make the render
17634         timeout slightly lower than default so that we process gdk events
17635         before rendering.
17637         * media.cpp: raise the priority of the media timeout so that it
17638         doesn't drop below default or the render tick.
17640 2008-09-16  Chris Toshok  <toshok@ximian.com>
17642         * dirty.h, dirty.cpp: add a priority queue-like setup for the
17643         dirty lists, where priority == level in the visual hierarchy.
17644         Processing the down dirty list proceeds from lower "priority" to
17645         higher, and the up dirty list proceeds from higher to lower.
17646         * runtime.h, runtime.cpp: use the new dirty lists.
17648         * uielement.h, uielement.cpp: add a visual_level field, which is
17649         updated when the element is added to the
17650         hierarchy (this->visual_level = parent->visual_level + 1).
17652 2008-09-16  Jackson Harper  <jackson@ximian.com>
17654         * xaml.cpp: keys should be a property of the instance.
17656 2008-09-16  Fernando Herrera  <fherrera@novell.com>
17658         * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
17659           has codecs=microsoft.
17660         * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
17661           in RUNTIME_INIT_BROWSER.
17663 2008-09-16  Jackson Harper  <jackson@ximian.com>
17665         * xaml.cpp: Move cdata handling code into the content property
17666         setters, allow managed content property setters to set values from
17667         strings.
17669 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17671         * audio-pulse.cpp: dlsym another method previously forgotten.
17673 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17675         * multiscaleimage.h, textbox.h: Use quotes to include our headers.
17677 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17679         * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
17680           don't link with alsa anymore
17682 2008-09-16  Jb Evain  <jbevain@novell.com>
17684         * template.h (TemplateBinding): decorate with a SLVersion=2.
17686 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17688         * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
17689           link with pulseaudio anymore. Hopefully fixes #425560.
17691 2008-09-16  Fernando Herrera  <fherrera@novell.com>
17693         * asf/asf-structures.h:
17694         * asf/asf.cpp:
17695         * asf/asf.h:
17696         * mplayer.h:
17697         * pipeline.h: Don't use relative paths in #includes.
17698         * Makefile.am: Add -Iasf
17700 2008-09-15  Michael Dominic K.  <mdk@mdk.am>
17702         * src/applier.cpp: Disabling the applier for now, it seems there are still
17703         some tiny 'issues' with it.
17705 2008-09-15  Chris Toshok  <toshok@ximian.com>
17707         * dependencyobject.h, dependencyobject.cpp: add real
17708         PropertyChange callbacks (so we can implement listeners without
17709         the listener being a dependencyobject - which is nice for
17710         TemplateBindings, which don't need all that overhead.)
17711         
17712         * template.h, template.cpp: switch over to using this new listener
17713         interface.
17715 2008-09-15  Chris Toshok  <toshok@ximian.com>
17717         * xaml.cpp (dependency_object_set_attributes): add the
17718         TemplateBinding to the item, not the containing template.
17720 2008-09-15  Larry Ewing  <lewing@novell.com>
17722         * applier.h: really disable the applier to make changes instant,
17723         fixes page turn and the test regressions.
17725         * applier.cpp: ref and unref the object to avoid crashes on
17726         popfly.
17728 2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17730         * src.mdp: Updated with new files.
17732 2008-09-12  Larry Ewing  <lewing@novell.com>
17734         * grid.cpp (Grid::Measure): accumulate colspan width and pass
17735         pixel size restrictions on to the children.
17737 2008-09-11  Michael Dominic K.  <mdk@mdk.am>
17739         * animation.cpp:
17740         * applier.cpp:
17741         * applier.h: Adding some defines for applier precedences + a way
17742         to instant apply with precedence == 0.
17744 2008-09-10  Michael Dominic K.  <mdk@mdk.am>
17746         * clock.cpp: Properly emit the Completed event after the properties have
17747         been applied.
17749 2008-09-09  Michael Dominic K.  <mdk@mdk.am>
17751         * animation.cpp:
17752         * applier.cpp: Removing debug messages, adding proper free code.
17754 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17756         * animation.cpp:
17757         * animation.h:
17758         * applier.cpp: Do not set the values, instead move them to applier. 
17760 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17762         * applier.cpp:
17763         * clock.cpp:
17764         * clock.h:
17765         * runtime.cpp:
17766         * runtime.h: Moving the Applier instance to TimeManager.
17768 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17770         * runtime.cpp:
17771         * runtime.h: Adding Applier to Surface.
17773 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17775         * applier.cpp:
17776         * applier.h: Adding a basic Flush method, totally bad for now.
17778 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17780         * applier.cpp:
17781         * applier.h: Adding basic Apply function that applies all the changes
17782         to objects.
17784 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17786         * applier.cpp:
17787         * applier.h: Adding basic method to add property to apply on object.
17789 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
17791         * Makefile.am:
17792         * applier.cpp:
17793         * applier.h: Introducing the applier helper class. Will be used 
17794         to apply property changes in order.
17796 2008-09-11  Jackson Harper  <jackson@ximian.com>
17798         * xaml.cpp: Move some of the content property setting logic into
17799         the XamlElementInstance's.
17801 2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
17803         * multiscaleimage.cpp: draw a pattern that should look like
17804         a MSI (currently still wrong)
17806 2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
17808         * text.h (class Run): Apparently Run's TextProperty is internal in
17809         managed-land.
17811 2008-09-10  Larry Ewing  <lewing@novell.com>
17813         * border.cpp:
17814         * frameworkelement.cpp:
17815         * shape.cpp, shape.h:
17816         * canvas.cpp: update to pass the new more extensive tests.
17818 2008-09-10  Larry Ewing  <lewing@novell.com>
17820         * size.h:  Tweak to match updated tests.
17822 2008-09-09  Chris Toshok  <toshok@ximian.com>
17824         * style.h (class Setter): make ValueProperty's PropertyType
17825         'object' instead of 'Managed'.
17827         * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
17828         little more bulletproof.
17829         (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
17830         NULL, don't create a TemplateBindingNode (and add it to the list)
17831         in that case.
17833         * type.h.in (class Type): remove OBJECT - it gets autogenerated
17834         now.
17836         * xaml.cpp (start_element): we need to set inst->parent before
17837         setting the attributes, as the attributes might include a
17838         StaticResource (or TemplateBinding) that requires us to walk back
17839         up the tree.
17840         (XamlElementInfoNative::CreateElementInstance): create a
17841         XamlElementInstanceTemplate if the type is a subclass of
17842         FRAMEWORKTEMPLATE.
17843         (dependency_object_set_attributes): return out of this after
17844         adding the templatebinding (so we don't end up in the managed xaml
17845         loader code trying to set properties to "{TemplateBinding ...}"
17846         Also, if the property type is OBJECT, call into the loader (like
17847         we do with MANAGED), and fix the logic check on
17848         p->loader->SetAttribute in that case.
17850         * type.h, type-generated.cpp: regen.
17852 2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
17854         * xaml.cpp: Don't unref NULL collections. Fix regression when
17855         parsing invalid points (or doubles).
17857 2008-09-08  Chris Toshok  <toshok@ximian.com>
17859         * xaml.h, xaml.cpp: stopgap before jackson gets the completely
17860         managed approach to managed object parsing going.  a few key
17861         changes:
17863         1) xaml_load_managed_object takes an out bool
17864         parameter (is_dependency_object) so the managed code can create
17865         non-DO subclasses, and then the parser will pass that GCHandle
17866         back to managed code in set_attribute.
17868         2) added an add_child callback to the loader so that managed DO
17869         subclasses (and non-subclasses) can deal with collection
17870         properties.  theres no ContentProperty handled in managed code,
17871         yet.
17873 2008-09-08  Geoff Norton  <gnorton@novell.com>
17875         * audio-*.(cpp|h): The Alsa code requires us to join the play
17876         thread before we remove the audio sources otherwise we can 
17877         end up in a race accessing closed pcm's when shutting down.
17879 2008-09-08  Geoff Norton  <gnorton@novell.com>
17881         * audio.cpp: Ensure that we dont enter an infinite loop before
17882         we actually start playing a source.
17884 2008-09-08  Larry Ewing  <lewing@novell.com>
17886         * frameworkelement.cpp: make things 1.0 safe.
17888 2008-09-08  Larry Ewing  <lewing@novell.com>
17890         * frameworkelement.cpp (FrameworkElement::Arrange): rework to
17891         match some of the Measure logic
17893         * border.cpp:
17894         * canvas.cpp, canvas.h:
17895         * control.cpp, control.h: rework arrange implementation to match
17896         the measure logic and the current thinking on arrange.
17898         * uielement.cpp, uielement.h: expose render_size accessor.
17900 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
17902         * tilesource.h|cpp: keep the source and tiles info on the c++ side
17904         * multiscaleimage.cpp: draw a cairo pattern instead of nothing
17906 2008-09-08  Larry Ewing  <lewing@novell.com>
17908         * grid.cpp: Chain collection changed up properly.
17910 2008-09-07  Larry Ewing  <lewing@novell.com>
17912         * thickness.h (struct Thickness): add +/-/- to thickness to clean
17913         up some of the other code.
17915         * rect.h: remove ShrinkBy now that we can negate thickness
17917         * size.h: clean things and make GrowBy stop at 0 now that we can
17918         deal with thickness addition outside of things.
17920         * canvas.cpp:
17921         * frameworkelement.cpp: 
17922         * control.cpp:
17923         * border.cpp: subtract the padding and border thickness from
17924         available size before passing it to children.  Handle some corner
17925         cases in measure with ugly hacks.
17926         
17927 2008-09-07  Larry Ewing  <lewing@novell.com>
17929         * canvas.cpp, canvas.h:         
17930         * control.cpp, control.h:
17931         * border.cpp:
17932         * grid.cpp:
17933         * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
17934         actual contents.
17936         * frameworkelement.cpp: Make measure pre and post condition the
17937         output rather than doing it in the overrides themselves.
17939         * size.h: make sure min/max will never set a known size to NAN.
17941 2008-09-07  Chris Toshok  <toshok@ximian.com>
17943         * type.h.in: add OBJECT kind.
17945         * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
17947 2008-09-06  Chris Toshok  <toshok@ximian.com>
17949         * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
17950         - instead use 'Foo foo(args)'.  the former creates 2 objects to
17951         the latter's 1.
17953         * media.cpp (MediaElement::GetValue): same.
17955         * uielement.cpp: same.
17957         * error.h, error.cpp (class MoonError): make this a class instead
17958         of a struct, add a default ctor, remove Dispose and use ~MoonError
17959         instead, add FillIn methods that take a "code" as well as an
17960         ErrorType to support the parser.
17962         * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
17963         rid of GError and use MonoError exclusively, move the internal
17964         EventLists/EventList types to the .cpp file.  Also, remove a few
17965         redundant methods on DependencyObject.  The hit at call sites is
17966         negligable (one additional line, perhaps), and the call sites are
17967         few and far between.
17969         * xaml.cpp (dependency_object_set_attributes)
17970         (dependency_object_set_property): call
17971         DependencyObject::SetValueWithError.
17973         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
17974         the property here.  the DO api is gone.
17976 2008-09-06  Chris Toshok  <toshok@ximian.com>
17978         * grid.h, grid.cpp: flesh out some of the
17979         OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
17980         Also add in a completely broken and unfinished MeasureOverride
17981         implementation.  It passes some of the tests, but not for the
17982         right reasons :) Lastly, move the GridUnitType enum to enums.h
17984         * enums.h: move GridUnitType here, and rename its elements to have
17985         a "GridUnitType" prefix.
17987         * xaml.cpp: track GridUnitType enum references.
17989         * dependencyproperty.g.cpp: fix up attached properties getters to
17990         return default values if there is one.
17992 2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
17994         * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
17995         actually change the lauout, so no need to set the dirty flag when
17996         it changes.
17997         (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
17998         Padding property.
17999         (TextBlock::Paint): Same.
18001 2008-09-05  Larry Ewing  <lewing@novell.com>
18003         * uielement.cpp: use render bounds rather than bounds to determine
18004         if we have something to draw.
18006         * stylus.h, stylus.cpp: remove the EmptyBackground method.
18008         Fixes the annotation regression in page turn (again).
18009         
18010 2008-09-04  Larry Ewing  <lewing@novell.com>
18012         * uielement.h (class UIElement): generate managed accessors for
18013         the subtree hack.
18015 2008-09-04  Chris Toshok  <toshok@ximian.com>
18017         * xaml.cpp (dependency_object_add_child): add code here for
18018         FrameworkTemplate, call SetVisualTree with the child.
18020         * control.cpp (Control::Control): init bindings.
18021         (Control::~Control): unref applied_template and delete bindings.
18022         (Control::ApplyTemplate): make sure we return false here from a
18023         few error places (NULL template, a template with a NULL
18024         visual_tree.)
18026         * template.cpp (FrameworkTemplate::FrameworkTemplate): init
18027         visual_tree to NULL.
18028         (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
18029         (FrameworkTemplate::SetVisualTree): new method, set visual_tree
18030         and ref it.
18031         (ControlTemplate::DuplicateObject): we need to special case a
18032         couple of classes (collections, templates) in order to traverse
18033         them.. ugh.
18034         (ControlTemplate::Apply): if the visual_tree is null, don't try to
18035         copy it.
18037         * template.h (class FrameworkTemplate): add SetVisualTree method
18038         for the parser.
18040 2008-09-04  Larry Ewing  <lewing@novell.com>
18042         * uielement.cpp, uielement.h: new methods GetSubtreeObject and
18043         ElementAdded ElementRemoved.
18045         * dependencyobject.h: remove ContentAdded, ContentRemoved.
18046         
18047         * collection.cpp, collection.h: rename ContentWalker to
18048         VisualTreeWalker use GetSubtreeObject () rather than content for walking.
18050         * template.cpp, template.h: make Apply return the newly created
18051         tree.
18053         * panel.cpp, panel.h:
18054         * control.cpp, control.h: add template_root child that isn't
18055         hooked into the normal tree.  Start implementing ApplyTemplate and
18056         GetTemplateChild.
18058         * usercontrol.cpp: mess around with Content a little in making it
18059         use the ElementAdded ElementRemoved logic since UserControl
18060         doesn't really support template changes.
18061         
18062         * border.h: implement GetSubtreeObject. 
18064         * stylus.cpp:
18065         * dirty.cpp:
18066         * frameworkelement.cpp:
18067         * canvas.cpp, canvas.h: update for new treewalker.
18069 2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
18071         * layout.cpp (TextLayout::Render): Added some new arguments which
18072         aren't actually used yet but will be eventually (assuming I
18073         continue with this approach).
18075         * textbox.cpp (TextBox::Paint): Don't bother painting the
18076         background, control does this for us.
18078 2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
18080         * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
18081         own file, implement the downloader.
18083 2008-09-03  Chris Toshok  <toshok@ximian.com>
18085         * dependencyobject.h: as much as i hate this, add
18086         GetCurrentValues() for the template stuff.
18088         * xaml.cpp: add XamlElementInstanceTemplate and initial support
18089         for TemplateBindings.
18091         * template.h, template.cpp: add a bunch of stuff for templates.
18093         * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
18094         watch for template property changes, and apply the template in
18095         OnLoaded (or if we're already loaded).  Also, add accessors for
18096         TemplateProperty.
18098         * dependencyproperty.g.cpp: regen.
18100 2008-09-03  Larry Ewing  <lewing@novell.com>
18102         * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
18103         the new Size methods.
18105         * border.cpp, border.h: add some initial (broken) rendering
18106         support, rework measure to use some of the new rect and size
18107         methods.
18109 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18111         * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
18112         property chanegs, no need to re-layout or invalidate - according
18113         to my little test program, Silverlight 2 Beta 2 does not change
18114         the rendered text when this property changes - any newlines in the
18115         input text stay there.
18117 2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
18119         * resources.cpp: (ContainsKey) Don't crash if a null key is
18120         supplied. (Remove) same. (Add) same.
18122 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18124         * enums.cpp (initialize_enums): Map Horizontal and
18125         VerticalScrollBarVisibility properly.
18127         * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
18128         think we need this for TextBox controls since their
18129         ActualWidth/Height aren't based on the text extents afaik.
18130         (TextBox::Paint): Implemented, sorta.
18132 2008-09-03  Chris Toshok  <toshok@ximian.com>
18134         * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
18135         code.
18137 2008-09-03  Larry Ewing  <lewing@novell.com>
18139         * uielement.cpp, uielement.h: 
18140         (UIElement::FrontToBack): Make FrontToBack non-virtual and move
18141         the generic logic here.
18143         * control.cpp, control.h:
18144         * panel.cpp, panel.h: Remove ftb logic, everything is handled in
18145         uielement now.
18147 2008-09-03  Larry Ewing  <lewing@novell.com>
18149         * uielement.cpp, uielement.h: 
18150         * media.cpp, media.h:
18151         * panel.cpp, panel.h:
18152         * shape.cpp, shape.h: Add GetCoverageBounds virtual method
18153         to let elements compute their own opaque coverage.
18155 2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
18157         * multiscaleimage.h|.cpp: new MultiScaleImage type
18159 2008-09-02  Chris Toshok  <toshok@ximian.com>
18161         * resources.h, resources.cpp: constify this.
18162         (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
18163         logic.
18165         * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
18166         resource lookups.
18167         (dependency_object_set_attributes): add support for StaticResource
18168         lookups.  going to refactor all this to add support for
18169         TemplateBinding.
18171 2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
18173         * eventargs.h (class CollectionChangedEventArgs): Implemented
18174         accessor methods to get/set the event arg values.
18176         * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
18177         strdup the event_name string and also updated to use an accessor
18178         method to prevent a possible NULL dereference.
18180 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18182         * animation.cpp:
18183         * animation2.h: Reworking the animation hookup storage fix. Checking for
18184         subclass is plain dumb. Just make an exception for ObjectAnimation.
18186 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18188         * animation.cpp: Fixing a problem in animation hookup 
18189         storage -- the type/kind that the animation generates has to be the subclass
18190         of the type/kind the target property is ready to accept.
18192 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18194         * multiscalesubimage.h: fixing code generation decorators
18196 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18198         * multiscalesubimage.h: new type
18200 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18202         * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
18203         end so that we can fall back to that position as the line
18204         width (we don't want to include trailing spaces unless
18205         underlined).
18206         (TextLayout::Render): If the line width is greater than the
18207         allowable width, keep the line left-aligned like Silverlight does.
18209 2008-08-29  Chris Toshok  <toshok@ximian.com>
18211         * resources.cpp (ResourceDictionary::Clear): call
18212         Collection::Clear after we've cleared the hash so the hash will be
18213         empty in event handlers.
18215 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18217         * layout.cpp (TextLayout::Layout): Do a slightly better job of
18218         keeping track of line->width - still not 100% correct.
18220 2008-08-28  Chris Toshok  <toshok@ximian.com>
18222         * Makefile.am: add resources.h and resources.cpp
18224         * xaml.cpp (class XamlElementInfo): add x:Key field (since this
18225         can't set a field on the object -- it might be a value type).
18226         (class XamlElementInstanceValueType): remove the empty
18227         implementation of SetAttributes.  we'll define it later.
18228         (XNamespace::SetAttribute): handle name/key behavior here.  Only
18229         allow one of them to be set on an object. Also, only attempt to
18230         set DependencyObject::NameProperty on an item if it's not a value
18231         type.
18232         (start_element): don't add value type children to their parent in
18233         start_element (as we haven't read the data that will allow us to
18234         create the value typed object.)  we need to push this off to the
18235         end_element handler.  also return early if there are problems
18236         setting attributes.
18237         (end_element_handler): if we're creating a value typed ELEMENT,
18238         add the child to the parent here.
18239         (dependency_object_add_child): add some ResourceDictionary
18240         validation here (if there's no key, etc), and actually call
18241         dict->Add(key, child).
18242         (XamlElementInstanceNative::CreateItem): don't crash if we failed
18243         to create an item.  (fixes one of the crashes caused by the
18244         ResourceDictionaryTests - ParseDouble)
18245         (XamlElementInstanceValueType::SetAttributes): call
18246         value_type_set_attributes.
18247         (value_type_set_attributes): stripped down version of
18248         dependency_object_set_attributes, as there are only a handful (is
18249         it really only x:Name and x:Key?) attributes we handle on value
18250         types.
18251         (globally): always call set_parent as opposed to
18252         ->SetLogicalParent.  we might not be dealing with a DO-subclass.
18254         * xaml.h (class XamlLoader): remove the explicit C api calls
18255         xaml_create_from_file, xaml_create_from_str, and
18256         xaml_hydrate_from_str.  Replace them with instance methods on
18257         XamlLoader (CreateFromFile, CreateFromString, and
18258         HydrateFromString, respectively) Add WithError variants of the
18259         these, and have the generator generate bindings for them so we can
18260         throw parse exceptions into managed code.
18262         * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
18264         * value.h.in (struct Value): add Is overload with
18265         additional_types.
18267         * uielement.h: include resources.h.
18269         * collection.h, collection.cpp: change the api in a few ways to
18270         make ResourceDictionary easier to write - make Count virtual,
18271         remove all the type checks for element type from methods, and add
18272         that check to Collection::CanAdd.  ResourceDictionary overrides
18273         that and always returns true.  Make Clear return a bool.
18275         * animation.h, animation.cpp: track collection changes.
18277         * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
18278         implementations to the .cpp file.
18280         * resources.h, resources.cpp: split out the code for
18281         ResourceDictionary here.  ResourceDictionary is an odd fish.  In
18282         1.0 land, it provides the same api as a collection, and things can
18283         be looked up by name via findName.  In 2.0 land, items in
18284         ResourceDictionaries have to have either an x:Key or x:Name
18285         attribute.  If both are lacking it's an error.  If the former is
18286         specified you can only get at it through Resources["name"].  If
18287         the latter is specified, you can use both Resources["name"] or
18288         findName("name").
18290         * dependencyobject.cpp, dependencyobject.h: add Is and GetType
18291         overloads that take additional_types.  Make IsValueValid take an
18292         additional_types parameter too.  Expose ClearValue to managed code
18293         so we can actually clear the Value* to null without using
18294         the (unsupported from the generator) old method of passing
18295         IntPtr.Zero (Value* now maps to "ref Value" in generated
18296         pinvokes.)  Lastly add a SetValueWithError method so we can throw
18297         exceptions in managed code.
18299         * border.h: add defaults for Padding and BorderThickness.
18301         * border.cpp: simplify things a bit since we don't have to worry
18302         about padding/border thickness being NULL.
18304         * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
18306 2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
18308         * layout.cpp (TextLayout::Render): Respect TextAlignment.
18310 2008-08-26  Chris Toshok  <toshok@ximian.com>
18312         * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
18313         rid of this g_assert, it's crashing the moon-unit tests.  just
18314         warn and bail.
18315         (DependencyObject::SetSurface): don't do anything if the surface
18316         is already set to the same value.
18318         * animation.cpp (Storyboard::SetSurface): don't do anything if
18319         GetSurface() == surface.
18321         * text.cpp (Glyphs::SetSurface): same.
18323         * uielement.cpp (UIElement::SetSurface): same.
18325         * brush.cpp (ImageBrush::SetSurface): same.
18327         * media.cpp: same.
18329         * collection.cpp (DependencyObjectCollection::SetSurface): same.
18330         (Collection::RemoveAtWithError): this (against logic) raises
18331         ArgumentException, not ArgumentOutOfRangeException.
18333 2008-08-25  Chris Toshok  <toshok@ximian.com>
18335         * rect.h, rect.cpp: rename the w/h fields to width/height, since
18336         every other instance of similar fields are named that.
18338         * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
18339         uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
18340         brush.cpp: track rect change.
18342 2008-08-25  Chris Toshok  <toshok@ximian.com>
18344         * border.h, border.cpp: implement ArrangeOverride, and fix up some
18345         test failures in MeasureOverride.
18347         * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
18348         also set the desired size here (to the final size we get from
18349         ArrangeOverride.)
18351 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18353         * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
18354         proper kinds of values (TYPE::DEPENDENCY_OBJECT).
18356 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18358         * animation.cpp:
18359         * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
18360         Also adding validation methods.
18362 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18364         * animation.cpp:
18365         * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
18366         implementation.
18368 2008-08-24  Geoff Norton <gnorton@novell.com>
18369         
18370         * media.h: Add a new overload to set the SourceProperty from managed land.
18371         * media.cpp: Support async source changing downloader creation for ImageSource
18372         * cbinding.(cpp|h): Regen
18374 2008-08-23  Geoff Norton  <gnorton@novell.com>
18376         * mplayer.cpp: Only ref the audio if we have it as well.
18378 2008-08-23  Geoff Norton  <gnorton@novell.com>
18380         * bitmapimage.h: Add to the build
18382 2008-08-23  Geoff Norton  <gnorton@novell.com>
18384         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
18385           type.h, value.h: Regenerated
18386         * downloader.cpp|h: Return failure state for downloader->GetResponse
18387         * runtime.h: Generate C bindings for IsMainThread.
18389 2008-08-23  Larry Ewing  <lewing@novell.com>
18391         * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
18392         properties.  Move the quadratic generation into
18393         GenerateQuadratics.
18395         Regenrate and remove the managed wrappers.
18396         
18397 2008-08-23  Larry Ewing  <lewing@novell.com>
18398         
18399         * xaml.cpp (value_from_str): fixed crossed commits with Auto
18400         parsing.
18402         * collection.cpp (ContentWalker::Step): add some debug logic to
18403         protect against an error case for now.
18405 2008-08-23  Chris Toshok  <toshok@ximian.com>
18407         * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
18409         * thickness.h, thickness.cpp: rename thickness_from_str to
18410         Thickness::FromStr, and make it return a bool instead of a
18411         pointer, as Point and Rect do.
18413         * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
18415         * xaml.cpp (value_from_str): use the CornerRadius parsing method,
18416         and track the change to the Thickness one.
18418 2008-08-23  Larry Ewing  <lewing@novell.com>
18420         * xaml.cpp (value_from_str): quick auto hack so we can test
18421         controls more.
18423         * runtime.cpp (RenderNode::Render): fix typo in merge
18425 2008-08-23  Larry Ewing  <lewing@novell.com>
18427         * uielement.cpp, uielement.h: move basic ftb logic here from
18428         panel.  Start storing extents allong with bounds.
18430         * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
18431         content walker.
18433         * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
18434         to uielement in front_to_back mode unconditionaly.
18436         * runtime.cpp, runtime.h: make RenderNode members private and move
18437         the ftb override logic here and out of the PostRender call.
18438         
18439         * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
18440         extents.
18442         * control.cpp, control.h: implement basic functionality.
18444 2008-08-22  Chris Toshok  <toshok@ximian.com>
18446         * color.h, rect.h, point.h: remove the copy ctors.  we don't need
18447         them, and they were causing crashes (!)
18449 2008-08-22  Chris Toshok  <toshok@ximian.com>
18451         * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
18452         take the margins into account, even when we're childless.
18454         * panel.h, panel.cpp: add MeasureOverride which always returns
18455         0,0.
18457         * border.h (class Border): add property accessors for everything.
18459         * border.cpp (Border::MeasureOverride): new implementation.
18461         * value.h.in, value.cpp: add CornerRadius support, and remove the
18462         unnecessary casts (and in the Rect/Point cases, calls to the copy
18463         ctor)
18465         * value.h, dependencyproperty.g.cpp: regenerate.
18466         
18467 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18469         * textbox.h (class SelectionChangedEventArgs): Added
18470         Text/SelectionChangedEventArgs.
18472 2008-08-22  Chris Toshok  <toshok@ximian.com>
18474         * frameworkelement.cpp (FrameworkElement::Measure): instead of
18475         always calling MeasureOverride here, we call the registered manage
18476         callback if there is one.  So, we proxy into managed code here,
18477         invoke the virtual method FWE.MeasureOverride, and if there's no
18478         subclass override (or if it chains up for some reason), we end up
18479         in MeasureOverride by virtue of the pinvoke in
18480         FrameworkElement.cs.
18481         (FrameworkElement::MeasureOverride): move all the logic for the
18482         default MeasureOverride implementation here.  it's pretty
18483         braindead - takes margins into account, measures our child, makes
18484         sure our size is between Min/Max.  That's about it.
18485         (FrameworkElement::Arrange): same drill as ::Measure.
18486         (FrameworkElement::ArrangeOverride): still (incorrectly) return
18487         finalSize.
18489 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18491         * textbox.h: Made ArrangeOverride() virtual and added
18492         SelectionChangedEvent.
18494 2008-08-22  Chris Toshok  <toshok@ximian.com>
18496         * dependencyobject.cpp (DependencyObject::GetContent): guard
18497         against the value being NULL.
18499 2008-08-22  Larry Ewing  <lewing@novell.com>
18501         * collection.cpp (ContentWalker::ContentWalker): make
18502         ContentWalker understand directions (Logical, ZForward, ZReverse).
18504 2008-08-22  Larry Ewing  <lewing@novell.com>
18506         * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
18507         when drawing in the image backend.
18509 2008-08-22  Chris Toshok  <toshok@ximian.com>
18511         * frameworkelement.h, frameworkelement.cpp: add in the layout foo
18512         - provide implementations of Measure and Arrange that just call
18513         MeasureOverride and ArrangeOverride.  These are virtual and meant
18514         to be overridden either in unmanaged code (by simply overriding
18515         them), or in managed code (RegisterManagedOverrides is called in
18516         FWE.Initialize.)  Decorate the class with @CallInitialize so the
18517         managed ctor calls it.
18519         * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
18520         ctor, and add the layout methods.  Measure and Arrange are pure
18521         virtual.
18523         * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18524         
18525 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18527         * textbox.cpp (TextBox::Layout): Implemented rough layout.
18529         * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
18531 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18533         * textbox.cpp (TextBox::ArrangeOverride): Added.
18535         * frameworkelement.h (class FrameworkElement): Changed default
18536         Width/Height values to NAN.
18538         * textbox.cpp: Initial implementation of TextBox, Layout and
18539         Rendering logic still missing.
18541 2008-08-22  Larry Ewing  <lewing@novell.com>
18543         * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
18544         values are there.
18546 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18548         * audio-alsa.cpp: Call Underflowed () when we run out of data.
18550 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18552         * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
18553           VideoEnded and AudioEnded states. Implement handling of VideoEnded
18554           state, and call MediaElement::MediaEnded when both states have been
18555           reached.
18556         * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
18557           all media finished (both video and audio) logic there.
18559 2008-08-21  Larry Ewing  <lewing@novell.com>
18561         * uielement.cpp (UIElement::ComputeLocalTransform): clean up
18562         accumulated transform logic.  Keep the parent TransformFor out of
18563         the local_transform.
18565 2008-08-21  Larry Ewing  <lewing@novell.com>
18567         * uielement.cpp (UIElement::Dispose): add logic removed from
18568         panel.
18570         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
18571         ContentWalker.
18573 2008-08-21  Chris Toshok  <toshok@ximian.com>
18575         [ fixes annotations not showing up in pageturn due to a NULL
18576         background on the ink presenter ]
18578         * stylus.h, stylus.cpp (class InkPresenter): add an override of
18579         EmptyBackground().  If we have a non-empty stroke bounding
18580         rectangle, return false.  Otherwise fall back to
18581         Panel::EmptyBackground.
18583         * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
18584         method.  the panel implementation returns true if GetBackground()
18585         returns NULL.  Use this virtual method instead of an explicit
18586         GetBackground() call in Panel::FrontToBack.
18588 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18590         * enums.cpp: Added ScrollBarVisibility enum
18592         * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
18593         invalidate if the TextWrappingProperty changes too.
18595 2008-08-21  Chris Toshok  <toshok@ximian.com>
18597         * border.h, border.cpp, cornerradius.h: add new
18598         types.
18600         * Makefile.am: add border/cornerradius to the file list.
18602         * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
18603         dependencyproperty.g.cpp: regen.
18605 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18607         * textbox.h (class TextBox): The TextBox namespace should be
18608         System.Windows.Controls
18610         * stackpanel.h (class StackPanel): #include panel.h
18612 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18614         * textbox.h: Initial implementation of the TextBox class (just
18615         stubs atm).
18617         * value.h.in (struct Value): Don't use int32_t or uint64_t,
18618         etc. Be consistent and use the glib types.
18620         * layout.cpp (TextLayout::Layout): Fixed
18621         LineStackingStrategy/LineHeight issues. If we are using
18622         BlockLineHeight & the specified LineHeight is not Auto, then we
18623         need to use 0.0 as the descender.
18625 2008-08-21  Chris Toshok  <toshok@ximian.com>
18627         * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
18628         accessors to all the subclasses.  They're autogenerated from the
18629         respective class's DP's.
18631         * animation2.h: same.
18633         * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
18635         * control.h (class Control): add some more GenerateAccessors.
18637         * control.cpp: and remove the manual implementations here.
18639         * dependencyproperty.g.cpp: regen.
18641 2008-08-21  Larry Ewing  <lewing@novell.com>
18643         * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
18644         debug spew.
18646         * xaml.cpp (value_from_str): unref the collections we create after
18647         setting them.
18649 2008-08-21  Jackson Harper  <jackson@ximian.com>
18651         * xaml.cpp: Can't rely on the type for getting a managed element's
18652         name, we have to pull it from the element name provided to the
18653         XamlElementInfo.
18655 2008-08-21  Chris Toshok  <toshok@ximian.com>
18657         * dependencyobject.cpp (DependencyObject::HasProperty): pass
18658         additional_types to IsSubclassOf.
18660         * type.h, type.cpp: add IsSubclassOf variants that take
18661         additional_types.  Fixes lookup problems of non-custom DP's on
18662         managed subclasses.
18664 2008-08-21  Chris Toshok <toshok@ximian.com>
18666         * value.h.in (struct Value): make all single arg primitive value
18667         typed ctors "explicit" so c++ won't do any magic implicit
18668         conversion from value type to Value.
18670         * value.h: regen
18672         * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
18673         Value()'s explicitly.
18675         * collection.cpp (DoubleCollection::FromStr): same.
18677 2008-08-20  Larry Ewing  <lewing@novell.com>
18679         * dependencyobject.cpp (create_temp_namescope): don't leak the
18680         temporary namescope we create.  Also don't create it over and over
18681         again.
18683 2008-08-20  Larry Ewing  <lewing@novell.com>
18685         * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
18686         virtual methods so that we can begin to simplify content rules.
18688         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
18689         GetContent to handle the children in a generic way.
18691         * uielement.cpp|h: start moving generic uielement content logic
18692         here.  Implement OnLoaded and deal with content directly.
18693         
18694         * canvas.cpp|h: remove obsolete methods. Move most of zindex
18695         property logic from panel to here.
18697         * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
18698         to uielement.
18700         * control.cpp|h: generate accessors, start remove OnLoaded and
18701         SetSurface.
18703         * dependencyproperty.g.cpp: regen.
18704         
18705 2008-08-20  Chris Toshok  <toshok@ximian.com>
18707         * text.cpp, text.h: generate accessors for Glyph properties.
18709         * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
18710         shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
18711         xaml.cpp: make another pass through files switching to C++
18712         accessors from GetValue(FooClass::FooProperty)->AsFoo().
18714         * dependencyproperty.g.cpp: regen.
18716 2008-08-20  Chris Toshok  <toshok@ximian.com>
18718         * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
18719           canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
18720           frameworkelement.cpp, frameworkelement.h, geometry.cpp,
18721           geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
18722           namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
18723           shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
18724           text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
18725           uielement.h, xap.cpp, xap.h:
18727           mostly, decorate almost all DependencyProperties with
18728           @GenerateAccessors, add in lots of new ones that weren't present
18729           before (to the .h), and remove all those implementations from
18730           the .cpp files.
18732           Also, don't use #if SL_2_0 in the headers.  we can't depend on
18733           that being defined (especially once we install).  Any
18734           2.0-specific behavior needs to be done in the .cpp files.  There
18735           are still a few things that are wrong wrt
18736           this (dependencyproperty.g.cpp needs to define the DP's
18737           regardless of version, they can just be NULL in the 1.0 case for
18738           2.0 properties, for instance.)
18740         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
18742 2008-08-20  Chris Toshok  <toshok@ximian.com>
18744         * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
18746 2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
18748         * layout.cpp (TextLayout::Layout): Updated to take a
18749         TextLayoutHints argument for providing hints like text alignment
18750         and line stacking/height.
18752         * text.cpp (class TextBlock): Updated a bit for Silverlight
18753         2.0. All of the properties added in 2.0 are now there, although
18754         only 2 of them are respected at the moment (line stacking strategy
18755         & line height).
18757         * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
18759 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18761         * audio.cpp: NULL out the player instance after deleting it.
18763 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18765         * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
18766           called and if so, do nothing.
18768 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18770         * audio.cpp: We only support 1 or 2 channels for the moment.
18772 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18774         * media.cpp, media.h: Fix buffering progress to take into account that
18775           the first pts isn't necessarily 0 (happens for live media).
18777 2008-08-20  Chris Toshok  <toshok@ximian.com>
18779         * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
18780         Focus events on click in a 1.0 context.
18782 2008-08-20  Jackson Harper  <jackson@ximian.com>
18784         * xaml.cpp|h: Setting properties requires the xaml namespace so it
18785         can lookup managed types. TODO: It also needs the default
18786         assembly, but I am thinking of moving that to the loader.
18788 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18790         * mplayer.cpp: Properly ref/unref the AudioSource.
18792 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18794         * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
18796 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18798         * media.cpp, media.h, runtime.cpp: Remove media_init, just make
18799           runtime_init call Media::Initialize directly.
18801 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18803         * media.h, media.cpp: Remove media_element_advance_frame from header,
18804           no need to make it public.
18806 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18808         * mplayer.cpp: AdvanceFrame: only return true if we actually processed
18809           any frames. SeekCallback: clear the queue of audio frames as well.
18810         * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
18811           Don't change previous_position while we're seeking, and don't make
18812           it go backwards.
18813         * audio.cpp, audio.h: Added AudioSource::ClearFrames.
18815 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18817         * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
18819 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18821         * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
18822           generator.
18824 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
18826         * canvas.h, canvas.cpp:
18827         * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
18828         from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
18830         * panel.cpp, collection.cpp: related changes.
18832 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
18834         * uielement.h: change the generator instructions so the 
18835         NameProperty is generated in FrameworkElement.
18837 2008-08-19  Chris Toshok  <toshok@ximian.com>
18839         * dependencyobject.h,
18840         dependencyobject.cpp (DependencyObject::GetContent): ripped this
18841         out of a hack, should prove useful for the work coming up.
18843 2008-08-19  Chris Toshok  <toshok@ximian.com>
18845         * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
18847 2008-08-19  Chris Toshok  <toshok@ximian.com>
18849         * control.h, control.cpp (class Control): generate a binding for
18850         Control::InitializeFromXaml and drop the 2 manual C bindings.
18852         * cbinding.h, cbinding.cpp: regen.
18854 2008-08-19  Chris Toshok  <toshok@ximian.com>
18856         * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
18857         autogenerate our binding for it.
18859         * cbinding.h, cbinding.cpp: regen.
18861 2008-08-19  Chris Toshok  <toshok@ximian.com>
18863         * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
18864         real class, and remove the implementation of
18865         keyboard_get_modifiers.  instead, provide a c++ method (both a
18866         getter and setter) and annotate the Getter with
18867         GenerateCBinding/GeneratePInvoke.
18869         * collection.h, collection.cpp: reorder the class decls (why do
18870         people put private first?) and make CollectionIterator a real
18871         class, with annotated methods.  Also, move
18872         double_collection_from_str and point_collection_from_str to
18873         DoubleCollection::FromStr and PointCollection::FromStr
18874         respectively.  move double_garray_from_str out of here (to
18875         utils.h/utils.cpp)
18877         * utils.h, utils.cpp: new (hopefully last) home for
18878         double_garray_from_str.
18880         * point.h, point.cpp (struct Point): rename point_from_str to
18881         Point::FromStr.  no reason to have a C method for that.
18883         * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
18885         * window-gtk.h (class MoonWindowGtk): mark the ctor and
18886         GetWidget() with GenerateCBinding/GeneratePInvoke.
18888         * window-gtk.cpp: and remove their implementations.
18890         * xaml.cpp: convert over to all the new ::FromStr methods.
18892         * thickness.cpp: track new home of double_garray_from_str.
18894         * cbinding.h, cbinding.cpp: regen.
18896 2008-08-19  Chris Toshok  <toshok@ximian.com>
18898         * uielement.h, uielement.cpp: make almost all data
18899         private/protected.  Add a couple of methods to aid in
18900         this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
18901         cbinding for transform_point - it's never used.  Also, re-order
18902         the header to put public things first, then protected then
18903         private.
18905         * runtime.cpp: use IsLoaded.
18907         * panel.cpp: use ClearLoaded.
18909         * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
18910         TransformPoint.
18912 2008-08-19  Chris Toshok  <toshok@ximian.com>
18914         * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
18915         lists, as we will almost always have identical lists.  compare the
18916         head of the new list to focused_element to determine if focus
18917         changes.
18919 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18921         * pipeline.cpp: Beautify error messages.
18923 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18925         * media.cpp: test-inexistent-media(s) were failing due to ISP's
18926           tendency to return search pages for failed dns lookups. Fixed tests
18927           after testing with sane DNS settings and did the appropiate change
18928           in code (raise correct error message/number).
18930 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18932         * runtime.h: Make RUNTIME_INIT values sequential.
18934 2008-08-19  Chris Toshok  <toshok@ximian.com>
18936         * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
18937         of the object before parsing so that objects don't switch from the
18938         loader's surface to NULL as they're added to the hierarchy while
18939         being parsed.
18941 2008-08-19  Larry Ewing  <lewing@novell.com>
18943         * shape.cpp (Shape::InsideObject): check the extents first, then
18944         reorder the stroke/fill tests to test for the most likely first.
18946         Helps speed up sliverlight.net/world a bit.
18948 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18950         * mplayer.h, pipeline.h: No need to surround GetTypeName with
18951           OBJECT_TRACKING anymore.
18953 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18955         * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
18956           audio-pulse.h: Added, our new audio abstraction/implementation.
18957         * Makefile.am, src.mdp, type-generated.cpp: Updated.
18958         * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
18959         * runtime.cpp, runtime.h: Add runtime overrides for audio.
18961 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
18963         * xap.cpp (xap_unpack): Fixed compiler warning.
18965 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18967         * media.cpp: Include headers mplayer.h doesn't include anymore.
18968           MediaElement::SetMedia: only set audio data on the MediaPlayer if
18969           the media has audio. TImelineMarkerCollection::Add: don't call the
18970           base class' Add, call base's Insert instead. Fixes a stack overflow
18971           since base class' Add calls Insert, which TimelineMarkerCollection
18972           overrides to call Add.
18974 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18976         * enums.cpp: Wrap 2.0-only code in SL_2_0.
18978 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
18980         * zip/unzip.c: Get rid of unused variable.
18982         * value.cpp (Value::ToString): Get rid of unused variable.
18984 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18986         * dependencyobject.h: EventObject::ref: print a stack trace before the
18987           abort if we can, and fix typo in the abort message.
18989 2008-08-19  Geoff Norton  <gnorton@novell.com>
18991         * xap.cpp: Ensure we can actually enter the directory we're creating.
18993 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
18995         * mplayer.cpp: Silence the compile warning.
18997         * color.cpp (color_from_str): Got rid of unused variable.
18999         * xaml.cpp (dependency_object_set_attributes): Don't need to use
19000         strlen(str) == 0 to figure out if the string is empty, just check
19001         the first char.
19002         (wrap_type): Removed. Doesn't seem to be used any longer.
19003         (get_type_for_property_name): Same.
19004         (panel_add_child): Same.
19005         (dependency_object_set_property): Made static.
19006         (dependency_object_set_attributes): Same.
19007         (dependency_object_hookup_event): Same.
19008         (dependency_object_missed_property): Same.
19010         * dependencyproperty.cpp (resolve_property_path): Use proper
19011         integer types and avoid calling strlen if all we care to know is
19012         if the string is empty.
19014         * runtime.cpp (Surface::Paint): Get rid of an annoying debug
19015         printf.
19016         (Surface::HandleMouseEvent): Removed unused variable.
19018 2008-08-19  Chris Toshok  <toshok@ximian.com>
19020         * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
19021         robust - handle Type.Event notation, making sure that the type is
19022         valid for the target.
19024 2008-08-19  Larry Ewing  <lewing@novell.com>
19026         * runtime.cpp|h: add override to use sofware fallbacks for
19027         rendering.
19029 2008-08-19  Chris Toshok  <toshok@ximian.com>
19031         * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
19032         1.0 and 2.0 cases.  big oops.
19034 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19036         * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
19037         of a warning that is no longer valid.
19039 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19041         * downloader.h, downloader.cpp: Add a request field to
19042           DownloaderResponse, and a response field to DownloaderRequest. When
19043           a request is aborted, also abort the response. This fixes a crash
19044           when we aborted the request before receiving a response, the
19045           response had no idea the request had been aborted (since the
19046           request didn't store the response after creating it, it couldn't
19047           notify the response of the abort), and happily accessed deleted
19048           objects.
19050 2008-08-18  Chris Toshok  <toshok@ximian.com>
19052         * runtime.cpp (Surface::CreateArgsForEvent): new method, create
19053         the right kind of args for a given event.  we should probably
19054         autogenerate this.
19055         (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
19056         one instance of the event args that we use to bubble along the
19057         element list.  If it's a RoutedEventArgs subclass, set the source
19058         to be the first element in the list, and check the "Handled"
19059         attribute after every emit to see if we should finish early (this
19060         provides for 2.0 semantics).
19061         (Surface::FocusElement): unfortunately the event generation is
19062         async, so add a tick call if we need to.  if we already have a
19063         tick call (meaning >= 1 focus change has happened already in this
19064         tick), we drop the intervening change(s).  This is likely wrong.
19065         (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
19066         the proper element lists.
19067         (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
19068         silverlight2 (and we have a focused element), emit the event on
19069         the list of elements from the focused element back up to the root.
19070         Otherwise just emit it on the toplevel.
19072         * runtime.h (class Surface): add GetFocusedElement/FocusElement
19073         methods, which are used to implement
19074         FocusManager.GetFocusElement() and Control.Focus().
19076         * uielement.h, uielement.cpp (class UIElement): remove a bunch of
19077         Emit$Event() methods that were never used.
19079         * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
19080         not just "Loaded".  there are parsing rules that we can't make use
19081         of here, so more work will likely have to happen in the parser.
19083         * trigger.h (class EventTrigger): add registered_event_id.
19085         * cbinding.h, cbinding.cpp: regenerate.
19087 2008-08-18  Geoff Norton  <gnorton@novell.com>
19088         
19089         * type-generated.cpp, cbinding.cpp|h: Rengerated
19090         * dependencyobject.h: Bind DependencyObject .ctor
19092 2008-08-18  Geoff Norton  <gnorton@novell.com>
19094         * deployment.h: Move CrossDomainAccess to
19095         * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
19096         can specify values from the enum.
19098 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19100         * cbinding.cpp, cbinding.h, uielement.h: Mark
19101           UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
19103 2008-08-18  Larry Ewing  <lewing@novell.com>
19105         * panel.cpp|h: remove SetSurface override, the
19106         DependencyObjectCollection::SetSurface does the work already.
19108 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19110         * uielement.cpp: Autogenerate more of the bindings, make
19111         desired_size private, etc.
19113 2008-08-18  Geoff Norton  <gnorton@novell.com>
19114         
19115         * eventargs.cpp|h: Change the return type to int, fix the build.
19117 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19119         * uielement.cpp (uielement_get_surface): Removed.
19120         (uielement_invalidate): Removed.
19121         (uielement_set_transform_origin): Removed.
19123         * transform.cpp: Removed manual c-bindings.
19125         * text.cpp: Removed manual c-bindings for property accessors.
19127 2008-08-18  Geoff Norton  <gnorton@novell.com>
19129         * type-generated.cpp, cbinding.cpp|h: Rengerated
19130         * uielement.cpp|h, type.h, value.h: Keyboard->Key
19131         * runtime.cpp|h: Move key translation to eventargs, and pass the
19132         raw GdkEventKey to KeyEventArgs.
19133         * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
19134         and remove the old KeyboardEventArgs.
19136 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19138         * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
19140         * size.cpp: Removed manual ctor c-binding.
19142         * shape.cpp: Removed manual c-bindings for property accessors.
19144 2008-08-18  Geoff Norton  <gnorton@novell.com>
19146         * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
19147         from managed Streams.
19149 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19151         * runtime.cpp: Removed manual c-bindings for Surface and renamed
19152         Get/SetTrans() to Get/SetTransparent().
19154         * panel.cpp: Removed manual c-bindings for property accessors.
19156         * media.cpp: Removed manual c-bindings for property accessors and
19157         other methods that are now autogenerated.
19159 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19161         * dependencyobject.h: Make the generator happy.
19163 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19165         * geometry.cpp: Removed manual c-bindings for property accessors.
19167 2008-08-18  Michael Dominic K.  <mdk@mdk.am>
19169         * runtime.h: Caller is "in main thread" also when the main_thread
19170         pointer equals NULL (no surface has been created).
19172 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19174         * debug.cpp: Fix a leak found by valgrind.
19176 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19178         * dependencyobject.h: Make GetTypeName virtual if we're tracking
19179           objects, enables better output of lost objects.
19181 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19183         * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
19184           more objects to be enqueued for unref, loop until there are none
19185           left.
19187 2008-08-17  Geoff Norton  <gnorton@novell.com>
19189         * downloader.cpp|h: Add a method for DownloaderResponse to 
19190         support a Header Visitor.
19192 2008-08-17  Geoff Norton  <gnorton@novell.com>
19194         * uielement.h: Expose desired_size as public to fix the build.
19196 2008-08-17  Chris Toshok  <toshok@ximian.com>
19198         * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
19200 2008-08-17  Chris Toshok  <toshok@ximian.com>
19202         * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
19203         INCLUDE_MANAGED_CODE.
19205 2008-08-15  Larry Ewing  <lewing@novell.com>
19207         * clock.cpp|h: add methods Jeff removed back. 
19209 2008-08-15  Chris Toshok  <toshok@ximian.com>
19211         * stylus.h (class DrawingAttributes): all managed DP fields are
19212         private.
19213         (class Stroke): DrawingAttributesProperty and StylusPointsProperty
19214         are private in managed-land.
19216 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19218         * grid.h: Autogenerate bindings for GetActualWidth/Height
19220         * grid.cpp: Removed manual c-bindings.
19222         * frameworkelement.cpp: Removed manual c-bindings.
19224 2008-08-15  Chris Toshok  <toshok@ximian.com>
19226         * eventargs.h (enum CollectionChangedAction): change Reset to
19227         Cleared, and add Clearing to handle the old functionality in
19228         DependencyObject::OnCollectionClear.
19230         * dependencyobject.h (class DependencyObject): remove
19231         OnCollectionClear.  we handle that case in OnCollectionChanged
19232         now.
19234         * panel.h, panel.cpp (Panel::OnCollectionChanged): move
19235         OnCollectionClear code to here.
19237         * uielement.cpp (UIElement::OnCollectionChanged): add
19238         ActionClearing code here.
19240         * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
19242         * collection.cpp (Collection::Clear): use
19243         EmitChanged (CollectionChangedActionClearing,...) instead of
19244         OnCollectionClear.
19246 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19248         * eventargs.cpp|h: Same.
19250         * control.cpp: Same.
19252         * contentcontrol.cpp: Removed manual property accessor c-bindings.
19254         * clock.cpp: Removed manual c-bindings for things that can be
19255         autogenerated.
19257         * brush.cpp|h: Removed manual c-bindings for property accessors.
19259         * animation.cpp|h: Added some convenience c++ property accessors and
19260         got rid of all of the manual c-bindings. Fixed them to be
19261         auto-generated.
19263         * stylus.cpp: Added c++ property accessors and updated the code to
19264         use them (cleans up some code) and also got rid of the c binding
19265         accessors. We'll autogenerate these.
19267 2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
19269         * layout.cpp: Don't add kerning before a dot (.). This match SL
19270         behavior (i.e. it's not a "sliding dot" algorithm like I expected)
19271         and the effect is visible in a few DRT (like #184).
19273 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19275         * uielement.cpp (UIElement::GetTriggers): Added for convenience.
19276         (UIElement::Dispose): Use the new convenience method.
19278 2008-08-15  Chris Toshok  <toshok@ximian.com>
19280         * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
19281         (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
19282         queue a re-sort.
19283         (Panel::OnCollectionChanged): simplify this since the code moved
19284         to ChildAdded/ChildRemoved.
19286         * panel.h, panel.cpp (Panel::Dispose): loop over our children
19287         setting their visual parent to NULL.
19289         * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
19290         trigger collection removing ourselves as the target.
19291         (UIElement::OnPropertyChanged): handle TriggersProperty here -
19292         remove target from the old triggers and set target on the new
19293         ones.
19294         (UIElement::OnCollectionChanged): new method, handle
19295         TriggersCollection.
19297         * dependencyobject.cpp: be consistent in our treatment of
19298         LogicalParent - clear it in every place we're removing a DO.  Warn
19299         if we're setting it again on the same DO.
19301         * collection.h, collection.cpp: remove triggercollection's
19302         added/removedfromcollection, adn remove uielementcollection's
19303         removedfromcollection.  Also, stop using a separate closure.  The
19304         collection's LogicalParent always has the same value - use that.
19306 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19308         * clock.cpp (TimeManager::SourceTick): Instead of always using up
19309         to 1/30 of a second for flushing the async queue, use only the
19310         time remaining in our render pass to flush it.
19312 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19314         * animation.h: KeyTimeProperty isn't nullable in managed code.
19316 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19318         * cbinding.cpp, cbinding.h: Regenerated.
19319         * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
19320           to at least open the source.
19321         * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
19323 2008-08-15  Jackson Harper  <jackson@ximian.com>
19325         * xaml.cpp: Need to advance after F.
19327 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19329         * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
19330           DRT#114.
19332 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19334         * dependencyproperty.g.cpp: Regenerated.
19336 2008-08-14  Larry Ewing  <lewing@novell.com>
19338         * animation.h (class KeyFrame): remove the KeyTime DP and make
19339         the ctor private this is an abstract class.
19341         * animation.cpp: retrieve the property via name.
19343 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19345         * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
19346         many times as we can in 1/30th of a second. Major visual
19347         performance improvement for bug #395160.
19349 2008-08-14  Jackson Harper  <jackson@ximian.com>
19351         * xaml.cpp|h: We need to pass a pointer to the top level control
19352         when hooking up a managed event, the managed code uses this to
19353         find the method to invoke.
19355 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19357         * uielement.cpp: Implemented property accessors for ZIndex
19359         * collection.cpp (UIElementZIndexComparer): Use
19360         UIElement::GetZIndex(). If, in the future, we make GetZIndex()
19361         return a cached value, now we'll automagically benefit from it.
19363 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19365         ZIndex sorting optimization for bug #395160
19367         * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
19368         over the z_sorted list, it might not yet be
19369         populated (e.g. ResortZIndex() may not have been called yet).
19370         (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
19371         new collection is non-null.
19372         (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
19373         (Panel::OnLoaded): Queue a resort here too.
19375         * collection.cpp (UIElementCollection::AddedToCollection):
19376         Removed. We don't want to do the zindex sortign here anymore. Too
19377         slow. Instead, we'll have Panel::OnCollectionChanged() set the
19378         DirtyChildrenZIndices dirty flag so that the renderer forces a
19379         resort.
19380         (UIElementCollection::Insert): Removed, no need to override
19381         anymore since we won't be resorting by zindex here anymore.
19382         (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
19383         maintained as items are added/inserted, we need to always init the
19384         z_sorted array here even if we only have 1 item.
19386 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19388         * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
19389           instance.
19390         * playlist.cpp: Use DependencyObject::SetName instead of the C method.
19391         * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
19392           well as Name accessors.
19393         * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
19394         * runtime.cpp: Updated according to new method names.
19396 2008-08-14  Jackson Harper  <jackson@ximian.com>
19398         * xaml.cpp: We now create property instances from the property's
19399         type info not the property's parent type. This will allow us to
19400         have a managed attached property on a native object.
19402 2008-08-14  Chris Toshok  <toshok@ximian.com>
19404         * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
19406         * thickness.h, thickness.cpp: add thickness_from_str.
19408         * xaml.cpp: add thickness parsing.
19410 2008-08-14  Jackson Harper  <jackson@ximian.com>
19412         * xaml.cpp: Need to lookup property element name's in their
19413         namespace so that managed attached properties can be set.
19415 2008-08-14  Jackson Harper  <jackson@ximian.com>
19417         * xaml.cpp: If there is a dot in the element name we can assume
19418         it's a property (or at least not an element).  This should prevent
19419         some extra calls into managed code to try to create types from
19420         property names.
19422 2008-08-13  Geoff Norton  <gnorton@novell.com>
19424         * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
19425         calls into the time manager.
19427 2008-08-13  Geoff Norton  <gnorton@novell.com>
19429         * runtime.cpp|h: Add a binding for g_idle_add.
19431 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19433         * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
19434           MouseEventArgs methods.
19436 2008-08-14  Jackson Harper  <jackson@ximian.com>
19438         * type-generated.cpp: Value types.
19440 2008-08-13  Jackson Harper  <jackson@ximian.com>
19442         * xaml.cpp: Make sure we set content properties.
19444 2008-08-13  Jackson Harper  <jackson@ximian.com>
19446         * xaml.cpp: Add support for parsing value types.
19448 2008-08-13  Chris Toshok  <toshok@ximian.com>
19450         * panel.cpp (Panel::OnCollectionChanged): we only need to call
19451         OnLoaded on the new child.
19453 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19455         * stylus.h: StylusInfo doesn't have a managed equivalent.
19457 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19459         * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
19460         * cbinding.cpp, cbinding.h: Regenerated.
19462 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19464         * type.cpp: Remove spew.
19465         * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
19466           we're trying to get values, not set them.
19468 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19470         * dependencyproperty.g.cpp: Regenerated.
19471         * geometry.h: Added IsFilled property.
19473 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19475         * brush.h: Set correct managed DP access and property types.
19477 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19479         * *.h: Added GeneratePInvoke attribute to each ctor
19481 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19483         * text.cpp: s/Inlines/InlineCollection/g
19485         * xaml.cpp: s/Inlines/InlineCollection/g
19487         * collection.h (class InlineCollection): Renamed from Inlines.
19489         * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
19490         and also the ctor. Needed to prevent a crash in test-props.html
19492 2008-08-13  Geoff Norton  <gnorton@novell.com>
19494         * runtime.cpp|h: Reuse the old html_timer infrastructure for the
19495         intial DispatcherTimer implementation.
19497 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19499         * media.h (class MediaElement): Make MarkersProperty internal for
19500         managed-side.
19502         * grid.h (class Grid): Make Column/RowDefinitionsProperties
19503         internal for managed-side.
19505         * text.h (class TextBlock): Make InlinesProperty internal for
19506         managed-side.
19508         * panel.h (class Panel): Update ChildrenProperty managed property
19509         access.
19511         Also added newlines to the end of some files to silence compile
19512         warnings.
19514 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19516         * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
19517           cbinding.cpp, cbinding.h: Regenerated.
19518         * geometry.h: Annotation fix.
19519         * Makefile.am, src.mdp: Added tilesource.h
19520         * tilesource.h: Added.
19522 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19524         * src.mdp, Makefile.am: Added animation2.h
19525         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
19526           dependencyproperty.g.cpp: Regenerated.
19527         * animation.h: Added missing 2.0 DPs and more annotations.
19528         * animation2.h: Added, contains 2.0 animation classes.
19529         * clock.h: There are no managed equivalent of TimelineGroup and
19530           ParallelTimeline, remove their Namespace annotation.
19532 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19534         * shape.h: Fix warning.
19536 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19538         * shape.h: The managed Shape class must be constructable, so make all
19539           pure virtual methods from the native Shape class just virtual.
19540         * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
19542 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19544         * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
19545           dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
19546           text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
19547           annotations to make gui-compare happier.
19549 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19551         * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
19552           style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
19553           tweaking.
19555 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19557         * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
19558           dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
19559           type-generated.cpp, value.h: Added a native StackPanel class and
19560           generate the managed StackPanel.
19562 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19564         * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
19565           namescope.h, stylus.h, transform.h: Tweak some annotations.
19567 2008-08-12  Chris Toshok  <toshok@ximian.com>
19569         * style.h (class Style): make the "Setters DP" field private.
19571         * template.h (class ControlTemplate): add TargetType DP
19573         * dependencyproperty.g.cpp: regen.
19575 2008-08-12  Chris Toshok  <toshok@ximian.com>
19577         * style.h (class Setter): hack for the DependencyProperty valued
19578         property.  we need to parse a string DP name in a context where we
19579         don't know the type to apply to it, so we need to have a string
19580         backed property.
19582         * dependencyproperty.g.cpp: regen.
19584 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19586         * collection.h: Annotate Collection.
19588 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19590         * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
19591           size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
19593 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19595         * src.mdp: Updated.
19597 2008-08-12  Chris Toshok  <toshok@ximian.com>
19599         * collection.cpp (Collection::Clear): make a temporary copy of the
19600         array so we can zero out the ptrarray before calling
19601         RemovedFromCollection.
19603 2008-08-12  Jackson Harper  <jackson@ximian.com>
19605         * xaml.h:
19606         * xaml.cpp: Hydrate now passes in the default assembly name and
19607         path (we can probably do away with path's I think that's just a
19608         holdover from 1.1).  If no assembly name is specified in the
19609         custom xmlns, the default's are used.
19611 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19613         * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
19614           style.h, uielement.h, grid.h, media.h: Tweaked annotations to
19615           support managed DP accessor generation.
19617 2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
19619         * collection.cpp (Collection::SetCount): Convenience function.
19620         (Collection::Clear): Use SetCount().
19621         (Collection::Insert): Same.
19622         (Collection::RemoveAt): Same.
19624         * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
19625         parent class rather than base class - while the
19626         DependencyObjectCollection might not currently override Add/Insert
19627         methods, if at some later point overrides are added, then we need
19628         to do no work here.
19630         * collection.cpp (DependencyObjectCollection::SetValueAt):
19631         Removed (not used anywhere).
19632         (Collection::SetValueAtWithError): This needs to call
19633         SetValueAt(), not GetValueAt().
19634         (Collection::SetValueAt): Delete the removed Value after emitting
19635         the event so we don't leak it.
19637 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19639         * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
19640           deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
19641           trigger.h, uielement.h: Use string instead of char* as
19642           @PropertyType.
19644 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19646         * animation.h, brush.h, canvas.h, clock.h, collection.h,
19647           contentcontrol.h, control.h, dependencyobject.h, deployment.h,
19648           downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
19649           namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
19650           transform.h, trigger.h, uielement.h, usercontrol.h: Added
19651           @Namespace annotations, and changed @PropertyType which were
19652           declared as gint32 (and are enums) to use the actual enum type.
19653         * dependencyproperty.g.cpp: Updated.
19655 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19657         * src.mdp: Updated.
19659 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19661         * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
19662           DependencyProperty to the Kind enum.
19664 2008-08-11  Chris Toshok  <toshok@ximian.com>
19666         * deployment.h (class Application): add ResourceProperty.
19668         * style.h: add ValueProperty.
19670         * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
19671         after adding the Version=2.0 stuff to the collection api.
19673         * dependencyproperty.g.cpp: regen.
19675 2008-08-11  Chris Toshok  <toshok@ximian.com>
19677         * error.h, error.cpp: add an enum to MoonError that lets us
19678         specify which exception to raise.
19679         
19680         * collection.h, collection.cpp: a few changes:
19682         1. make most methods take Value* now instead of Value, to ease the
19683         autogenerated bindings.  Leave in Add/Remove taking (Value v) so
19684         we can let c++ do some implicit conversion lifting for us.  Leave
19685         the (Value) variants as non-virtual, and make the Value* ones
19686         virtual.
19688         2. Make ::Add call ::Insert, instead of duplicating all the code.
19690         3. Move all calls of AddedToCollection and RemovedFromCollection
19691         to *after* the work has been done (they're past-tense, so do what
19692         their name implies.)  This means subclasses can assume the item is
19693         already in the array (or removed from it) when those methods are
19694         called.  The one holdout to this utopian ideal is Clear().  we
19695         need to fix that.
19697         4. Switch from overriding GetValue to handle CountProperty (and
19698         leaking a Value* every time we get it) to setting the
19699         CountProperty whenever we need to (in Insert/RemoveAt).
19701         5. Add special GetValueAtWithError, SetValueAtWithError, and
19702         RemoveAtWithError methods, that allow us to effectively raise
19703         exceptions from the unmanaged code.  Use the new
19704         MoonError::ErrorKind enum to specify which exception.
19706         6. remove a bunch of C api, which is now autogenerated.
19707         
19708         * dependencyproperty.g.cpp (dependency_property_g_init): regen to
19709         pick up Collection::CountProperty's default value.
19711         * cbinding.h, cbinding.cpp: autogen'ed collection api.
19713         * stylus.h, media.h, media.cpp: track collection changes.
19715         * dependencyobject.cpp: track MoonError enum change.
19717 2008-08-11  Chris Toshok  <toshok@ximian.com>
19719         * dependencyproperty.g.cpp: regen.
19721         * control.h (class Control): add StyleProperty.
19723 2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
19725         * layout.cpp: Compute line's height with more precision. This 
19726         removes the cumulative difference (over multiple lines) with
19727         Silverlight implementation. Fix DRT#209 (enough to PASS) and 
19728         improve several other ones (already passing but imperfect).
19730 2008-08-11  Chris Toshok  <toshok@ximian.com>
19732         * style.h: comment out 2 problematic DP's for now.
19734         * dependencyproperty.g.cpp: regen
19736 2008-08-11  Chris Toshok  <toshok@ximian.com>
19738         * style.h, style.cpp: add Style, SetterBase, Setter, and
19739         SetterBaseCollection unmanaged types.
19741         * Makefile.am: add them to the 2.0 build.
19743         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
19744         dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
19745         
19746 2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
19748         * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
19749         cache.
19750         (Polygon::OnCollectionChanged): Same.
19752         * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
19753         the TextDecorationsProperty changes too. Fixes the "underline
19754         hyperlinks" portion of bug #412986.
19756 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19758         * xaml.cpp: Remove debug spew.
19760 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19762         * array.cpp, array.h: Removed, no longer needed.
19763         * collection.cpp, collection.h: Moved double_garray_from_str to
19764           collection.cpp|h.
19765         * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
19766           shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
19767           xaml.cpp: Remove the double and point arrays, no longer needed.
19768         * type-generated.cpp: Remove the double and point arrays, no longer
19769           needed. Implement support for 2.0 events.
19771 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19773         * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
19774           during parsing).
19776 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19778         * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
19780 2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
19782         * *.h: Removed *_new() prototypes which are autogenerated in
19783         cbinding.h
19785 2008-08-08  Chris Toshok  <toshok@ximian.com>
19787         * template.h, template.cpp: new file, stub implementations for
19788         FrameworkTemplate and ControlTemplate.
19790         * Makefile.am: add template.h/cpp.
19792         * control.h: add Template property.
19794         * frameworkelement.h: add some 2.0 events.
19796         * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
19797         value.h, type-generated.cpp: regenerate.
19798         
19799 2008-08-08  Chris Toshok  <toshok@ximian.com>
19801         * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
19802         parser around in various methods (starting from the public
19803         xaml_set_property_from_str and value_from_str*) in order to get it
19804         down to where it's needed for the enum_* calls.
19806         * enums.h, enums.cpp: add a "sl2" argument so we can resolve
19807         sl1/sl2 specific enum values, and add the 2.0 specific
19808         Horizontal/VerticalAlignment mappings.
19810 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19812         * runtime.cpp: Remove comments to self :)
19814 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19816         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19817           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
19818           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
19819           animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
19820           control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
19821           clock.cpp, uielement.h, collection.h, geometry.h,
19822           contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
19823           collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
19824           frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
19825           namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
19826           registration from *_init methods, and remove *_init methods which
19827           turned out to be empty after that.
19829 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19831         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19832           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
19833           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
19834           animation.h, grid.cpp, downloader.h, shape.h,
19835           dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
19836           control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
19837           Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
19838           clock.cpp, uielement.h, collection.h, geometry.h,
19839           contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
19840           grid.h, collection.cpp, geometry.cpp, shape.cpp,
19841           dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
19842           brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
19843           usercontrol.h: Generate dependency property registration.
19845 2008-08-07  Chris Toshok  <toshok@ximian.com>
19847         * collection.h, collection.cpp (double_collection_from_str): new
19848         method.
19849         (point_collection_from_str): new method.
19851         * xaml.cpp (value_from_str): add support for
19852         DoubleCollection/PointCollection properties.  leave
19853         DoubleArray/PointArray in for now, although nothing should use it.
19855         * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
19856         PointArray/DoubleArray properties to using
19857         PointCollection/DoubleCollection.  This is unfortunately a
19858         necessity due to the 2.0 changes, but it should be transparent for
19859         everything else.
19861 2008-08-07  Larry Ewing  <lewing@novell.com>
19863         * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
19864         on ShiftPosition interaction with the shape cache to fix the
19865         droppings we were seeing in AnimationMatrix and
19866         StoryBoard_ModifyProperty.htm.
19868 2008-08-07  Geoff Norton  <gnorton@novell.com>
19870         * media.cpp: When the MediaElement source changes set the
19871         BufferingProgress back to 0 otherwise we may never emit a 
19872         BufferingProgressChangedEvent for the new source.
19874 2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
19876         * layout.cpp: Handle negative horiBearingX correctly. This gives
19877         better visual results in DRT #47 (same width value, up to 2 
19878         decimal) and #209 (not enough to make it PASS but I doubt the 
19879         master is ok, since I can't duplicate its output).
19881 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19883         * dependencyobject.cpp: HasProperty: accept attached properties for
19884           now.
19886 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19888         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19889           control.h, deployment.h, text.h, thickness.h, trigger.cpp,
19890           canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
19891           transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
19892           shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
19893           text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
19894           point.h, collection.h, geometry.h, contentcontrol.cpp,
19895           frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
19896           geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
19897           rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
19898           instructions to generate c constructors in headers and remove *_new
19899           implementations from cpp files.
19900         * dependencyobject.h: Typedef function pointer to avoid making the
19901           generator understand function pointer syntax. Update comments to
19902           new syntax.
19903         * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
19904         * type.h, type.h.in: Updated comments to new syntax.
19905         * mms-downloader.h: Use C++ syntax.
19906         * dependencyproperty.h, dependencyproperty.cpp: Make
19907           dependency_property_register_managed_property a method on the type
19908           and update comments to new syntax.
19909         * type-generated.cpp: Updated by new generator, which did actually
19910           catch a few errors.
19912 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19914         * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
19915           until it's fixed.
19917 2008-08-06  Geoff Norton  <gnorton@novell.com>
19919         * dependencyproperty.cpp: When registering a clashing DP
19920         return the original so that the code can act on it as it
19921         expects.  Fixes about 18 DRT regressions.
19923 2008-08-06  Chris Toshok  <toshok@ximian.com>
19925         * uielement.h, uielement.cpp: add GetTransformToUIElement, the
19926         unmanaged equivalent to the managed UIElement.TransformToVisual.
19928         Also change the signature of HitTest to take a Point, not two
19929         doubles.  Add a HitTest overload that takes a Rect in
19930         preparation for 2.0.
19932         * panel.h, panel.cpp: track HitTest signature change.
19934         * control.h, control.cpp: track HitTest signature change.
19936 2008-08-06  Chris Toshok  <toshok@ximian.com>
19938         * transform.h, transform.cpp: add a convenience ctor for Matrix
19939         that takes a cairo_matrix_t*.
19941 2008-08-06  Chris Toshok  <toshok@ximian.com>
19943         * type-generated.cpp (type_infos): fix ctors for UIElement and
19944         UIElementCollection.
19946 2008-08-06  Chris Toshok  <toshok@ximian.com>
19948         * frameworkelement.h, frameworkelement.cpp: add
19949         DataContextProperty.
19951 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19953         * type.cpp: Fix for old glib in sled.
19955 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19957         * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
19958           type-generated.cpp: Add custom properties to a GSList instead of
19959           the hash table given that several custom properties can be
19960           registered on the same type with the same name.
19962 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19964         * src.mdp: Make src and plugin projects build.
19966 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19968         * src.mdp: Updated.
19970 2008-08-05  Chris Toshok  <toshok@ximian.com>
19972         * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
19973         superclass of Transform, and move all the current Transform stuff
19974         there.
19976         * type.h, type-generated.cpp, value.h: resync
19978 2008-08-05  Chris Toshok  <toshok@ximian.com>
19980         * uielement.h, uielement.cpp, frameworkelement.h,
19981         frameworkelement.cpp: move the UIElement DPs back - the move to
19982         FrameworkElement breaks tests.
19984         * collection.cpp (TriggerCollection::AddedToCollection): quiet
19985         this down.
19986         (TriggerCollection::RemovedFromCollection): same.
19988 2008-08-05  Chris Toshok  <toshok@ximian.com>
19990         * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
19991         DependencyProperties.  we need a way to limit access to these to
19992         only the 2.0 case.
19994         * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
19995         TagProperty, TriggersProperty are moved to
19996         frameworkelement.h/.cpp.
19997         
19998         * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
19999         moved from UIElement to FrameworkElement.
20001         * size.h, size.cpp: add SizeChangedEventArgs.
20003         * thickness.h: move this type here
20005         * control.h: #include thickness.h
20007         * type.h, value.h, type-generated.cpp: regenerate for
20008         SIZECHANGEDEVENTARGS.
20009         
20010 2008-08-05  Chris Toshok  <toshok@ximian.com>
20012         * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
20014         * enums.h: add comment about keeping MouseCursors enum in sync
20015         with Cursor.cs.
20017         * enums.cpp: make all the mappings use symbols instead of integer
20018         constants.  Also, rename enums.c to enums.cpp so it can include
20019         the .h files for enums not in enums.h.
20021 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20023         * src.mdp: Remove visual.cpp|h from here too.
20025 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20027         * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
20028           type-generated.cpp, uielement.cpp, uielement.h, value.h,
20029           visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
20030           libmoon.h: Deleted Visual (moved content into UIElement), and
20031           renamed VisualCollection to UIElementCollection.
20033 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20035         * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
20036           GetValueWithError: Add a parameter to specify the exact type
20037           (including managed subclassing) of the object. HasProperty: use
20038           that parameter to determine if the type has the specified property
20039           or not.
20040         * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
20041           a is_custom field to determine if the property is our own or not.
20043 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20045         * cbinding.cpp, cbinding.h: Updated.
20046         * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
20047           dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
20048           type.h.in, type-generated.cpp: Create a Types class which may
20049           contain additional types. Change the DP/DO/Type overloads
20050           containing a Surface to take a Types argument instead.
20052 2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20054         * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
20056 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20058         * animation.cpp:
20059         * clock.cpp:
20060         * clock.h: Adding method to store a manual target (instead of a named target)
20061         for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
20063 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20065         * animation.cpp:
20066         * animation.h: A little bit of C API for KeySpline.
20068 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20070         * runtime.cpp: _get_surface can only be called from the main thread.
20072 2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20074         * src.mdp, cbinding.h, cbinding.cpp: Updated.
20075         * Makefile.am: Include error.cpp.
20076         * error.h, error.cpp: Added MoonError.
20077         * dependencyproperty.h: Make RegisterFull 2.0 only.
20078         * dependencyobject.h, dependencyobject.cpp: Added and implemented
20079           Get[[No]Default]ValueWithError and a HasProperty method which takes
20080           into account properties registered on a surface.
20082 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20084         * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
20085         * media.cpp: Use property accessors instead of GetValue.
20087 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20089         * cbinding.cpp, cbinding.h: Update.
20090         * dependencyproperty.cpp: RegisterFull: Only wrap method code in
20091           SL_2_0, fixed 1.0 build.
20093 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20095         * dependencyproperty.h: Make GetName return a const char*, and rename
20096           parameters from readonly to read_only (to not conflict with C#
20097           keywords).
20099 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20101         * src.mdp: Updated.
20102         * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
20103           DependencyProperty's C methods.
20104         * cbinding.cpp, cbinding.h: Added.
20105         * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
20106           moon/generators, and add methodgen to generate pinvokes, and cgen
20107           to generate c bindings.
20109 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20111         * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
20112           Implement property changed callbacks.
20114 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20116         * contentcontrol.h, control.h: Fix includes.
20118 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20120         * pipeline-ffmpeg.cpp: Fix warning.
20122 2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
20124         * dependencyobject.cpp (EventObject::Dispose): Call
20125         SetSurface (NULL)
20126         (EventObject::unref): Don't call SetSurface() here anymore.
20128 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20130         * runtime.cpp|h: Adding few utility functions to modify the flags
20131         at runtime -- provided that there are no surfaces currently
20132         present. Would be nice to be able to somehow do it before calling
20133         runtime_init ().
20135 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20137         * runtime.cpp|h: Adding an expose handoff custom
20138         function that can be set on surface.  It's called just after
20139         render_cb when something has been updated on the screen.
20141 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20143         * runtime.cpp|h: Adding a global surface list and an
20144         ability to access it.  I have a bad feeling we need some locking
20145         in the _get_surface_list function.
20147 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20148         
20149         * src.mdp: Updated.
20151 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20153         This is the proper fix for bug #412443
20155         * visual.cpp (VisualCollection::Dispose): Implement Dispose()
20156         method.
20157         (VisualCollection::RemovedFromCollection): Now that we know we are
20158         disposing, we can unset VisualParent here instead of in our
20159         dtor/Dispose() method, saving us from having to interate over our
20160         children twice.
20162         * collection.cpp (Collection::Dispose): Implement a Dispose()
20163         method which does what the dtor used to do.
20165         * dependencyobject.cpp (EventObject::unref): Call Dispose() just
20166         before deleting the object.
20168 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20170         * dependencyobject.cpp (struct Listener): Comment out the listener
20171         reffing from previous commit. I don't think this is correct.
20173         * visual.cpp (VisualCollection): Set z_sorted to NULL after
20174         freeing it so that parent class dtor calling
20175         RemovedFromCollection() will not poke at free'd memory.
20177 2008-07-31  Geoff Norton  <gnorton@novell.com>
20179         * Makefile.am: Undo part of the recent Makefile changes as they broke 
20180         the 1.0 build.
20182 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20184         Fixes bug #412443
20186         * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
20187         Ref the listener.
20188         (DependencyObject::RemovePropertyChangeListener): Unref the listener.
20190 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20192         * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
20193         this needs to chain up to
20194         DependencyObjectCollection::RemovedFromCollection() rather than
20195         AddedToCollection(). Duh.
20197 2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
20199         * contentcontrol.cpp|h: Added.
20201         * enums.h: Moved some font/text enums here from font.h
20203 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20205         * dependencyproperty.cpp: Fix build.
20207 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20209         * runtime.cpp: Fix 1.0 build.
20211 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20213         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
20214           type.cpp, type.h, type.h.in, typegen/typegen.cs,
20215           type-generated.cpp: Store DependencyProperties in the Type* instead
20216           of a hashtable keyed on the kind.
20218 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20220         * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
20221           given that since we might not have access to the surface where the
20222           type was registered, it's not possible to do any type checking 
20223         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
20224           Implement registration of managed properties on a surface.
20225         * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
20226           types registered on a surface, added a Type::MANAGED enum value.
20227         * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
20228           MANAGED type.
20230 2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
20232         * text.cpp (inline_new): Added.
20234 2008-07-29  Jackson Harper  <jackson@ximian.com>
20236         * xaml.cpp: Add a set_parent call, I need to do some fanagling
20237         there so collection items don't have their parents set.
20238         - Managed items that are being hydrated or created using x:Class
20239         need to get content properties from the managed world.
20240         
20241 2008-07-28  Chris Toshok  <toshok@ximian.com>
20243         * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
20244         type-generated.cpp: Add Size foo.
20246 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
20248         * value.cpp (Value::FreeValue): Oops, free Thickness.
20250 2008-07-28  Chris Toshok  <toshok@ximian.com>
20252         * control.h (struct Thickness): reorder fields to match managed
20253         struct.
20255 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
20257         * typegen/typegen.cs: Added Thickness.
20259         * value.h.in, type.h.in: Added Thickness.
20261         * value.cpp: Implemented Thickness value ctor/etc.
20263         * enums.h: Added more 2.0-specific enums.
20265         * control.cpp|h: Implemented property accessors/bindings and
20266         Thickness struct.
20268 2008-07-28  Michael Dominic K.  <mdk@mdk.am>
20270         * animation.cpp: When starting an SB that has been started already make sure to
20271         remove the Completed handler before the teardown. Fixes #405518.
20273 2008-07-28  Chris Toshok  <toshok@ximian.com>
20274         
20275         * collection.cpp (collection_iterator_next): move the check for
20276         index-in-range to after the increment of it.  that way managed
20277         code doesn't step off the end of the list.
20279 2008-07-26  Chris Toshok  <toshok@ximian.com>
20281         * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
20282         MouseEventArgs and KeyboardEventArgs classes subclasses of a new
20283         class - RoutedEventArgs.  Also, add a "Handled" field to both
20284         MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
20285         class to map to the 2.0 static Keyboard class.  it exposes nothing
20286         but a Modifiers property, which isn't updated at present, but will
20287         be by the Surface code (in the key event handler).
20289         * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
20290         type/value.
20292 2008-07-26  Chris Toshok  <toshok@ximian.com>
20294         * enums.h (enum ModifierKey): 2.0 specific enum for use by the
20295         Keyboard class.
20297 2008-07-26  Jackson Harper  <jackson@ximian.com>
20299         * xaml.cpp: If there isn't a managed content property, try looking
20300         for an unmanaged one.
20302 2008-07-26  Jackson Harper  <jackson@ximian.com>
20304         * xaml.h|cpp: Create elements for imported managed namespaces.
20305         
20306 2008-07-25  Chris Toshok  <toshok@ximian.com>
20308         * runtime.h, runtime.cpp: reformat the class decl to put public:
20309         stuff first.  add "bool silverlight2" to the surface ctor so we
20310         can start to use it for behavioral differences (routed event
20311         handlers, key events, focus, etc).
20313 2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
20315         * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
20316         multiple StrokeCollections at a time but they cannot be added to
20317         the same collection multiple times. Do not default to
20318         DependencyObjectCollection::CanAdd()'s behavior because it checks
20319         that the logical parent is unset (which will not be accurate for
20320         strokes).
20321         (StylusPointCollection): Same as StrokeCollection.
20323         * xaml.cpp (dependency_object_add_child): Set the logical parent
20324         of items to NULL before adding them to a collection.
20326         * collection.h (class Collection): Removed 'unique' field, it's
20327         not necessary afterall.
20328         (Collection::CanAdd): New virtual method to check if the value can
20329         be added to the collection (by default always returns true).
20330         (DependencyObjectCollection::CanAdd): Override CanAdd() by
20331         checking if the object being added has a logical parent. If it
20332         already has a parent, it cannot be added (this is how Silverlight
20333         behaves).
20335         * collection.cpp (Collection::Add): There's no such thing as
20336         'unique' anymore. Don't check if the value is already contained
20337         within our collection like the old code used to do, instead call
20338         our new virtual method CanAdd() to see if we can add it.
20339         (Collection::Insert): Check CanAdd().
20340         (Collection::SetValueAt): Check CanAdd().
20342 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20344         * collection.cpp (collection_add): Fixed.
20346         * collection.h: Get rid of convenience wrappers that aren't even
20347         used. Also removes the need for previous commit.
20349 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20351         * collection.h (class DependencyObjectCollection): Add virtual
20352         Add(), Clear() and Insert(). This makes it possible for subclasses
20353         to chain up if they need to override any of these.
20354         (class DoubleCollection): Same.
20355         (class PointCollection): Here too.
20357         * visual.cpp (VisualCollection::Clear): Chain up to
20358         DependencyObjectCollection::Clear() rather than
20359         Collection::Clear().
20360         (VisualCollection::Insert): Don't bother resizing the z_sorted
20361         array here, it will be done inside ResortByZIndex() anyway.
20362         (VisualCollection::Insert): Chain up to
20363         DependencyObjectCollection::Insert() rather than
20364         Collection::Insert()
20366 2008-07-24  Geoff Norton  <gnorton@novell.com>
20368         * downloader.cpp: When a downloader is reused reset the completed
20369         state when we get the new Open call.
20371 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20373         * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
20375         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20376         Unregister the NameScope the same way the old Collection::Remove()
20377         way did it. This way seems the most correct (RemoveAt() was
20378         totally broken and SetVal() doesn't seem right afterall).
20380 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20382         * collection.cpp: Added c-wrappers for creating new
20383         collections. Also changed the c-bindings for
20384         setting/adding/inserting/etc items to the collection to take
20385         Value* instead of Value. Should make it simpler for the managed
20386         code to pass that.
20388 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20390         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20391         Unregister the NameScope the same way it was done in the more
20392         common case in the old code (why were there different ways?).
20394         * text.cpp (TextBlock::OnCollectionChanged): Chain up.
20395         (TextBlock::OnCollectionItemChanged): Same.
20397         * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
20398         (GradientBrush::OnCollectionItemChanged): Chain up and notify
20399         listeners.
20401         * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
20402         (GeometryGroup::OnCollectionItemChanged): Chain up and notify
20403         listeners.
20404         (PathGeometry::OnCollectionChanged): Chain up.
20405         (PathGeometry::OnCollectionItemChanged): Chain up and notify
20406         listeners.
20407         (PathFigure::OnCollectionChanged): Chain up.
20408         (PathFigure::OnCollectionItemChanged): Chain up and notify
20409         listeners.
20411         * shape.cpp (Polygon::OnCollectionChanged): Chain up.
20412         (Polygon::OnCollectionItemChanged): Same.
20413         (Polyline::OnCollectionChanged): Same.
20414         (Polyline::OnCollectionItemChanged): Same.
20416         * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
20417         call NotifyListersOfPropertyChange().
20419         * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
20420         call NotifyListersOfPropertyChange().
20422 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20424         * collection.cp|h: Reworked Collections a lot. Collection is now a
20425         generic collection of Values. Added 3 new collections:
20426         DependencyObjectCollection (which holds DO's like the old
20427         Collection class did), DoubleCollection and PointCollection.
20429         * dependencyobject.h (DependencyObject::OnCollectionChanged):
20430         Changed the way this works to reflect the managed API.
20432         *.cpp|h: Updated to reflect above changes.
20434 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20436         * utils.cpp (g_ptr_array_insert): New utility function.
20437         (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
20438         find the index where we want to add the item.
20440 2008-07-23  Chris Toshok  <toshok@ximian.com>
20442         * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
20443         transform.cpp, grid.cpp, animation.cpp, text.cpp,
20444         dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
20445         geometry.cpp, shape.cpp, dependencyobject.cpp,
20446         frameworkelement.cpp, media.cpp, brush.cpp: a couple of
20447         DependencyPropertyChanges:
20449         1. switch to the Silverlight/WPF naming of the two Types.
20450         type/value_type change to owner_type/property_type.
20452         2. go all gtk-3.0, and make things private with accessors.
20454 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20456         * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
20457           dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
20458           dependencyproperty.h, deployment.cpp, downloader.cpp,
20459           frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
20460           namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
20461           text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20462           usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
20463           GetDependencyObject from DependencyObject to DependencyProperty.
20465 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20467         * dependencyobject.h, dependencyproperty.h, Makefile.am,
20468           dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
20469           DependencyProperty to its own file before it grows bigger.
20471 2008-07-21  Jackson Harper  <jackson@ximian.com>
20473         * xaml.cpp: Add back in the ability to create elements from
20474         managed elements using the x:Class syntax.
20476 2008-07-21  Jackson Harper  <jackson@ximian.com>
20478         * user-control.h:
20479         * type-generated.cpp: The UserControl's Content Property name is
20480         Content not ContentProperty.
20482 2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
20484         * collection.cpp (collection_add): Fixed to return int.
20486 2008-07-21  Jackson Harper  <jackson@ximian.com>
20488         * xaml.cpp: Add support for parsing GridLength attribute values.
20490 2008-07-19  Geoff Norton  <gnorton@novell.com>
20492         * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
20493         stream when there is one available.  Fixes drt #2.
20494         Refactor some code duplication into a utility method.
20496 2008-07-19  Jackson Harper  <jackson@ximian.com>
20498         * xaml.cpp: We can't blindly assume an object has a content
20499         property.
20501 2008-07-19  Jackson Harper  <jackson@ximian.com>
20503         * type-generated.cpp: UserControl has a content property.
20504         * value.h|.h.in|.cpp: Add GridLength to Value.
20506 2008-07-18  Geoff Norton  <gnorton@novell.com>
20508         * media.cpp: Revert InitialBuffer work around as it has some unexpected
20509         consequences. :(
20511 2008-07-18  Geoff Norton  <gnorton@novell.com>
20513         * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
20514         get a new burst from the mms server with AccelBW.
20516 2008-07-18  Geoff Norton  <gnorton@novell.com>
20518         * media.cpp: If we're using a mms source we can attempt to start playing the 
20519         first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
20520         Fixes c9 stream start lag.
20522 2008-07-18  Geoff Norton  <gnorton@novell.com>
20523         
20524         * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
20525         our initial buffer quickly.
20527 2008-07-18  Geoff Norton  <gnorton@novell.com>
20529         * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
20530         * Makefile.am: Add mp3.(cpp|h) to the build.
20531         * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
20532         together, so we need to split them up and pass them to avcodec_decode_audio2
20533         one at a time.  Its also possible that we could get a partial frame, so we need
20534         to buffer that data. Fixes mms+mp3.
20536 2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
20538         Fix for bug #410206
20540         * text.h (TextBlock::GetBoundingHeight): Return the larger of the
20541         2 values.
20542         (TextBlock::GetBoundingWidth): Same.
20544 2008-07-18  Chris Toshok  <toshok@ximian.com>
20546         * Makefile.am (libmoon_include_HEADERS): add window.h and
20547         window-gtk.h
20548         (libmoon_la_SOURCES): add window-gtk.cpp
20550         * window.h: abstract class for windows, that surface will use to
20551         deal with window/widget level operations.
20553         * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
20554         gtk widgets.
20556         * runtime.h, runtime.cpp: factor out all the widget stuff from
20557         this file, along with all "width" and "height" fields.  now
20558         Surface knows nothing about widgets or windowless.  It speaks to
20559         MoonWindow implementations instead.  Add several public methods
20560         that the window implementations can call (anything HandleUI*) to
20561         communicate events back to the surface.
20563         * canvas.cpp: surface->Get{Width,Height} ==>
20564         surface->GetWindow()->Get{Width,Height}.
20565         
20566 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20568         * clock.cpp:
20569         * media.cpp: Reverting prev change, different solution: process the tick calls
20570         before processing the render.
20572 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20574         * media.cpp: If the downloader is already completed, don't do an extra async 
20575         call when setting source. Fixes the downloader-set-source... testcase.
20577 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20579         * media.cpp: Fixing a crasher in case bad parameters passed from js.
20581 2008-07-18  Jackson Harper  <jackson@ximian.com>
20583         * xaml.h: New delegates and functions for the loader.  We need to
20584         call back into managed code when we import a xaml namespace so
20585         that it knows which objects are available and we need a new
20586         function for creating those objects.
20588 2008-07-18  Jackson Harper  <jackson@ximian.com>
20590         * usercontrol.cpp|h: Add C functions for accessing the Content
20591         element.
20593 2008-07-17  Jackson Harper  <jackson@ximian.com>
20595         * type.h:
20596         * value.h:
20597         * type-generated.cpp:
20598         * deployment.cpp|h: Add an Application type.  This doesnt directly
20599         map to the managed Application because it inherits from
20600         DependencyObject, but it allows us to parse Application XAML files
20601         and then we can pull the values we need.
20603 2008-07-17  Jackson Harper  <jackson@ximian.com>
20605         * libmoon.h: Add usercontrol.h, I want access to this in the
20606         plugin debug code.
20608 2008-07-17  Jackson Harper  <jackson@ximian.com>
20610         * xaml.cpp: Had a backwards IsSubclassOf here causing
20611         UserControl's content property to not get set (and I imagine many
20612         other content properties).
20613         * usercontrol.h: Add the ContentProperty metadata.
20615 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
20617         * downloader.h|cpp: provide hooks for DownloadeRequest
20619 2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
20621         * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
20623         * runtime.cpp (surface_create_downloader): We need to actually
20624         return the downloader here or our caller will just get garbage ;-)
20626 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
20628         * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
20630         * runtime.h: On desktop and browser by default use idle hinting.
20632 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
20634         * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
20635         control the use of idle hint in the clocks.
20637 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
20638         
20639         * runtime.h|cpp: add surface_get_downloader
20641 2008-07-16  Larry Ewing  <lewing@novell.com>
20643         * runtime.cpp: try to get the resize logic correct for all cases,
20644         including popfly, ControlState.htm and fullscreen tests.
20646         Fixes the (non)rendering issues in the popfly game creator.
20648 2008-07-16  Geoff Norton  <gnorton@novell.com>
20650         * mplayer.cpp: Its possible that extremely small audio files will
20651         never fill the sound buffer enough causing us to never call snd_pcm_open.
20652         Ensure that we open the buffer to play the sound before shutting down
20653         the player.
20655 2008-07-16  Geoff Norton  <gnorton@novell.com>
20657         * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
20659 2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
20661         * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
20662         greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
20663         looks better (but it already passed)
20665 2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20667         * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
20668           class doesn't do anything live/mms anymore. LiveSource: removed
20669           completely, never used. Added MemoryNestedSource to wrap another
20670           MemorySource without messing with its current position pointer.
20671           MemoryQueueSource: store already parsed packets instead of
20672           MemorySources in the queue, saves a memory allocation and prevents
20673           parsing each packet twice when buffering (once for the code which
20674           determines the last available pts, and again for the normal
20675           demuxing code path).
20676         * mms-downloader.cpp: Updated to not delete asf parser, unref it
20677           instead.
20678         * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
20679           wait a bit longer before ending up waiting for more data (which
20680           causes the MediaElement to go into buffering mode).
20681         * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
20682           anymore.
20684 2008-07-15  Larry Ewing  <lewing@novell.com>
20686         * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
20687         fix a regression in the fullscreen message code.
20689 2008-07-15  Jb Evain  <jbevain@novell.com>
20691         * deployment.cpp|h: start updating Deployment to sl2b2.
20693 2008-07-15  Jb Evain  <jbevain@novell.com>
20695         * deployment.h: remove SupportedCulture and SupportedCultureCollection
20696         as they no longer exist.
20697         * value.h, type.h, type-generated.cpp: regenerate.
20699 2008-07-15  Jb Evain  <jbevain@novell.com>
20701         * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
20703 2008-07-15  Jb Evain  <jbevain@novell.com>
20705         * list.cpp: set pointers to NULL instead of 0.
20707 2008-07-14  Geoff Norton  <gnorton@novell.com>
20709         * mplayer.cpp: If we've already reached the EOF in the audio stream
20710         don't keep processing GetNextBuffer.  This was causing us to emit
20711         MediaEnded more than once, causing failures in the test suite.
20713 2008-07-14  Geoff Norton  <gnorton@novell.com>
20715         * downloader.cpp:  Change completed to check a bool instead of 
20716         filename, as filename can now be set before the downloader is in fact
20717         completed.
20719 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20721         * media.cpp: Initialize Media with our downloader.
20722         * pipeline.cpp: Media::Open: Check if the source has ended while
20723           waiting for an asfparser. Remove print_stack_traces.
20725 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20727         * internal-downloader.h: Add InternalDownloader::GetType to allow the
20728           derived internal downloader to tell what kind of internal
20729           downloader it is.
20730         * file-downloader.h: Implement InternalDownloader::GetType.
20731         * downloader.h: Make the internal downloader publicly accessible. Add a
20732           Downloader::IsAborted method.
20733         * mms-downloader.h, mms-downloader.cpp: Implement
20734           InternalDownloader::GetType. Store the ASFParser we create in the
20735           class instance, so that the pipeline can get it. No need to write
20736           the header packet to the stream anymore.
20737         * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
20738           calculation of buffering progress to take into account that the
20739           currently available pts might be before the last played pts.
20740         * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
20741           callbacks anymore.
20742         * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
20743           argument and access the internal mms downloader on that Downloader
20744           to get the asf parser. Remove Read/Seek support from
20745           MemoryQueueSource, and just add a Pop method which returns a
20746           MemorySource for the next packet in the queue. Also add support to
20747           return all the packets in the queue as an array so that the
20748           ASFParser can easily determine the last pts available.
20749         * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
20750           g_mutex. Also make TickCall take a ref to the data parameter until
20751           the tick call has been made. This also ensures that the data
20752           parameter gets unreffed correctly when the tick call is never made
20753           (such as when we skip calls due to the TimeManager getting shut
20754           down).
20755         * dependencyobject.cpp: Don't ref in AddTickCall anymore.
20757 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20759         * playlist.cpp: Fix warning.
20761 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
20763         * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
20764         of horiAdvance since the later is rounded to an integer. FixMS
20765         DRT#45 and get better results (less differences) on many font
20766         related tests.
20768 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20770         * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
20772 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
20774         * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
20775         instead of doing it's own second to third order calculation.
20777 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20779         * mplayer.cpp: Don't store target pts from audio thread if we're paused
20780           (audio thread might not have gotten the pause request yet).
20782 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20784         * pipeline.cpp: Don't Signal more than once. I have no idea why the
20785           waiting thread doesn't wake up though.
20786         * mplayer.cpp: Comment out a printf, and always break the play loop
20787           when we're doing rw access.
20789 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
20791         * geometry.cpp|h: Remove useless code for computing bounds on
20792         PathFigure (now all handled at PathGeometry level).
20794 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20796         * mplayer.cpp: Fix a couple of leaks.
20798 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20800         * pipeline.cpp: There's no need to call AudioPlayer::Initialize
20801           anymore.
20802         * runtime.cpp, runtime.h: Added
20803           RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
20804         * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
20805           addition to the already supported MMAP access mode for alsa. This
20806           also required a major refactoring to only call alsa on the audio
20807           thread due to buggy pulseaudio hanging us (and the rest of the
20808           machine) otherwise.
20810 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
20812         * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
20813         inside each type (and out of the general case).
20815 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20817         * dependencyobject.cpp: Fix leak.
20819 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20821         * debug.cpp: Make valgrind happy.
20823 2008-07-09  Geoff Norton  <gnorton@novell.com>
20825         * media.cpp: Ensure that we clear our old loader when we set
20826         a new source.
20828 2008-07-09  Fernando Herrera  <fherrera@novell.com>
20830         * pipeline.cpp: Always set MemoryQueueSource element's size
20831         based to offset+n even for live sources.
20833 2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
20835         Fixes for bug #406934
20837         * text.cpp (Glyphs::SetSurface): Override so that we can start
20838         downloading the font as soon as the element gets (re)attached.
20839         (Glyphs::OnPropertyChanged): If we aren't attached, set
20840         uri_changed to true so that when we are (re)attached, we can start
20841         the download.
20843         * media.cpp (MediaBase::MediaBase): Init new state variable
20844         'source_changed' to false.
20845         (MediaBase::SetSurface): If source_changed and we are being
20846         attached to a surface, initiate a download.
20847         (MediaBase::SetSource): Set source_changed to false.
20848         (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
20849         our subclasses.
20850         (MediaElement::OnPropertyChanged): Don't handle SourceProperty
20851         changes anymore, let MediaBase do that for us.
20852         (Image::OnPropertyChanged): Same.
20854 2008-07-09  Geoff Norton  <gnorton@novell.com>
20856         * mms-downloader.cpp: Remove the guard we had against copying
20857         random memory and provide the correct amount of data to the 
20858         pipeline from each packet.
20860 2008-07-09  Geoff Norton  <gnorton@novell.com>
20861         
20862         * downloader.(cpp|h): NotifyFinished is now the finished
20863         event.  The filename will be set (if available) in SetFilename.
20864         * media.(cpp|h): Change to progressivly loading the image
20865         where available (fixes popfly).  We still fallback to file loading
20866         for the JS downloader case for now.
20868 2008-07-09  Larry Ewing  <lewing@novell.com>
20870         * runtime.cpp (Surface::motion_notify_callback): don't call
20871         get_pointer when in windowless mode, I don't think we can trust
20872         the results.
20874         * runtime.h (class Surface): make widget public so that we can
20875         peek at it in windowless mode.
20877 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
20879         * xaml.cpp: Always do a move after closing a path. Fix DRT test
20880         #138 (even if it was passing too!) for a bad (extra) arc.
20882 2008-07-08  Larry Ewing  <lewing@novell.com>
20884         * runtime.cpp, runtime.h: remove a bunch of code rot relating to
20885         temporary cairo surfaces that is no longer used.
20887 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
20889         * shape.cpp: Consider PenLineCap when computing bounds using
20890         cairo. Fix (even if it was passing) some corners in DRT test #7
20892 2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
20894         * xaml.h: Reorganized a bit.
20896 2008-07-07  Chris Toshok  <toshok@ximian.com>
20898         * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
20899         list if they lack a visual parent (and aren't the toplevel.)
20900         Fixes bug #406935.
20902 2008-07-07  Larry Ewing  <lewing@novell.com>
20904         * shape.cpp (Rectangle::BuildPath): handle some special case
20905         degenerates slightly differently.
20907         Fixes most of test-shape-rectangle-matrix.xaml.
20909 2008-07-07  Larry Ewing  <lewing@novell.com>
20911         * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
20912         degenerates in drawing, use the workaround there too.
20914         Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
20916 2008-07-03  Larry Ewing  <lewing@novell.com>
20918         * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
20919         rectangle geometry computation.  It matches in the sl
20920         implementation now.
20922         * shape.cpp: simplify rectangle and ellipse drawing and bounds so
20923         that they match the sl implementation and deal with degenerate
20924         cases better.  Try to avoid setting up a clip rectangle when it
20925         isn't needed.
20927 2008-07-07  Chris Toshok  <toshok@ximian.com>
20929         [ fixes the media element not showing up in flowers-for-you, bug
20930         #382490. ]
20931         * media.h, media.cpp: move Image::use_img_{width,height} and
20932         Image::updating into MediaBase and rename then
20933         use_media_{width,height} and updating_size_from_media.
20934         (MediaElement::OnPropertyChanged) duplicate the
20935         WidthProperty/HeightProperty stuff here (c&p from
20936         Image::OnPropertyChanged - this should probably just be refactored
20937         to MediaBase.  will do this later).
20938         (MediaBase::ComputeBounds): we don't need the subclass
20939         ComputeBounds methods.  Just put it here, as they share the same
20940         behavior.
20941         (MediaElement::SetMedia): remove the call to ComputeBounds here,
20942         since the new block of use_media_{width,height} checks will call
20943         UpdateBounds if they need to.
20944         
20945 2008-07-07  Fernando Herrera  <fherrera@novell.com>
20947         * media.cpp:
20948         * pipeline.cpp:
20949         * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
20950         we don't wait for new packets when the downloader has finished.
20951         Also calculate size based on offset + n for mms streams, so the
20952         ASFReader can check Eof based on positions.
20954 2008-07-05  Chris Toshok  <toshok@ximian.com>
20956         * dirty.cpp: remove the down_dirty_node_succ and
20957         up_dirty_node_pred code from here.  it arguably helped speed up
20958         insertions into the dirty lists, but at the cost of lots of
20959         dangling pointers.  we always walk up the tree looking for a
20960         down/up node.  works, and is much simpler.  and fixes bug #362561.
20962         * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
20963         up_dirty_node_pred code.
20964         
20965 2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
20967         * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
20968         when the atchname is invalid.
20970 2008-07-04  Chris Toshok  <toshok@ximian.com>
20972         * runtime.cpp (Surface::EmitEventOnList): don't leak the event
20973         args here.
20975 2008-07-03  Chris Toshok  <toshok@ximian.com>
20977         * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
20978         values need to be initialized in the ctors, not in animation_init.
20980 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
20982         * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
20983         since they are needed for stretching.
20985 2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
20987         * text.cpp (TextBlock::Render): Check to see if we need to
20988         calculate layout before painting.
20990 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
20992         * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
20993         Also remove the closing point since it's not needed (but that was
20994         not the problem, just a small memory saving).
20995         [Re-fix bug #391684]
20997 2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
20999         * text.h (TextBlock::GetBoundingWidth/Height): Use
21000         GetValueNoDefault() so we don't get 0.0 for the width/height if
21001         unset.
21003         Fixes for bug #404858
21005         * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
21007         * layout.cpp: Don't keep track of bbox_width and height anymore,
21008         it was never actually set to anything other than
21009         actual_width/height anyway.
21011         * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
21012         bounding box around the text (this is to aid in debugging text
21013         which may have a transform applied to it).
21015         * text.h (class TextBlock): Removed bbox_width and
21016         bbox_height. These were never anything other than
21017         actual_width/height respectively anyway.
21018         (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
21019         if set, else the ActualWidth.
21020         (TextBlock::GetBoundingHeight): Same.
21022 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21024         * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
21025         since their callers already do this. Simplify a bit Shape::
21026         InsideObject to check ret only if a Clip is present (instead of
21027         always checking it).
21029 2008-07-02  Chris Toshok  <toshok@ximian.com>
21031         * runtime.h, runtime.cpp: get rid of the cursor_func,
21032         invalidate_func, render_func stuff.  Instead use 3 virtual
21033         methods: SetCursor(GdkCursor*), Invalidate(Rect), and
21034         ProcessUpdates().  That way the plugin can instantiate a
21035         WindowlessSurface which overrides those methods instead of having
21036         the stupid callback mechanism we had.
21038 2008-07-02  Chris Toshok  <toshok@ximian.com>
21040         * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
21041         override the behavior.
21043 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21045         * moon-path.c: Revert ordering change I made in r105586 to fix
21046         a clipping issue (fillrule bug) as this breaks stroke dash (which
21047         confirm the original behaviour was the correct one).
21048         [Fix most of #404858]
21050 2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
21052         Fixes for bug #405514.
21054         * text.cpp (TextBlock::Layout): If the Text property is empty,
21055         default the actualHeight to the font's height.
21056         (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
21057         property changes, we need to set dirty to true (in most cases) so
21058         that the actual width/height values are recalculated.
21060 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21062         * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
21063         this change Polyline and Polygon to use Cairo instead of (faster
21064         but less acurate) custom code. In reality PathGeometry (PML) is 
21065         much more used than those Poly[line|gon] and (upcoming) caching 
21066         negate much of the impact.
21067         * geometry.cpp: Use the more precise (and surviving) 
21068         calc_line_bounds function that accept PenLineCap.
21070 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21072         * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
21073         chanegs between null and an actual brush (in either direction),
21074         invalidate the cached path because the shape may need to
21075         recalculate the stroke offsets.
21077 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21079         * xaml.cpp: Move reading the first point of C|Q beziers into the 
21080         loop. Fix quite a few misrendering for http://xmldocs.net/ball
21081         [Partial fix for #404858]
21083 2008-06-30  Chris Toshok  <toshok@ximian.com>
21085         * dirty.cpp: add all the ordering smarts to keep the two dirty
21086         lists partially sorted.  hopefully this won't be a huge
21087         performance hit.
21089         * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
21090         pointer for the down dirty list, and a "pred" for the up dirty
21091         list.
21093 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21095         * list.cpp (List::InsertBefore): Handle a NULL @before.
21097 2008-06-30  Geoff Norton  <gnorton@novell.com>
21099         * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
21100         more sane while we determine how to fix this properly.
21102 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21104         * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
21105         it's not correct.
21106         (Ellipse::ComputeShapeBounds): Same.
21108 2008-06-30  Michael Dominic K.  <mdk@mdk.am>
21110         * animation.cpp: Make sure our default KeySplines parameters are correct
21111         to generate a linear dynamics curve as Silverlight. Fixes #404850.
21113 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21115         * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
21117 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21119         * pipeline.h:
21120         * pipeline.cpp: Implement the packet writer MemoryQueueSource.
21121         * asf/asf.h:
21122         * asf/asf.cpp: 
21123         * media.h:
21124         * media.cpp: Use MemoryQueueSource for all mms streams
21125         * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
21127 2008-06-29  Chris Toshok  <toshok@ximian.com>
21129         * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
21130         child changes, invalidate them here.
21132         * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
21133         subtree invalidate from the zindex processing here.
21135 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21137         * pipeline-ffmpeg.cpp: Add debug spew.
21138         * media.cpp: Remove debug spew.
21140 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21142         * media.cpp, media.h: Add streamed markers to the media element on the
21143           main thread.
21145 2008-06-28  Geoff Norton  <gnorton@novell.com>
21147         * downloader.h: The finished event raises a success condition now
21148         so that we can notify failure on unsuccessful downloads.
21150 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21152         * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
21153           has stored, now called by the MediaPlayer when seeking. Execute the
21154           'seeking complete' logic on the main thread (marshalling
21155           SeekCallback to the main thread). Always use the thread-safe
21156           AddTickCallSafe instead of AddTickCall, and override
21157           EventSurface::SetSurface to lock/unlock the required locks.
21158         * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
21159           has stored, now called by the MediaPlayer when seeking. Execute the
21160           'seeking complete' logic on the main thread (marshalling
21161           SeekCallback to the main thread), and set the previous_position on
21162           the MediaElement to the seeked-to position when the seek is
21163           finished. Always use the thread-safe AddTickCallSafe instead of
21164           AddTickCall, and override EventSurface::SetSurface to lock/unlock
21165           the required locks.
21166         * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
21167           thread-safe version (AddTickCallSafe) and don't do any locking in
21168           AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
21169           SetSurface can do the proper locking.
21170         * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
21171           comparing to/from pts, MediaPlayer will now set previous_position
21172           correctly when seeking. AdvanceFrame: only check markers if we
21173           advanced or if we're not seeking. SetSurface: add proper locking,
21174           and use AddTickCallSafe where appropiate.
21176 2008-06-27  Larry Ewing  <lewing@novell.com>
21178         * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
21179         affects the subtree as well.
21181 2008-06-27  Larry Ewing  <lewing@novell.com>
21183         * uielement.cpp (UIElement::OnPropertyChanged): on things that can
21184         potentially be trapped by the Invalidate visibility check we need
21185         to invalidate the whole subtree before we start processing the
21186         dirty lists to avoid ordering issues.
21188         Fixes test/xaml/assorted/rendering-glitches2.html.
21190 2008-06-27  Chris Toshok  <toshok@ximian.com>
21192         * panel.cpp (Panel::FrontToBack): add a special case for
21193         non-translucent (but NULL background) panels - we don't render
21194         them at all.
21196 2008-06-27  Larry Ewing  <lewing@novell.com>
21198         * panel.cpp (Panel::FrontToBack): treat opacity specially for
21199         panel since we need the right subtree render region in PreRender.
21201 2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
21203         * downloader.cpp (dummy_downloader_create_web_request): Return
21204         NULL to fix a compile warning about control reaching the end of a
21205         non-void function.
21207 2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
21209         * downloader.[h|cpp]: move browserrequest/response from the plugin
21210         as downloaderrequest/response.
21212 2008-06-26  Chris Toshok  <toshok@ximian.com>
21214         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
21215         the shape cache.
21217         * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
21218         condition that was keeping small surfaces from being cached, so
21219         bubblemark gets a win from this (from ~38 to 70+ fps on my
21220         laptop).
21221         (Shape::ShiftPosition): if we have a cached surface, set the
21222         device offset to mirror the new bounds x/y.
21224 2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21226         * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
21227           dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
21228           Change AddTickCall to take a TickCallHandler (EventObject*)
21229           function pointer and a EventObject * tick_data instead of untyped
21230           function pointer/tick_data.
21232 2008-06-26  Chris Toshok  <toshok@ximian.com>
21234         * dependencyobject.h,
21235         dependencyobject.cpp (DependencyProperty::DependencyProperty):
21236         convert the name to downcase prior to registering and prior to
21237         calling g_hash_table_lookup to remove the casecmp overhead from
21238         our key comparisons.  store the converted name in DP::hash_key.
21240         * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
21241         and strcase_hash.
21243         * type.cpp: strcase_equal -> g_strcasecmp.
21245         * playlist.cpp (PlaylistParser::OnStartElement): same.
21247 2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
21249         * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
21250         logic/compiler warning and at the same time simplified.
21252         * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
21253         thickness into consideration. Fixes bug #400657.
21254         (Ellipse::ComputeShapeBounds): Same.
21256 2008-06-26  Chris Toshok  <toshok@ximian.com>
21258         * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
21259         re-sort the children by zindex.
21261         * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
21263         * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
21264         here.  just add it to the dirty list.
21266         * transform.h, transform.cpp: move the OnSubPropertyChanged method
21267         to MatrixTransform, so we can notify our listeners with the right
21268         property.
21270 2008-06-26  Chris Toshok  <toshok@ximian.com>
21272         * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
21273         need this to deal with sub-dependencyobjects of transforms (in
21274         this case, MatrixTransform's Matrix object.)  when you set
21275         properties on these subobjects, we need to update the transform.
21277 2008-06-26  Chris Toshok  <toshok@ximian.com>
21279         * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
21280         think it used to be there and was removed by me in a flurry of
21281         propertychanged event fixing way back) to take care of brushes
21282         properly causing the uielement to invalidate when the Brush's
21283         transform/relativetransform changes.
21285 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
21287         * geometry.h: #ifdef out GeometryFlags until we start using it.
21288         * shape.cpp: Remove unused global variable.
21290 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21292         * mplayer.cpp: AudioFinished: Check if we still have audio when the
21293           callback is reached. Fixes test-double-stop.html.
21295 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21297         * mplayer.cpp: When calculating start_time take into account current
21298           position. Fixes test-video-only-seek.html (and fox seeking without
21299           audio).
21301 2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
21303         * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
21304         uint comparisons.
21306 2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
21308         * geometry.cpp: Cache bounds, both logical and "physical" for
21309         PathFigure. This reduce the number of time we need to call 
21310         cairo_[path|stroke|fill]_extents functions and speed up many
21311         sites.
21312         * geometry.h: Add stuff needed for geometry.cpp changes.
21313         * xaml.cpp: Change geometry_from_str to directly create a 
21314         moon_path and avoid the PathFigure[Collection] DO. This match
21315         how Silverlight handle Path Markup Language (PML) and reduce
21316         memory requirements when huge PML are used.
21318 2008-06-24  Chris Toshok  <toshok@ximian.com>
21320         * shape.cpp (calc_offsets): we don't want to divide by the sin,
21321         because as angle approaches either 0, PI, or PI/2, the sin will
21322         approach 0, and therefore the deltas will grow very, very large.
21323         Turns out multiplying is what we want.
21325 2008-06-24  Larry Ewing  <lewing@novell.com>
21327         * runtime.cpp (Surface::Resize): set the width and height properly
21328         in the windowless case, let the widget resize logic handle it
21329         otherwise.
21330         (Surface:render_cb): don't process dirty elements if we are in a
21331         zombie state, just clear the dirty lists and move on.  Fixes a
21332         crash we were seeing when calling ForceRender on a zombie plugin.
21334 2008-06-24  Chris Toshok  <toshok@ximian.com>
21336         * runtime.cpp: in the switch from function pointer to integer in
21337         the HandleMouseEvent stuff, I didn't catch that C++ apparently
21338         doesn't flag NULL as different from 0.  This was causing the
21339         "HandleMouseEvent (NULL" to become effectively become
21340         "HandleMouseEvent (UIElement::DestroyedEvent" which of course
21341         breaks all sorts of things.  In bug 401884 it was causing the
21342         namescope to drop the named item from its hashtable, causing the
21343         tattoo needle to not move vertically.
21345 2008-06-23  Chris Toshok  <toshok@ximian.com>
21347         * uielement.cpp (UIElement::PreRender): comment from the code is
21348         changelog-worthy:
21349         
21350         we need this check because ::PreRender can (and will) be called
21351         for elements with empty regions.
21352         
21353         The region passed in here is the redraw region intersected with
21354         the render bounds of a given element.  For Panels with no
21355         width/height specified in the xaml, this region will be
21356         empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
21357         calling node if either the panel background or any of the children
21358         intersect the redraw region.)  We can't clip to the empty region,
21359         obviously, as it will keep all descendents from drawing to the
21360         screen.
21362 2008-06-23  Chris Toshok  <toshok@ximian.com>
21364         * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
21365         the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
21366         other, more specialized bounds that also need updating.
21368         * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
21369         to UIElement::ShiftPosition and also update bounds_with_children.
21371         * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
21372         chain up to Canvas::ShiftPosition, and also update render_bounds.
21374 2008-06-23  Chris Toshok  <toshok@ximian.com>
21376         * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
21377         between UpdatePosition and UpdateTransform according to the
21378         updatepos=yes/no override.
21380         * runtime.h, runtime.cpp: add updatepos=yes/no override.
21381         
21382 2008-06-23  Michael Dominic K.  <mdk@mdk.am>
21384         * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
21386 2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21388         * media.cpp: Don't check markers if from > to, no markers will ever be
21389           found in that interval. Also detect forward seeks by checking the
21390           difference between from and to, if difference > 1s, behave as a
21391           seek (and don't emit markers in that interval). 
21392         * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
21394 2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
21396         * animation.h: Added "Property Accessor" comments and grouped the
21397         property accessors, etc.
21399         * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
21400         printf.
21401         (EventObject::AddTickCall): Same.
21403         * dependencyobject.h (EventObject::GetSurface): Don't amke this
21404         virtual, nothing overrides it currently.
21406 2008-06-20  Michael Dominic K.  <mdk@mdk.am>
21408         * animation.cpp:
21409         * animation.h:
21410         * clock.cpp:
21411         * clock.h: When detaching/reattaching to Surface execute a special
21412         handler on clocks that (in case of animation clocks) removes the update
21413         property handler. This fixes the (regressed some time ago)
21414         StoryboardEnterLeave semantics test.
21416 2008-06-19  Jackson Harper  <jackson@ximian.com>
21418         * animation.h: 
21419         * type-generated.cpp: Make sure the content property is set.
21421 2008-06-19  Larry Ewing  <lewing@novell.com>
21423         * uielement.cpp (UIElement::PreRender): work around what appears
21424         to be a bug in the ftb logic by not clipping to the render region.
21426         * clock.cpp (SystemTimeSource::Start): make the timer priority
21427         DEFAULT again since otherwise we can get into starvation
21428         situations.
21430         * uielement.cpp (UIElement::PreRender): don't save/restore around
21431         the clip changes, they restrict the group bounds and speed up
21432         opacity related masking substantially.  (See bubblemark).
21434 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
21436         * font.cpp (FontFace::GetExtents): Only set face pixel size if the
21437         requested size is not what we already have set.
21438         (FontFace::LoadGlyph): Same.
21439         (FontFace::Kerning): Need to set pixel sizes here or our kerning
21440         could be off.
21442 2008-06-19  Chris Toshok  <toshok@ximian.com>
21444         * canvas.cpp (Canvas::OnSubPropertyChanged): call
21445         ui->UpdatePosition instead of UpdateTransform.  Since
21446         UpdateTransform calls UpdateBounds, this should save us a
21447         sometimes costly (in the case of Shape's) trip through
21448         ComputeBounds.
21450         * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
21451         node) and ComputePosition (called from ProcessDownDirtyElements.)
21452         (UIElement::ComputePosition): Apply the inverse absolute transform
21453         to the bounds x/y, compute the new transform, then reapply it to
21454         the bounds x/y to compute our new position.
21455         (UIElement::UpdateTransform): clear the DirtyPosition flag.
21456         (UIElement::UpdatePosition): only add the DirtyPosition flag if
21457         the Dirty*Transform flags aren't already set.
21459         
21460         * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
21461         Clip, LocalClip, and Position (only Position is implemented).
21463         * dirty.h: clean up the enum some, and add 3 new passes (only one
21464         of which, DirtyPosition, is implemented).
21466 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
21468         * transform.cpp: Started adding property accessor methods.
21470         * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
21471         (Canvas::[G,S]etTop): Same.
21473         * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
21474         (UIElement::[G,S]etTop): Same.
21476 2008-06-19  Chris Toshok  <toshok@ximian.com>
21478         * rect.h: add Get{Top,Bottom}{Left,Right} methods.
21480         * point.h, point.cpp: add Transform method.
21482 2008-06-19  Michael Dominic K.  <mdk@mdk.am>
21484         * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
21485         keyframes specified the duration is 0, not Automatic. This fixes the 
21486         http://www.etonline.com/silverlight/grammys50/ website.
21488 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
21489         
21490         * geometry.cpp: Use the new moon-path functions for ArcSegment
21491         and QuadraticBezierSegment
21492         * moon-path.c: Change some validation to use g_return_if_fail
21494 2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
21496         * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
21497         SetLeft().
21499         * control.cpp (Control::GetTransformFor): Simplified.
21501         * uielement.cpp (UIElement::SetLeft): Added for setting
21502         Canvas.Left property.
21503         (UIElement::GetLeft): Same.
21504         (UIElement::SetTop): Same.
21505         (UIElement::GetTop): Same.
21507         * canvas.cpp (Canvas::GetTransformFor): Simplified.
21509 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
21511         * shape.cpp: When possible (i.e. if we won't change the bounds
21512         anyway) avoid the second pass inside Shape::ComputeStretchBounds.
21513         This reduce (but does not eliminate) a BIG bottleneck for SL
21514         applications with many path using stretch (e.g. SL world).
21516 2008-06-18  Geoff Norton  <gnorton@novell.com>
21518         * media.cpp: The state when Seeking should not be changed to Stopped.
21519         Fixes another test.
21521 2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
21523         Partial fix for bug #400657.
21525         * dependencyobject.cpp (DependencyObject::IsValueValid): If the
21526         value is a null dependency object, don't check that the types
21527         match - it doesn't matter.
21529         * color.cpp (color_to_string): New convenience utility function to
21530         aid in debugging. Returns a pointer to a static string buffer, so
21531         be careful...
21533 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21535         * playlist.cpp, playlist.h: Only unref/null out the media in
21536           PlaylistEntry::Stop if we're a playlist and not if we're a single
21537           file.
21539 2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
21541         * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
21542         can be reused without a PathFigure-derived instance. Refactor
21543         code to expand/realloc paths to reduce duplication.
21545 2008-06-16  Chris Toshok  <toshok@ximian.com>
21547         * uielement.cpp (UIElement::OnPropertyChanged): call
21548         Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
21549         of FullInvalidate.
21550         (UIElement::OnSubPropertyChanged): same.
21552 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21554         * playlist.cpp: When Merging items only merge duration if the source
21555           has duration.
21556         * media.cpp: MediaElement::MediaOpened: when setting the media on the
21557           current item in the playlist, make sure we set the media on a
21558           PlaylistEntry, not on a (nested) Playlist.
21560 2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
21562         * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
21563         g_error() with g_warning(). There's really nothing else we can do
21564         here...
21565         (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
21566         allocating it again? Maybe some resources have been released since
21567         the ctor was called?
21569         * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
21570         g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
21572         * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
21573         g_warning() and return fail.
21575 2008-06-16  Michael Dominic K.  <mdk@mdk.am>
21576         
21577         * clock.cpp: Don't do the ExtraRepeat action when seeking.
21579 2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21581         * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
21582           method.
21583         * playlist.cpp: When we stop, clear out our media. This fixes an issue
21584           where we didn't correctly download a file if it was stopped after
21585           it was opened, but before fully downloaded, and then restarted.
21587 2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
21589         * dependencyobject.cpp (include): stdlib.h for strtol()
21591         Fix for jumping to the last page in PageTurn.
21593         * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
21594         UpdateTotalRenderVisibility() when the clip changes.
21596 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
21598         * animation.cpp:
21599         * moon-curves.c:
21600         * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
21602 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
21604         * Makefile.am:
21605         * animation.cpp:
21606         * animation.h:
21607         * moon-curves.c:
21608         * moon-curves.h: First version of the new algho for calculating the "y
21609         at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
21610         AnimationMatrix2 test.
21612 2008-06-12  Jackson Harper  <jackson@ximian.com>
21614         * xaml.cpp: Remove some cruft.
21615         - Rename Custom to Managed
21616         - We don't need element maps for the namespaces anymore
21617         - Deploy can go into the default list of namespaces.
21619 2008-06-12  Fernando Herrera  <fherrera@novell.com>
21621         * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
21622         terminated strings. Also keep any uri paramson the mms Ref.
21624 2008-06-12  Jackson Harper  <jackson@ximian.com>
21626         * xaml.cpp: Use the new stuff for creating wrapped types.
21627         - make XamlElementInstance pure virtual.
21629 2008-06-12  Jackson Harper  <jackson@ximian.com>
21631         * xaml.cpp: Clean up API for creating wrapped dependency objects.
21633 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21635         * type.cpp: Fix type verification to not check 2.0 types for 1.0
21636           builds.
21638 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21640         * media.cpp, media.h: Don't AutoPlay playlists which have already been
21641           autoplayed. Make Play/Pause/Stop/Seek async.
21642         * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
21644 2008-06-12  Chris Toshok  <toshok@ximian.com>
21646         * control.cpp, control.h, deployment.h, frameworkelement.h,
21647         grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
21648         uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
21649         can't use SL_2_0 in most places in headers (or rather, shouldn't).
21650         It might be a good idea to remove all references to it, but this
21651         at least gets the ms-tests running and passing again --with-mono.
21652         Switch to using SL_2_0 around the #includes in the .cpp files, and
21653         in value.h/type.h just include the 2.0 types.
21655         * usercontrol.h, usercontrol.cpp: split out the code from
21656         control.h, control.cpp here.
21658         * Makefile.am: add usercontrol.[h,cpp]
21660         * typegen/typegen.cs: fix up the header emission.
21662 2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
21664         * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
21665         ComputeBounds to avoid creating/destroying a new cairo context for
21666         each figure (it's now shared). Refactor PathFigure::Build not to scan
21667         the path list twice and rely on moon-path automatic size increase.
21668         Also avoid cairo_fill_extents if the path can't be filled or no fill
21669         brush is present.
21671 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21673         * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
21674           can't get a surface, nor if the surface is a zombie.
21675         * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
21676           return NULL now, add a null check.
21678 2008-06-11  Jackson Harper  <jackson@ximian.com>
21680         * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
21681         Instances to have a kind (they can access their kind from their
21682         info).
21684 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
21686         * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
21687         methods (since Shape::Draw already does it) and remove
21688         cairo_set_fill_rule (since Shape::Fill does it).
21690 2008-06-11  Jackson Harper  <jackson@ximian.com>
21692         * xaml.cpp: Clean up the namespace map when destroying the parser.
21694 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
21696         * geometry.h: Fix GeometryGround::ComputeBounds so it does
21697         not always returns 0,0,0,0 (from Geometry).
21699 2008-06-11  Geoff Norton <gnorton@novell.com>
21701         * downloader.cpp: Only Abort if we have a surface.
21702         * runtime.cpp: Detach the downloaders when we zombify.
21704 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
21706         * moon-path.c: Reorder ellipse points so the fill rule can be 
21707         applied correcly (e.g. filling or clipping).
21709 2008-06-11  Michael Dominic K.  <mdk@mdk.am>
21711         * clock.cpp: Fixing seeking on nested storyboards. Fixes
21712         seek-test-nested-storyboard.xaml in assorted and one more
21713         AnimationMatrix2 block. Now only one left to fix...
21715 2008-06-10  Geoff Norton  <gnorton@novell.com>
21717         * mms-downloader.cpp: Reset our internal state after seeking so
21718         we can resume the stream in the right place.
21720 2008-06-10  Geoff Norton  <gnorton@novell.com>
21722         * mms-downlodaer.cpp: Remove some improperly commited debug code
21724 2008-06-10  Chris Toshok  <toshok@ximian.com>
21726         * control.h, control.cpp, deployment.h, uielement.h,
21727         uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
21728         runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
21729         now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
21730         specific types with the following typegen pragma: /*
21731         @SilverlightVersion="2" */ so that the generated files contain the
21732         proper ifdefs as well.
21734         * type-generated.cpp, type.h, value.h: resync with new ifdefs.
21736 2008-06-10  Jackson Harper  <jackson@ximian.com>
21738         * dependencyobject.cpp: Add todo for Name validation.
21740 2008-06-11  Fernando Herrera  <fherrera@novell.com>
21742         * xaml.cpp: Accept numbers and strings representing numbers as
21743         values for BOOL properties. Also accept "true" and "false" case
21744         variants.
21745         * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
21746         ending uris, so just check for "MSWMExt=.asf".
21747         Fixes hsn.tv, bug #362328.
21749 2008-06-10  Jackson Harper  <jackson@ximian.com>
21751         * xaml.cpp: ContentProperty should be on the ElementInfo not the
21752         ElementInstance, since you can only have one content property per
21753         a type.
21755 2008-06-10  Geoff Norton  <gnorton@novell.com>
21756         
21757         * mms-downloader.cpp: Fix some looping logic when seeking (partially
21758         fixed).  Fix a typo when enumerating the streams array to not exceed
21759         the bounds.
21761 2008-06-10  Jackson Harper  <jackson@ximian.com>
21763         * xaml.cpp: Remove default prefix override check.  This must have
21764         only been in one of the early versions of SL because I can't get
21765         SL to do it anymore.  This helps fix video page turn.
21767 2008-06-10  Jackson Harper  <jackson@ximian.com>
21769         * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
21771 2008-06-10  Chris Toshok  <toshok@ximian.com>
21773         * dependencyobject.h, dependencyobject.cpp: split the Emit()
21774         machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
21775         StartEmit returns a context object passed to the other two
21776         methods.
21778         * runtime.h, runtime.cpp: use the new
21779         EventObject::{Start,Do,Finish}Emit methods to make event bubbling
21780         more transactional - any changes made to the listener list for the
21781         event we're bubbling up, for any element in our input list, are
21782         delayed until after the event has propagated.  Fixes our test id
21783         191 (test-bubbling.html) as well as bug #351568.
21785 2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
21787         * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
21788         its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
21789         reuse it's physical bounds for logical instead of computing it 
21790         twice.
21792 2008-06-10  Michael Dominic K.  <mdk@mdk.am>
21794         * animation.cpp:
21795         * animation.h:
21796         * clock.cpp:
21797         * clock.h: Replacing CreateClock with AllocateClock implementation and
21798         making sure the latter is called for Storyboards. That fixes the nested
21799         storyboards inside other storyboards...
21800         test-animation-nested-storyboard.xaml and one step more for
21801         AnimationMatrix2.
21803 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21805         * dependencyobject.h: Another greppable comment.
21807 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21809         * dependencyobject.cpp: Add comment to assert which shows up while
21810           grepping.
21812 2008-06-06  Geoff Norton  <gnorton@novell.com>
21814         * file-downloader.h: Fix a bug between argument sending and class
21815         variables that was causing us to free and strdup the free'd pointer.
21817 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21819         * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
21820           GetResponseText.
21822 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21824         * src.mdp: Updated.
21826 2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
21828         * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
21829         members change order (like it did recently).
21830         (wrap_dependency_object): Get rid of unused variables.
21832         * media.cpp (Image): Made bools share a single int.
21834 2008-06-06  Jackson Harper  <jackson@ximian.com>
21836         * xaml.cpp: Use the Type system for looking up elements, make
21837         things a little more OOP so we can easily add some of the 2.0
21838         features.  Note:  This is going to break x:Code and deployment
21839         temporarily.
21840         
21841 2008-06-05  Geoff Norton  <gnorton@novell.com>
21843         * downloader.cpp, downloader.h: More refactoring to hide the zip related
21844         details in the FileDownloader.  NOTE: The exposure of the file downloader
21845         to the Text side is ugly and should be cleaned up.
21846         * text.cpp: Access obfuscated font details thru the FileDownloader API.
21847         * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
21848         the filename thru the downlodaer api.
21849         * downloader.cpp: No longer leak InternalDownloaders.
21851 2008-06-05  Geoff Norton <gnorton@novell.com>
21853         * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
21854         the $P packet pair, and implement and initial algorithm to do proper
21855         bandwidth stream selection.
21857 2008-06-05  Geoff Norton <gnorton@novell.com>
21858         
21859         * downloader.cpp:  Remove some left over unused variables, and the
21860         is_valid_mms_type inline.
21862 2008-06-05  Geoff Norton <gnorton@novell.com>
21864         * Makefile.am: Add file-downloader and mms-downloader to the build.
21865         * file-downloader.(cpp|h): This class is a implementation of the new
21866         InternalDownloader class utilized by the downloader to differentiate
21867         between MMS and regular requests.  We should move the zip logic here.
21868         * mms-downloader.(cpp|h): This class is the MMS implementation of the
21869         InternalDownloader class.
21870         * internal-downloader.h: Route callbacks from the plugin thru this class
21871         to their appropriate file (NPStream) / MMS based implementations.
21872         * downloader.cpp: Update the API to call the InternalDownloader based
21873         representation instead of large if (mms) branches.
21875 2008-06-05  Geoff Norton  <gnorton@novell.com>
21877         * downloader.cpp, downloader.h:  Initial implementation of MMS inside
21878         libmoon.  The API has been extended to register two additional callbacks
21879         to set HTTP headers, and the HTTP body.
21881 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
21883         * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
21884         --with-compatibility-bugs mode. It looks like the parsing is fine. The
21885         bug is now "implemented" in clock.cpp.
21887 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
21889         * clock.cpp: In ComputeNewTime when we're going over our duration time
21890         and we're AutoReversed, check actually how big the diff is cause it
21891         might be that we need to "wrap around self" and switch to forward time
21892         direction anyways (such is the case with seeking). 
21894         In other words, allow to seek into particular interation of
21895         RepeatBehavior="XXXx", not only the first one. Fixes one more
21896         AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
21898         This prolly needs a littlbe bit more work still, similiar mechanism
21899         needs to be present in DoRepeat etc.
21901 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
21903         * stylus.cpp: fixing a bug. stupid me.
21905 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
21907         * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
21908         ExtendTo (double, double) methods.
21910         * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
21911         intersection of bounds and StylusPointCollection::GetBounds in HitTest
21912         to avoid checking for stroke intersection in most of the cases. Speed
21913         up erasing in inkJournal.
21915 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
21917         * clock.cpp: Interesting -- looks like in SL the timespan-based 
21918         RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
21919         0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
21920         Anyways, implementing this and fixing two more blocks in
21921         AnimationMatrix2.
21923 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
21925         * clock.cpp: Slightly reworking the seek offsett calculations to include
21926         the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
21927         more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
21928         assorted test.
21930 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
21932         * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
21933         test-seeking-speed-ratio.xaml from assorted tests and one more block in
21934         the AnimationMatrix2 test. 
21936 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
21938         * control.cpp (user_control_new): %p does what %x was trying to do
21939         in this case, but without compile warnings :)
21941 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
21943         Glyphs rendering optimization.
21945         * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
21946         instead of re-looping this logic again in Glyphs::Render().
21947         (Glyphs::Render): Just blit the path.
21949 2008-06-03  Chris Toshok  <toshok@ximian.com>
21951         * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
21952         a bunch and remove all the redundant checks.
21953         
21954         (DependencyObject::MergeTemporaryNameScopes): merge both DO and
21955         Collection versions into the same method to reduce code
21956         duplication.
21958         * dependencyobject.h: no need to provide multiple overloads for
21959         MergeTemporaryNameScopes.
21961 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
21963         Text rendering optimization via reduction of font loading.
21965         * font.cpp (FontFace): A new abstraction for FT_Face which is
21966         meant to prevent Moonlight from ahving to load the same font face
21967         multiple times just because the FontSize attributes don't match.
21968         (TextFont): Greatly simplified this class by using FontFace.
21970 2008-06-02  Jackson Harper  <jackson@ximian.com>
21972         * xaml.cpp: Make sure we don't try to look up Content Properties
21973         on anything but elments.  Property elements are given the
21974         XamlElementInfo of their parent so GetContentProperty on a
21975         PROPERTY element will return the parent's content property.
21977 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
21979         * clock.cpp: If we have duration-based RepeatBehavior set the
21980         repeat_count to 1 in bug-mode (--with-compatibility-bugs).
21982 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
21983         
21984         * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
21985         even.
21987         * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
21988         RepeatBehavior=0:0:0.
21990 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
21992         * clock.cpp: Even more timeline validation rules.
21994 2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
21996         * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
21997         by 64.0 since this makes it clear why we're doing it.
21999 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22001         * clock.cpp: Don't validate animations that have Duration of "00:00:00"
22002         and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
22003         test.
22005 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22007         * xaml.cpp: Adding a compatibility option
22008         (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
22009         RepeatBehavior bug.
22011 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22013         * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
22014         protection against the desync's coming from integers (TimeSpan) being
22015         multiplied by floating values (SpeedRatio). Better to be non-precise
22016         forward than backward.
22018 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22020         * clock.cpp: The initial ticking difference needs to be multiplied by
22021         the SpeedRatio as well. This fixes few timing desyncs. Fixes
22022         clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
22023         block from the AnimationMatrix2.
22025 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22026         
22027         * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
22028         you set an Image's Source property to an empty string (or null),
22029         it stops rendering the image.
22031 2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
22033         * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
22035 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22037         * layout.cpp|h (TextRun::IsUnderlined): Replacement for
22038         TextLayout::IsUnderline().
22039         (TextLayout::IsUnderline): Removed.
22041         * font.h (enum TextDecorations): Add a comment explaining that
22042         this is meant to be used as bit flags and not a normal
22043         enumeration.
22045 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22047         * font.h: Revert TextWrapping change as it regress DRT tests
22048         (it's possible that the value were right, but did not match
22049         the managed value used by Silverlight 1.1).
22051 2008-05-29  Jackson Harper  <jackson@ximian.com>
22053         * type.cpp: INVALID types don't have content properties.
22054         * dependencyobject.h: Content properties are stored on the Type so
22055         we don't need to store them here.
22056         * xaml.cpp: Get content properties from the Type system instead of
22057         the parser's internal type map.
22058         - We don't need to do any special handling in the start_element
22059         handler for content properties anymore.
22060         * control.cpp|h: We don't need to expose the content property
22061         anymore.
22062         - Mark the content property for controls.
22063         
22064 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22066         * font.h: Fix enum values for TextWrapping
22067         * layout.cpp: Fix regression (in earlier commit) for wrapping.
22069 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22071         * debug.cpp: Fix an invalid read issue found with valgrind.
22073 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22075         * layout.h|cpp: Handle invalid values for TextDecorations and
22076         TextWrapping like Silverlight does.
22078 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22080         * runtime.cpp: When setting the background color delete any previoys
22081           background color.
22083 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22085         * uielement.cpp: Fix minor leak.
22087 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22089         * src.mdp: Updated.
22091 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22093         * http-streaming.cpp: Handle quoted feature strings.
22095 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22097         * downloader.cpp: Null out request_position in the ctor.
22099 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22101         * clock.cpp: Reverting the change that invalidates the timelines which
22102         have 00:00:00 duration. It is actually supported by SL. 
22104 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22106         * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
22107         Multiply always instead of recursing down into properties.
22109 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22111         * animation.cpp: If "To" and "By" are not specified use the
22112         defaultOriginValue always instead of "start" (which might be "From").
22113         Fixes the test-animation-only-from.xaml and the green block in
22114         AnimationMatrix2.
22116 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22118         * clock.cpp: When Validating the timeline, if RepeatBehavior is
22119         incorrect make it 1.0 instead of marking the timeline as invalid.
22121 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22122         
22123         * downloader.cpp: Fix typo.
22125 2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
22127         * enums.c: Fix None value in style_simulations_map and remove
22128         unneeded one (they exists only in WPF but SL parser does not like
22129         them).
22130         * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
22131         supplied value are invalid. Add new constants specific to SL.
22132         * text.h: Add simulation_none. Share an integer between all bool
22133         flags.
22134         * text.cpp: Invalid values for StyleSimulation does not render
22135         the Glyphs.
22136         * runtime.cpp: Invalid MouseCursor values hides the cursor.
22138 2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
22140         Fixes the Legend (Space Invaders) demo without breaking
22141         storyboard_EnterLeaveSemantics.htm.
22143         * clock.cpp|h (Clock::Completed): New virtual method which gets
22144         called when a clock completes.
22145         (Clock::ComputeNewTime): If a clock completes (has no more
22146         repeats, etc) then call ::Complete().
22147         (ClockGroup::ClockGroup): Changed the name of emitted_complete to
22148         emit_completed which has also changed the meaning a bit.
22149         (ClockGroup::Begin): Updated.
22150         (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
22151         then emit the Completed event and reset emit_completed back to
22152         false so we don't re-emit.
22153         (ClockGroup::Completed): Set emit_completed to true.
22155 2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22157         * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
22158           DownloaderComplete only emit DownloadProgressChangedEvent if we
22159           have a surface.
22161 2008-05-27  Michael Dominic K.  <mdk@mdk.am>
22163         * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
22164         Silverlight 1.0/2.0 situation.
22166 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22168         * clock.cpp: Don't validate timelines that have specified duration of
22169         00:00:00. Fixes the test-animation-zero-duration test.xaml.
22171 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22173         * clock.cpp:
22174         * clock.h: When Validating the Timeline also make sure that the
22175         RepeatBehavior is correct, otherwise don't start the anim. Fixes the
22176         test-animation-zero-repeat-behavior test and brings us closer with
22177         AnimationMatrix2 test.
22179 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22181         * clock.cpp: When Validating TimelineGroup don't forget to call parent's
22182         base validation method.
22184 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22186         * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
22187         SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
22188         test-aniamtion-repeat-behavior.xaml test.
22190 2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22192         * src.mdp: Updated.
22194 2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
22196         * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
22197         cairo_save/cairo_restore since we don't use the context.
22199 2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
22201         * dependencyobject.[h|cpp]: merge namescopes on SetValue.
22203 2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
22205         * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
22207         * text.cpp (Glyphs::Layout): Reverted previous commit and go back
22208         to the magic math.
22209         (Glyphs::Render): Same.
22211 2008-05-22  Chris Toshok  <toshok@ximian.com>
22213         * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
22214         code.  Only include the +2 to each side if the outline color is
22215         non-transparent.
22216         (Stroke::AddStylusPointToBounds): same.
22217         (Stroke::OnPropertyChanged): new method.  we need to recompute the
22218         bounds if our DrawingAttributes change.
22219         (Stroke::OnSubPropertyChanged): same, if width/height/online-color
22220         of the drawing attributes change.
22222 2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
22224         * brush.cpp: Fix defaults when wrong values are being used for
22225         enumerations from Javascript.
22226         [Fix part of #340799]
22228 2008-05-22  Jackson Harper  <jackson@ximian.com>
22230         * dependencyobject.cpp: Only merge temp namescopes.
22232 2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22234         * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
22235           surrounding event emission with ref/unref, set a flag specifying
22236           that we're doing event emission, and catch unrefs which would cause
22237           object destruction replacing them with a delayed unref.
22239 2008-05-21  Chris Toshok  <toshok@ximian.com>
22241         * collection.cpp (Collection::Add): remove the check for AddToList
22242         returning -1.  It never will.  Also, call SetSurface() on the new
22243         child *before* we create the Collection::Node for it, so we can
22244         tell (in SetSurface) if it's being added individually to the
22245         surface, or as part of a subtree.  This is required to fix
22246         storyboard_EnterLeaveSemantics.
22248         * animation.cpp (Storyboard::SetSurface): resume the clock when
22249         we're reattached to the surface, but *only* if we're being added
22250         as part of a subtree (that is, we already have a logical parent
22251         when we hit this method.)
22253         * clock.cpp (Clock::Begin): revert the previous
22254         change (has_started needs to be initialized to false).  Required
22255         to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
22256         out another way to fix the site (or a better way that fixes one
22257         without breaking the other.)
22259 2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
22261         * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
22262         hard-coding the EM units ourselves.
22263         (Glyphs::Render): Same.
22265         * font.cpp (TextFont::PixelsPerEM): New convenience function.
22267         * clock.cpp (Clock::Begin): Init has_started to true. Fixes
22268         http://www.tek.co.jp/Legend
22270         * animation.cpp (Storyboard::storyboard_completed): Merged
22271         teardown_clockgroup() and invoke_completed() into a single
22272         callback. Also makes it so that we don't have to remove 2
22273         CompletedEvent handlers (which we were not doing properly afaict
22274         in Storyboard::Stop).
22275         (Storyboard::Stop): After unregistering the CompletedEvent handler
22276         and stopping the root_clock, tear down the clock group.
22278 2008-05-21  Larry Ewing  <lewing@novell.com>
22280         * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
22281         ellipses a little better.
22282         (Shape::ComputeStretchBounds): modify the needs_clip logic a
22283         little to catch the degenerate ellipse cases we were running into.
22285         Fixes test-shape-ellipse-stroke*.xaml.
22287 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22289         * clock.cpp: Include the offsett coming from the BeginTime in the
22290         seek_time calculations. Fixes seek-test-begin-time and
22291         seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
22293 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22295         * clock.cpp: Actually do set the seek_time before using it.
22297 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22299         * clock.cpp: When seeking ClockGroup, don't seek children as weel
22300         (results in cumulative behavior).
22302 2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
22304         * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
22305         context since only the transform is changed (current point 
22306         location is not part of the context).
22308 2008-05-20  Larry Ewing  <lewing@novell.com>
22310         * runtime.cpp (Surface::motion_notify_callback): always return
22311         true in the windowed motion handler otherwise we something steals
22312         mouse events from us.
22314         Fixes most of MouseInput.htm
22316 2008-05-20  Michael Dominic K.  <mdk@mdk.am>
22318         * clock.cpp: Fixing a problem where timeline with BeginTime set do not
22319         respond at all to Seek. Brings us closer with AnimationMatrix2.
22321 2008-05-19  Jackson Harper  <jackson@ximian.com>
22323         * xaml.cpp: Only do the type wrapping if we are dealing with
22324         collection types, otherwise we just ignore the property decl.
22326 2008-05-19  Jackson Harper  <jackson@ximian.com>
22328         * xaml.cpp: When we wrap a property we need to ignore the property
22329         element so that the children get added to the wrapped object
22330         properly.
22331         * dependencyobject.cpp: We also need to merge the collection's
22332         namescope because collections can be created with their own temp
22333         namescope using createFromXaml.
22334         
22335 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22337         * animation.cpp:
22338         * animation.h:
22339         * clock.cpp:
22340         * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
22341         confusion.
22343 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22345         * animation.cpp:
22346         * animation.h: Adding an implementation for ExtraRepeatHandler to
22347         AnimationClock that fetches target value and sets it on
22348         AnimationStorage. Fixes clock37.xaml test.
22350 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22352         * animation.cpp:
22353         * animation.h: Adding helper methods to get target value out of the
22354         given AnimationTimeline. We're still missing implementations for
22355         keyframe-based anims. Coming soon.
22357 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22359         * animation.cpp:
22360         * animation.h: Adding two helper methods to AnimationStorage:
22361         GetStopValue (get's current base or (if set) stop value) and
22362         UpdatePropertyWithValue to manually force prop to a given state.
22364 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22366         * clock.cpp:
22367         * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
22368         repeat. By default does nothing.
22370 2008-05-19  Jackson Harper  <jackson@ximian.com>
22372         * xaml.cpp: When createFromXaml ('<some property>...</property>')
22373         is called, we need to create and return an object that represents
22374         that property.  ie createFromXaml ('<Canvas.Triggers>...); should
22375         return a ResourceDictionary object.
22377 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22379         * downloader.cpp: Fix warnings.
22381 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22383         * clock.cpp: Added comment.
22385 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22387         * runtime.cpp: Destroy EventObject::objects_alive upon runtime
22388           shutdown.
22390 2008-05-16  Miguel de Icaza  <miguel@novell.com>
22392         * dependencyobject.h (DependencyObject::GetContentProperty):
22393         returns a DependencyProperty that is the target for the content of
22394         a XAML content assignment. 
22396         * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
22397         Class attribute as the object has already been created. 
22399         (start_element): Add support for the ContentPropertyAttribute on
22400         DependencyObjects to the XAML parser.       This is very primitive
22401         support at this point, and does not support collections, or type
22402         conversions as specified on the docs. 
22404         * control.cpp (Control::SetContent): Refactor setting the
22405         real_object into its own routine.     Currently takes a Surface
22406         parameter, not clear that this is even needed, but kept for
22407         compatibility with the old code. 
22409         (UserControl::OnPropertyChanged): Hook up setting the Content
22410         property.
22412         * runtime.cpp (Surface::Attach): Let the widget be UIElement.
22414 2008-05-16  Larry Ewing  <lewing@novell.com>
22416         * shape.cpp: draw ellipses with no width/height specified as the
22417         ms tests indicate.
22419         Fixes StretchAndShapes.xaml.
22421 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22423         * media.cpp: Abort the downloader when we emit MediaFailed, and always
22424           emit a DownloadProgressChangedEvent with 1.0 when we're finished
22425           downloading (we won't get any writes if the file has already been
22426           downloaded and mozilla just gives us the filename).
22428 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22430         * src.mdp: Updated.
22432 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22434         * downloader.cpp: Don't emit any events if we don't have a surface. Add
22435           warnings to Send(Internal) when we have no surface (the plugin is
22436           already checking for it, so if the warning is printed we're doing
22437           something else wrong).
22438         * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
22439           create, and when the toplevel canvas changes or the surface is
22440           destroyed clear the downloader's surface pointer.
22442 2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
22444         * downloader.cpp (Downloader::Abort): Set download progress to 0.
22446 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22448         * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
22449           NotifySize, mozilla calls NotifySize for every write.
22451 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22453         * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
22455 2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22457         * playlist.cpp: If we're stopping a playlist, reopen the first entry.
22458         * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
22459           so that Playlist can call them.
22461 2008-05-15  Larry Ewing  <lewing@novell.com>
22463         * runtime.cpp (Surface::button_press_callback): stop firefox from
22464         stealing our focus in the widget case by always returning true on
22465         button press events.  There may be a better way to handle this by
22466         only returning true if the press lands on and element but this at
22467         least improves the situation.
22469         Fixes FullScreenKey.htm.
22471 2008-05-15  Michael Dominic K.  <mdk@mdk.am>
22473         * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
22474         Filling state, this makes the idle optimization cover all the cases. Big
22475         perf boost expected.
22476         
22477 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
22479         Fix for tests/xaml/test-directory-in-zip.html
22481         * media.cpp (Image::Image): Initialize some new state variables to
22482         keep track of whether or not the FrameworkElement::Width and
22483         Height values are ever manually set.
22484         (Image::DownloaderComplete): Properly set the Width/Height
22485         property values based on whether a particular Width/Height have
22486         been requested. Use the image's native width/height if not.
22487         (Image::OnPropertyChanged): Listen for changes to Width/Height
22488         properties.
22490 2008-05-14  Larry Ewing  <lewing@novell.com>
22492         * src/uielement.cpp (UIElement::PostRender): clear any existing
22493         paths when rendering the bounds rectangle.
22495 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
22497         * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
22498         of the more complex GetValue API.
22500         * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
22501         error, return -1 (since this is an int32 return value, not bool).
22503 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22505         * media.cpp, media.h: Added MediaElement::IsLive, and move
22506           initialization of this field to before our MediaPlayer is opened.
22507         * mplayer.cpp, mplayer.h: For live sources the first frame might not
22508           come with pts = 0, so store that pts so that later we can correctly
22509           calculate how much we've actually played.
22511 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22513         * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
22514         * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
22515           and skip entries with zero duration.
22517 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22519         * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
22520           the read lock if don't have a surface or timemanager.
22522 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
22524         * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
22525         children) on DoRepeat (). Fixes a small regression in clock21.xaml
22526         introduced with last commit.
22528 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
22530         * clock.cpp:
22531         * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
22532         it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
22534 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22536         * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
22537           crashes when javascript removes the plugin in an eventhandler.
22539 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
22541         * media.cpp (MediaElement::DownloaderFailed): Make this more
22542         easily extensible.
22544 2008-05-13  Fernando Herrera  <fherrera@novell.com>
22546         * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
22548 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
22550         * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
22551         corruption of the source.* variables by creating local references
22552         to them and setting source.* to NULL before calling
22553         SetSourceInternal().
22555 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22557         * clock.cpp, clock.h: Remove InvokeOnMainThread.
22558         * dependencyobject.cpp, dependencyobject.h: EventObject: added
22559           AddTickCall. Requred when adding ticks from other than the 
22560           main thread.
22561         * downloader.cpp: Send: use a TimeManager to add the timeout.
22562         * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
22563           TimeManager::InvokeOnMainThread anymore, add the timeouts using a
22564           TimeManager instance.
22566 2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
22568         * list.cpp (List::List): Init length to 0.
22569         (List::Clear): Reset length to 0.
22570         (List::Append): length++
22571         (List::Prepend): length++
22572         (List::Insert): length++
22573         (List::InsertBefore): length++
22574         (List::Unlink): length--
22575         (List::Length): Fixed to be O(0) instead of O(n)
22577         * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
22578         instead of comparing List::Length() to 0.
22579         (Stroke::HitTest): Same.
22581 2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22583         * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
22584           prevents us from emitting the event again as a consequence of what
22585           any of the event handlers do.
22587 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22589         * animation.cpp:
22590         * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
22592 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22594         * animation.cpp:
22595         * animation.h:
22596         * dependencyobject.cpp:
22597         * dependencyobject.h: Float the AnimationStorage only when it's the
22598         current storage.
22600 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22602         * animation.cpp:
22603         * animation.h: Introduce floating state for animation storage that has
22604         it's clock destroyed but it hasn't been stopped before. We need to keep the
22605         animation storage (reffed from the DependencyProperty hash) around to be
22606         able to get proper value for the next (continous) Storyboard on same
22607         property. Fixes #383879 and #375275.
22609 2008-05-09  Geoff Norton <gnorton@novell.com>
22611         * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
22612         ensure that we select the stream with the highest available bit
22613         rate, opposed to the first stream that we come across.
22615 2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
22617         * dependencyobject.cpp (DependencyObject::FindName): Don't need
22618         nested if/elses.
22620         * namescope.cpp (NameScope::FindName): Simplify.
22622 2008-05-08  Larry Ewing  <lewing@novell.com>
22624         * shape.cpp: silence some warnings.
22626 2008-05-08  Larry Ewing  <lewing@novell.com>
22628         * shape.h: remove ClipOnWidthAndHeight method, replace with
22629         needs_clip variable.
22630         
22631         * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
22632         the actual size of the object before and after the stretch and the
22633         stretch flags.  
22635         Speeds up Sprawl and a lot of other applications that use stretch
22636         extensively.
22638 2008-05-08  Larry Ewing  <lewing@novell.com>
22640         * runtime.cpp (Surface::expose_to_drawable): fill the background
22641         instead of painting and don't create the clip until the rendering
22643 2008-05-08  Miguel de Icaza  <miguel@novell.com>
22645         * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
22646         existing DependencyObject with the contents of a XAML string.  
22648         Needed for Silverlight 2.0 support, for the new model:
22649         create object then do LoadComponent on it.
22651 2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
22653         * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
22654         notation.
22656 2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
22658         * font.cpp: Removed old layout code.
22659         (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
22660         conversion macros to make understanding the code easier. Also,
22661         added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
22662         of broken fixed-width CJK fonts.
22664         * clock.cpp (TimeManager::Stop): Added for convenience.
22665         (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
22666         can make sure it is init'd properly via SetTimerFrequency() before
22667         Start()ing.
22669         * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
22670         not it's source's Start(). We need things like frequency to be
22671         setup and other values to be initialized properly.
22672         (Surface::Attach): After calling canvas->OnLoaded(), check that we
22673         are not zombied - if we are, return.
22675 2008-05-07  Larry Ewing  <lewing@novell.com>
22677         * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
22678         objects that the surface is undead.
22680 2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
22682         * animation.cpp (animation_shutdown): Renamed from
22683         animation_destroy().
22685         * text.cpp (text_shutdown): Renamed from text_destroy().
22687         * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
22688         include glib.h and use g_timeout_add() instead.
22689         (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
22690         not -1 (the timeout ids are uint, not int).
22691         (SystemTimeSource::SetTimerFrequency): Updated.
22692         (SystemTimeSource::Start): Updated.
22693         (SystemTimeSource::Stop): Updated.
22695         * list.cpp (List::Remove): Don't need to search for the node, we
22696         already have a pointer to it.
22698 2008-05-07  Larry Ewing  <lewing@novell.com>
22700         * runtime.cpp (Surface::Resize): handle a resize in windowless mode
22701         gracefully.
22703         Fixes part of windowless resizing.
22704         
22705 2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22707         * media.cpp: Handle the rtsp protocol too.
22708         * playlist.cpp, playlist.h: Store base and source_name as Uris.
22709           Implement GetFullSourceName better, and do some uri validation.
22710         * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
22711           disables canonicalization of trailing directory separators since
22712           asx playlists may treat urls differently depending on the presence
22713           or absence of any trailing directory separators. Added Clone ().
22715 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
22717         * animation.cpp:
22718         * animation.h: When attaching new animation storage and previous storage
22719         exist, flag it as non-resetable (meaning that the storage will never
22720         reset animated property to base/stop value). This fixes the
22721         storyboard-stopping-two.html test.
22723 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
22725         * dependencyobject.cpp:
22726         * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
22727         returns the previously attached AnimationStorage.
22729         * animation.cpp:
22730         * animation.h: When attaching new animation storage try to inherit the
22731         resetValue from the previously attached storage. Reset value is the
22732         value that we reset to when storyboard is stopped (originally it always
22733         used to be the base value of the current AnimationStorage). 
22735         This replicates the bahavior of SL where starting a new (second)
22736         storyboard on a property renders the prev storyboard useless
22737         (non updating the prop) but keeps it's "starting value" for storyboard
22738         reset. In other words we can say that starting a new storyboard on a
22739         prop makes this new storyboard a "continuation" of the prev storyboard.
22741 2008-05-05  Larry Ewing  <lewing@novell.com>
22743         * runtime.cpp (Surface::render_cb): only call ForceRender if we
22744         dirtied something.
22746 2008-05-05  Larry Ewing  <lewing@novell.com>
22748         * runtime.cpp: update the (almost unused) frame count where it can
22749         get hit in windowless.  Clear existing paths before rendering the
22750         expose box.
22752         Minor cleanups to help with debugging the expose regions.
22754 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
22756         * clock.cpp (TimeManager::Shutdown): Renamed from
22757         TimeManager::Stop() and also updated to remove all registered
22758         timeouts.
22760         * runtime.cpp (Surface): We no longer keep track of signal ids, we
22761         simply remove all signals on the widgets with 'this' as the user
22762         data.
22764         * clock.cpp (TimeManager::Stop): Added. New method to stop the
22765         time manager.
22767         * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
22768         emission of timeout events.
22770 2008-05-05  Michael Dominic K.  <mdk@mdk.am>
22772         * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
22773         other stuff.
22775 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22777         * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
22778           playing playlists, we only emit MediaEnded if we're playing the
22779           last entry in the playlist. Call Playlist::OnEntryEnded manually
22780           instead of letting the playlist rely on the MediaEnded event, since
22781           the MediaEnded event isn't raised for all entries. Playlist: Added
22782           IsCurrentEntryLastEntry.
22784 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22786         * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
22787           until the pipeline got all the data it was waiting for.
22789 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22791         * media.cpp, media.h: Add an EmitMediaOpened method and emit
22792           MediaOpened somewhat more aggressively, but only once.
22794 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
22796         * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
22797         this->height for the brush size - fixes TextTransforms.xaml once
22798         again.
22800 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22802         * media.cpp: Don't emit any BufferingProgressChanged events in
22803           OnPropertyChanged.
22805 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22807         * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
22808           ffmpeg won't decode any wma audio.
22810 2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
22812         * shape.cpp: draw the line caps with the stretch_transform matrix.
22813         Finetune the stretch computation again.
22815 2008-05-05  Miguel de Icaza  <miguel@novell.com>
22817         * src/control.cpp: Add a skeleton UserControl, to get a bit
22818         further on the loading of a Silverlight 2 application. 
22820         See the TODO, there are still many limitations.
22822 2008-05-04  Larry Ewing  <lewing@novell.com>
22824         * runtime.cpp: restrict invalidations to the active windowless
22825         bounds.
22827         Fixes massive drawing issues on http://my.liveatedu.com/ where
22828         were creating invalidations with a negative coords.
22830 2008-05-04  Miguel de Icaza  <miguel@novell.com>
22832         * xap.cpp: Expose xap_unpack, include when Mono runtime is
22833         included. 
22835         * deployment.cpp: Small fixups.
22837         * xaml.cpp (deploy_namespace): New namespace used to parse
22838         AppManifest.xaml files that start with a <Deployment> tag on the
22839         http://schemas.microsoft.com/client/2007/deployment namespace. 
22840         
22841         (xaml_init): Register the deployment classes.
22843         * type.cpp (type_is_dependency_object): Add new helper method
22844         to determine if a Kind is a DEPENDENCYOBJECT, the list is no
22845         longer separated in value-types and DependencyObjects, so its not
22846         possible to do a fast lookup from managed code. 
22848 2008-05-04  Chris Toshok  <toshok@ximian.com>
22850         [ fixes #361906, while simultaneously keeping halo3,
22851         ControlLife.htm, and ControlState.htm happy ]
22852         
22853         * runtime.h, runtime.cpp, type-generated.cpp: move back to the
22854         LoadEvent instead of the broken Attaching event, reverting
22855         r102288.
22857         * panel.h, panel.cpp: add a "emitting_loaded" guard around the
22858         body of OnLoaded so we don't end up re-entering this method.
22859         Also, revert r102196 as the ordering of parent-to-child was
22860         correct originally, there were just other ordering constraints we
22861         weren't handling.
22863         * control.h, control.cpp: same.
22865         * dependencyobject.h, dependencyobject.cpp: add a count field to
22866         EventClosure so we can support the "only_unemitted" arg in
22867         EventObject::Emit.  The idea is that the Loaded event seems to
22868         only be emitted on those events that haven't yet been emitted.
22869         This may also be implemented just by making Loaded event handlers
22870         one-shot (removing themselves after they fire), but this is easy
22871         enough and works.  The only event with this odd behavior (that I
22872         know of) is Loaded.
22874         * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
22875         flag (which may actually be useless now, given the Emit change)
22876         but don't emit Loaded only when the flag is unset.
22878         * collection.cpp: remove the last bit of closure access from
22879         VisualCollection.  The OnLoaded call now happens in
22880         Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
22881         spots in VisualCollection.
22883 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
22885         * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
22886         [Complete the fix for #383870]
22888 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
22890         * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
22891         glyphs into account when calculating extents. Fix usage of OriginX
22892         and OriginY as far as extents goes.
22893         (Glyphs::GetOriginPoint): Don't leak the TextFont.
22894         (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
22895         RenderTransformOrigin, Microsoft's implementation for Glyphs
22896         doesn't seem to take into account the width/height of the bounding
22897         box.
22898         (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
22899         rather than MIN (OriginX, 0), Min (OriginY, 0)
22901 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
22903         * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
22904         [Partial fix for #383870, bounds are not always correct]
22906 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
22908         * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
22909         rather than copying it from the cairo context for the same reason
22910         we did this for TextBlock segment path caching.
22912 2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22914         * playlist.h, playlist.cpp: Implemented ClientSkip.
22915         * media.cpp: Handle playlists entry with ClientSkip set correctly.
22917 2008-05-02  Michael Dominic K.  <mdk@mdk.am>
22919         * animation.cpp:
22920         * animation.h: For the KeySpline: getting rid of the ugly lookup-table
22921         with x -> y values and instead using a two-way curve approximation
22922         methodology for calculating the Spline progress. This is not 100% accurate
22923         (same as original bezier) for fine-grained values but removes all the
22924         precision problems and greatly improves the quality for long KeySpline
22925         animations (no more jags). 
22927 2008-05-01  Larry Ewing  <lewing@novell.com>
22929         * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
22930         invalidate here as changes in the upstream opacity could make us
22931         unable to invalidate later.
22933         Fixes invalidation of last hex in a sprawl run.
22935 2008-05-01  Larry Ewing  <lewing@novell.com>
22937         * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
22938         Previously there were no time manager handlers listening to events
22939         in windowless mode so we were missing expose events.  Make all
22940         invalidations go throw Invalidate so that they get picked up in
22941         windowless.  Take into account that exposes go to a full size
22942         window in windowless mode so we don't need to subtract the device
22943         offsets.
22945         Fixes most of the issues with
22946         http://silverlight.r2musings.com/weatherwidget/default.aspx and
22947         fixes the harness failure on ZIndex.htm.
22948         
22949 2008-05-01  Chris Toshok  <toshok@ximian.com>
22951         * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
22952         AttachingEvent, which is emitted after the toplevel control is set
22953         on the surface, but before UIElement::LoadedEvent is emitted on
22954         it.  Used by the plugin for hooking up the plugin onLoad handler.
22956 2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
22958         * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
22959         from the cairo_t after pathing out all of the glyphs for a segment
22960         of text, keep our own moon_path for caching. Apparently the path
22961         gotten from cairo_copy_path() has whatever transforms are on the
22962         context pre-applied which is the cause for the breakage in bug
22963         #375279.
22965         * font.cpp (TextFont::AppendPath): New method to append a glyph's
22966         path to a moon_path for caching purposes.
22968 2008-04-30  Fernando Herrera  <fherrera@novell.com>
22970         * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
22971         stream, fallback to http:// uri
22973 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
22975         * panel.cpp:
22976         * panel.h: Adding the panel_add_child helper method used by the ancient
22977         demo. It actually makes sense.
22979 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
22981         * Makefile.am:
22982         * collection.h:
22983         * text.cpp:
22984         * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
22985         the install. This way we don't need to bundle the zip includes.
22987 2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
22989         * shape.cpp: calc_line_bounds: compute the start|end caps in the
22990         bounds.
22992 2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
22994         * panel.cpp: Emit Loaded on Canvas before it's child.
22995         [Fix part #361906 - i.e. back to original issue]
22997 2008-04-30  Fernando Herrera  <fherrera@novell.com>
22999         * downloader.cpp:
23000         * downloader.h: export downloader_get_downloaded_file without the
23001         partName.
23003 2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23005         * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
23006           correctly, and calculate file duration as MS seems to be doing it.
23007           SkipFrame: when seeking don't take into account the size of the
23008           mpeg header, since we only peaked it. 
23010 2008-04-29  Michael Dominic K.  <mdk@mdk.am>
23012         * shape.cpp: Clipping is not taken into account with cairo_in_*
23013         functions therefore do the hit-test in two steps -- first check if
23014         within clipping bounds and then check if within shape bounds. Fixes
23015         #383894 and test-shape-cursor-clipping.xaml test. 
23017 2008-04-28  Chris Toshok  <toshok@ximian.com>
23019         * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
23020         before we emit our own Load event (and trigger the plugin's onLoad
23021         handler).
23023 2008-04-28  Chris Toshok  <toshok@ximian.com>
23025         * runtime.cpp (Surface::Attach): always emit Resize on Attach.
23026         fixes ControlState.htm.
23028 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23030         * typegen/typegen.cs: Minor fix to support C constructors immediately
23031           prepended with *.
23032         * type-generated.cpp: Regenerated (includes a lot more C constructors
23033           now).
23035 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23037         * geometry.h: Include glib.h before using glib macros.
23039 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23041         * xaml.cpp: Silently skip the attributes that are empty instead of
23042         throwing an error. Fixes the test-parser-empty-property.xaml and
23043         #383904.
23045 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23047         * brush.cpp: Make sure to use proper width for image stretching params.
23048         Fixes the image-brush-stretch-set.html and bug #383938.
23050 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23052         * shape.cpp: Added property accessors.
23054 2008-04-25  Chris Toshok  <toshok@ximian.com>
23056         * type-generated.cpp: add the Surface Loaded event.
23058         * runtime.cpp (Surface::widget_destroyed): null out s->widget if
23059         it matches too.  no more dangling pointers.
23061         * runtime.h, runtime.cpp: give the Surface class a Load
23062         event (used to run the JS OnLoad event in the plugin) and an
23063         IsLoaded accessor.
23065         * xaml.cpp (dependency_object_hookup_event): raise a parser error
23066         if an event is specified with a javascript: prefix.
23067         
23068 2008-04-25  Larry Ewing  <lewing@novell.com>
23070         * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
23071         changed logic inside a type check.
23073 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23075         * xaml.cpp (geometry_from_str): Use the new gemoetry property
23076         accessor methods.
23078         * geometry.cpp: Added property accessor methods
23080 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23082         * media.cpp: Always emit DownloadProgressEvents, even if we're
23083           buffering.
23085 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23087         * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
23088         method, so the Canvas.Top, Canvas.Left properties are read. Fixes
23089         inkJournal.
23091 2008-04-25  Geoff Norton  <gnorton@novell.com>
23093         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
23094         new libavcodec/avcodec.h
23096 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23098         * runtime.cpp (runtime_init): No longer need to call
23099         assembly_part_init().
23101         * deployment.cpp (assembly_part_init): Moved into
23102         deployment_init().
23104         * deployment.h: Added missing virtual dtors.
23106         * collection.cpp (Collection::GetCount): Added.
23108 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23110         * media.cpp: Set DownloadProgress to 0 when media fails to load.
23112 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23114         * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
23115           stream, emit it even if we missed it by up to 0.1 s. Refactored
23116           parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
23117           after we've either started playing or finished buffering. Emit
23118           MediaFailed/InvalidFileFormat if we failed to initialize the media.
23119           Reinitialize the media synchronously in SetSource.
23120         * media.h: Added
23122 2008-04-25  Michael Dominic K.  <mdk@mdk.am>
23124         * runtime.cpp:
23125         * uielement.cpp:
23126         * uielement.h: Also include the IsHitTestVisible status when checking
23127         our input_list after handling the mouse event. This fixes the
23128         mouse-enter-leave-hit-test-visibility.html test.
23130 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23132         * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
23134 2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
23136         * clock.cpp: Added property accessor methods for TimelineMarker
23137         and added c-bindings.
23139         * downloader.cpp: Same.
23141         * media.cpp: Added property accessors so that it isn't
23142         necessary to use long-winded c-function names to get property
23143         values. Also made all c-wrappers call the c++ property accessor
23144         methods.
23146 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23148         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23149           to the last rendered pts, since that's what is reported as our
23150           current position.
23152 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23154         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23155           to the last rendered pts, since that's what is reported as our
23156           current position.
23158 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23160         * runtime.cpp:
23161         * uielement.cpp:
23162         * uielement.h: Renaming UIElement::GetActualRenderVisibility to
23163         UIElement::GetActualTotalRenderVisibility for better name matching.
23165 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23167         * runtime.cpp: Another perf fix for the fix -- make it a corner case
23168         when the new_input_list needs to be copied. In most cases we can just
23169         reuse it. 
23171 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23173         * runtime.cpp:
23174         * uielement.cpp:
23175         * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
23176         the perf/sanity point of view. Here goes a better refactor.
23178         Adding UIElement::GetActualRenderVisibility which returns the visibility
23179         (like UIElement::ComputeTotalRenderVisibility) without setting the
23180         flags.
23182 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23184         * runtime.cpp: After emitting the events make sure to update our
23185         input_list since it can be changed -- as a result of somebody ie.
23186         changing element's visibility in the enter/leave callback. Fixes the
23187         #375220 (Microsoft downloads index chars).
23189 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23191         * animation.cpp: Do a slightly more precise generation of key-spline
23192         tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
23194 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23196         * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
23197           and raise MediaFailed.
23199 2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
23201         * geometry.h:
23202         * geometry.cpp:
23203         * shape.cpp:
23204         * shape.h: override some Compute[Shape]Bounds method to pass a matrix
23205         argument. Allows measuration of transformed Pathes and a 2nd pass to 
23206         refines the guesses we're doing for Stretches.
23208 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23210         * src.mdp: Updated.
23212 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23214         * media.cpp, pipeline.cpp, pipeline.h: Addded
23215           ProgressiveSource::NotifyFinished to notify that the download has
23216           finished. This is required for streaming downloads which download 0
23217           bytes, otherwise the pipeline will hang waiting for data.
23219 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23221         * collection.cpp, collection.h: TimelineMarkerCollection needs to be
23222           sorted at all times, added a virtual Collection::AddToList method
23223           which appends the item to the list (and overriden by
23224           TimelineMarkerCollection to add it in the correct position to keep
23225           the collection ordered).
23227 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23229         * clock.cpp, clock.h: Added property accessors to TimelineMarker.
23231 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
23233         * panel.cpp: Add property accessors and added c-bindings.
23235 2008-04-23  Geoff Norton  <gnorton@novell.com>
23237         * Makefile.am: Fix make dist when building with ffmpeg.
23239 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
23241         * frameworkelement.cpp: Added property accessors so that it isn't
23242         necessary to use long-winded c-function names to get property
23243         values. Also made all c-wrappers call the c++ property accessor
23244         methods.
23246         * text.cpp: Added property accessors to all text classes so that
23247         it isn't necessary to use long-winded c-function names to get
23248         property values. Also made all c-wrappers call the c++ property
23249         accessor methods.
23250         (TextBlock::LayoutSilverlight): Removed, logic moved into
23251         ::Layout().
23253         * animation.h: Make sure all c-API _new() functions take void as
23254         argument.
23256         * uielement.cpp: Added some property accessors.
23258         * text.cpp: Use the new SolidColorBrush ctor.
23260         * brush.cpp: Added property accessors to all brush classes so that
23261         it isn't encessary to use long-winded c-function names to get
23262         property values. Also made all c-wrappers call the c++ property
23263         accessor methods.
23264         (SolidColorBrush::SolidColorBrush): New .ctor to make life
23265         simpler.
23267 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23269         * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
23270           MediaPlayer with a negative pts.
23272 2008-04-23  Geoff Norton  <gnorton@novell.com>
23274         * libmoon.h: Drop mango.h
23275         
23276 2008-04-23  Geoff Norton  <gnorton@novell.com>
23278         * runtime.cpp: Remove pango support.
23279         
23280 2008-04-23  Geoff Norton  <gnorton@novell.com>
23282         * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
23283         support.
23284         
23285 2008-04-23  Geoff Norton  <gnorton@novell.com>
23287         * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
23288         include swscale and ffmpeg cpp files in the build if their configure
23289         flags are set.
23290         
23291 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23293         * type.cpp: When looking for types use case-insensitive type
23294           comparison. Fixes #375230 and #375231.
23296 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23298         * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
23299           don't take a ref to the context, and add a context_refcounted field
23300           to keep track of refcounting. This is required for long-living
23301           closures which would otherwise cause circular references. Add and
23302           implemetn a ASFMarkerDecoderInfo class, and implement notification
23303           of found markers back to listeners.
23304         * src.mdp: Updated.
23305         * downloader.cpp, downloader.h: Downloader: Add a streaming_features
23306           field, so that the plugin can return information about mms streams.
23307         * http-streaming.cpp, http-streaming.h: Added
23308           parse_http_streaming_features.
23309         * mplayer.h: Add property accessors for CanSeek and CanPause, and
23310           implement them. Select any marker streams.
23311         * media.h, media.cpp: MediaElement: store the marker closure in the
23312           instance, so that we can delete it upon destruction. Read the
23313           streaming features from the downloader in order to set
23314           CanSeek/CanPause properly. TryOpen: if we don't have a filename,
23315           but we do have a downloaded file, use the downloaded file as the
23316           source (might happen if streaming stops before TryOpen is called).
23317         * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
23318           implement them. Select any marker streams. Don't check if we can
23319           pause in Pause (), since MediaElement implements Buffering calling
23320           Pause on us. MediaElement is already checking if media can be
23321           paused or not.
23322         * Makefile.am: Added http-streaming.h|cpp.
23324 2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
23326         * rect.h: overrides for Union and IsEmpty to take a logical bool,
23327         allowing logical bounds computation.
23328         * geometry.cpp: use the overrided Union () in Computebounds
23329         * shape.cpp: This is the stretches' Holy Grail !
23331 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
23333         * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
23334         event->device non-NULL.
23336 2008-04-22  Larry Ewing  <lewing@novell.com>
23338         * playlist.h: remove expat references from public symbols.
23339         * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
23340         from the plublic headers.
23342         Start cleaning things up for ff3.
23344 2008-04-22  Chris Toshok  <toshok@ximian.com>
23346         * runtime.h, runtime.cpp: add Zombify() which sets the zombie
23347         flag.  basically this allows us to unwind gracefully from an event
23348         that has caused the surface to be destroyed.  when the flag is
23349         set, we basically stop emitting UI events that we're in the
23350         process of emitting.
23351         (Surface::widget_destroyed) simplify this, and zero out the
23352         widgets here so we don't destroy them again in ~Surface().
23353         
23354         * dependencyobject.h, dependencyobject.cpp: make unref_delayed
23355         public again, and don't warn about calling it on the main thread.
23356         we need it in the plugin.
23358 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
23360         * shape.cpp (Shape::DoDraw): Cast extents to int for
23361         AddToCacheSizeCounter().
23362         (Shape::IsCandidateForCaching): Same for
23363         VerifyWithCacheSizeCounter().
23365 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23367         * animation.cpp: Safely allow now the KeyTime property to be nullable.
23368         Fixes the Animation_NegativeTst.htm test.
23370 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23372         * animation.cpp:
23373         * animation.h: Making the Storyboard::Begin return bool (true if
23374         storyboard started correctly, false otherwise).
23376 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23378         * animation.cpp:
23379         * animation.h:
23380         * clock.cpp:
23381         * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
23382         to validate the Timeline before starting it. Timelines are always valid
23383         by default except for KeyFrame-based animations where we perform a
23384         check on the keyframes. 
23386         Storyboard doesn't start if any of it's timelines are not valid. This
23387         fixes the test-animation-invalid-keyframe-keytime.xaml test.
23389 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23391         * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
23392         value, make it be NULL by default. This currently causes a segfault in
23393         the just-added test-animation-invalid-keyframe-keytime.xaml which is
23394         fine.
23396 2008-04-22  Fernando Herrera  <fherrera@novell.com>
23398         * pipeline.h:
23399         * pipeline.cpp: set the new read position after Seeking to pts.
23400         Added ProgressiveSource::SeekInternal that refuses to Seek to a
23401         non-filled position.
23403 2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23405         * dependencyobject.cpp, dependencyobject.h: Added another SetValue
23406           overload, to enable calling all SetValues with stack objects.
23407         * xaml.cpp: Fix a Value leak.
23409 2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
23411         Fixes a double-destroy bug in FullScreen.htm
23413         * runtime.cpp (Surface::Surface): Initialize normal_widget - never
23414         let it be NULL unless we are in windowless mode.
23415         (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
23416         'widget_normal' instead, this way we can't accidently destroy the
23417         fullscreen widget twice (e.g. if we are in fullscreen mode).
23418         (Surface::ConnectEvents): Record the unrealize signal id so that
23419         we can later disconnect from it.
23420         (Surface::DestroyWidget): Now takes a SignalIds argument so that
23421         we can disconnect from unrealize/destroy signals which may fire in
23422         response to destroying the widget.
23423         (Surface::InitializeWidget): Now takes a SignalIds argument so
23424         that we can save the destroy signal id.
23426 2008-04-21  Geoff Norton  <gnorton@novell.com>
23428         * runtime.cpp: Guard against freeing a list in a sub-event
23429         loop when crossings are invoked.  Fixes bug#378902
23430         
23431 2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
23433         * deployment.cpp: new dependency property objects for the
23434         Deployment class.
23436         * xap.cpp: XAP loader, unpacks and instantiates deployment, but
23437         does not load assemblies in VM.  Not sure if this should be done
23438         here (and add a VM dependency) or in the plugin and later as well
23439         on mopen.
23441         * runtime.cpp: Deployment initialization.
23443         * downloader.cpp Moved some code from here into utils.cpp: Expose
23444         CreateTempDir instead of MakeTempDir that takes care of creating
23445         the directory with a unique signature.
23447 2008-04-21  Geoff Norton  <gnorton@novell.com>
23449         * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
23450         to the C implementation.
23452 2008-04-18  Larry Ewing  <lewing@novell.com>
23454         * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
23455         changes invalidate our parents bounds to notify them that their
23456         subtree may have changed.
23458         Fixes the status boxes on MouseInput.htm
23460 2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
23462         * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
23463         and focus-out-event.
23464         (Surface::focus_in_callback): If we have a toplevel canvas, emit a
23465         GotFocus event on it.
23466         (Surface::focus_out_callback): If we have a toplevel canvas, emit
23467         a LostFocus event on it.
23468         (Surface::Attach): If our widget has focus, emit GotFocus event on
23469         our canvas right after we emit the Loaded event.
23471         * uielement.cpp (UIElement::EmitGotFocus): New method.
23472         (UIElement::EmitLostFocus): New method.
23474 2008-04-18  Geoff Norton  <gnorton@novell.com>
23476         * yuv-converter.cpp:  It seems that ffmpeg will occasionally
23477         over-pad the YUV buffers with a SIMD aligned amount (see
23478         timecode-*.wmv)
23479         
23480 2008-04-18  Michael Dominic K.  <mdk@mdk.am>
23482         * animation.cpp: Make sure we always return targetValue when
23483         progress >= 1.0 for Spline*KeyFrame's.
23485         This fixes the clock36.xaml test and PopFly bug of "line dirt
23486         leftovers" when collapsing block list or tutorial list.
23488 2008-04-17  Larry Ewing  <lewing@novell.com>
23490         * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
23492 2008-04-17  Larry Ewing  <lewing@novell.com>
23494         * src/eventargs.cpp:
23495         * src/eventargs.h: 
23496         * src/type-generated.cpp:
23497         * src/value.h: add a default ctor for MouseEventArgs.
23499 2008-04-17  Larry Ewing  <lewing@novell.com>
23501         * typegen/typegen.cs: don't require an svn repo for proper
23502         functioning, try to make the error messages functional still.
23504 2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23506         * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
23507           before trying to play/pause, otherwise nothing will happen (if
23508           coming from the Opening state). Fix printf.
23510 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23512         * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
23513           for DependencyProperty, if a property has this flag, it will always
23514           be changed, even if the new value is the same as the old value.
23515           DependencyObject::SetValue: honor the new always_change flag.
23516         * media.cpp: Set the always_change flag to true for
23517           MediaBase::SourceProperty.
23519 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23521         * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
23522           MediaOpened, so that it also happens when TryLoadFinished opens the
23523           media. Fixes media not starting to play when the media was
23524           downloaded between the moment we tried to open it and it was
23525           successfully opened.
23527 2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
23529         * color.cpp (color_from_str): Handle uint32 color values that are
23530         not hex.
23532 2008-04-17  Larry Ewing  <lewing@novell.com>
23534         * dependencyobject.cpp (DependencyProperty::DependencyProperty):
23535         initialize is_nullable.
23537         Fixes random failure of ParserErrors.htm.
23539 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23541         * media.cpp: MediaElement::TryOpen: always unref the FileSource we
23542           create when we're done with it.
23544 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23546         * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
23547           remember how many events the current type has, since in our
23548           destructor we can't get that information anymore. Add a new
23549           EventLists class which does the book-keeping.
23551 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23553         * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
23554           in the destructor. MediaElement::SetMedia: call ComputeBounds at
23555           the end. Fixes xaml/test-canvas-no-size.html
23557 2008-04-17  Michael Dominic K.  <mdk@mdk.am>
23559         * animation.cpp: It turns out that KeyFrames doesn't have default Value
23560         of NULL but rather 0/Black/etc.  
23562         This fixes the the test-animation-null-defaults-*.xaml tests and the bug
23563         in PopFly where clicking the block list collapser wouldn't do anything
23564         (it collapses now properly like the tutorial right pane). 
23566 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23567         
23568         * src.mdp: Updated.
23570 2008-04-16  Larry Ewing  <lewing@novell.com>
23572         * type.cpp: avoid an infinite recursion in LookupEvent.
23574         Fixes a crash in RuntimeErrors.htm.
23576 2008-04-16  Larry Ewing  <lewing@novell.com>
23578         * shape.cpp (Shape::ComputeStretchBounds): get another test working.
23580 2008-04-16  Larry Ewing  <lewing@novell.com>
23582         * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
23583         try to resolve the regression in stretch that had crept in.  Still
23584         working on a more complete patch.
23586 2008-04-16  Larry Ewing  <lewing@novell.com>
23588         * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
23589         a logical size.
23591 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
23593         * dependencyobject.cpp (free_value): value argument may be NULL.
23595 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23597         * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
23598           decreasing refcount, so that ref in event emission doesn't abort.
23599           Reenable ref/unref in event emission.
23601 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
23603         * dependencyobject.cpp (set_surface): value argument can be NULL.
23604         (DependencyObject::IsValueValid): Fixed compile warnings.
23606         * downloader.cpp: Properly set/reset Status and StatusText
23607         properties.
23608         (Downloader::Open): Properly reinitialize all state.
23609         (Downloader::Write): Clamp progress to 1.0 (altho it should never
23610         go above, especially not that I've fixed resetting 'total' state).
23612         * enums.c (initialize_enums): Don't cast arrays using
23613         GINT_TO_POINTER(), doesn't make any sense.
23615 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23617         * collection.cpp: Collection::EmitChanged: don't create a
23618           ChangeEventArgs if we don't need one, and unref it when we're
23619           finished with it.
23621 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
23623         * clock.cpp: Add protection against division by 0.
23625 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
23627         * animation.cpp:
23628         * animation.h: Don't detach the ClockGroup from parent on the Completed
23629         event. This is now finally no longer needed. While keeping the
23630         clockgroup means little perf difference it makes the whole thing much
23631         more simple to read (there is just one place that explains why Filling
23632         groups are no longer processed after Completed).
23634 2008-04-16  Larry Ewing  <lewing@novell.com>
23636         * shape.cpp: tweak the origin tweak again.  This should pass
23637         test-shape-path-stretch[34].xaml.
23639 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
23641         Fix for OMPackagingSource.htm
23643         * media.cpp (MediaElement::OnPropertyChanged): If the new source
23644         is empty, Invalidate().
23645         (MediaElement::Render): Render nothing if our downloader is NULL.
23647 2008-04-16  Larry Ewing  <lewing@novell.com>
23649         * shape.cpp: don't adjust the origin unless we are adjusting that
23650         axis.
23652 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23654         * playlist.cpp: Simplify printf.
23656 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23658         * src.mdp: Updated to (mostly) compile.
23660 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23662         * src.mdp: Updated.
23664 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23666         * typegen/typegen.sh: Updated to work correctly independently of
23667         the current directory when executed.
23669 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23671         * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
23672           collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
23673           downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
23674           type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
23675           uielement.cpp, uielement.h: Initialize our type system statically.
23676         * dependencyobject.cpp: Initialize our type system statically. Comparing a
23677           Kind value to another to determine type hierarchy isn't supported
23678           anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
23679           thing.
23680         * src.mdp: Updated.
23681         * type.cpp.in: Removed, no longer required.
23682         * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
23683           determine type hierarchy isn't supported anymore, use Value::Is or
23684           Type::IsSubclassOf, which are doing the right thing.
23686 2008-04-16  Larry Ewing  <lewing@novell.com>
23688         * shape.cpp (Shape::ComputeStretchBounds): fix typo.
23690 2008-04-16  Larry Ewing  <lewing@novell.com>
23692         * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
23693         that got accidentally lost when fixing other bits.
23695         Fixes regression in StretchAndShapes.xaml.
23697 2008-04-16  Jackson Harper  <jackson@ximian.com>
23699         * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
23700         we need to check if the property is Nullable and raise an error if
23701         it isn't.
23703 2008-04-16  Jackson Harper  <jackson@ximian.com>
23705         * dependencyobject.h|cpp: SetValue now validates values and
23706         returns false with a GError when invalid values are used.
23707         Subclasses can (and should) override IsValidValue to do their own
23708         value validation.
23709         * xaml.cpp: Use new SetValue that returns errors.
23710         
23711 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23713         * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
23714           don't have a surface anymore. We're probably executing after the surface
23715           has been destroyed.
23717 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23719         * src.mdp: Updated to include typegen/*.
23720         * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
23721           Behaviour/Behavior inconsistency.
23723 2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
23725         * media.cpp (MediaElement::OnPropertyChanged): Moved the
23726         PositionProperty seek logic into here so we could get rid of
23727         MediaElement::SetValue() overload.
23729         * dependencyobject.h (class DependencyObject): SetValue() is no
23730         longer a virtual method.
23732 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23734         * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
23735         clock35.xaml test.
23737 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23739         * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
23740         into account also when moving back in time. 
23742         Fixes the clock34.xaml test.
23744 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23746         * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
23747         calculating it ourselves (instead of using the CalcProgress). Otherwise
23748         we're bypassing the clamping and extending animations/values beyond
23749         their bounds. 
23751         This is a real fix for the Popfly #378390 (cannot configure the box in
23752         Popfly). Also fixes the clock34.xaml test-case.
23754 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23756         * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
23757         when previous OR current state is Clock::Active.
23759 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23761         * clock.cpp: Reverting the change that was supposed to fix popfly. It's
23762         actually totally bad. I knew I was too fast with this one.
23764 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
23766         * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
23767         configure the box in Popfly). Whoah, that was a nasty one.
23769 2008-04-14  Chris Toshok  <toshok@ximian.com>
23771         * runtime.cpp (Surface::Attach): don't clear the up/down dirty
23772         lists here.  Calling toplevel->SetSurface(NULL) ensures that all
23773         elements from the previous tree have their dirty elements removed,
23774         so what's left will correspond to 1) things that are about replace
23775         the current hierarchy, or 2) things that haven't actually been
23776         added to the hierarchy yet, but need to be associated with a
23777         surface.
23779         * collection.cpp (Collection::Clear): emit
23780         CollectionChangeTypeChanging event before we do the actual change
23781         so the owner can do something with the children if it needs to.
23782         (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
23783         nuke.
23784         (VisualCollection::Add): remove call to VisualAdded.  that
23785         behavior will be handled by Panel in its OnCollectionChanged
23786         method.
23787         (VisualCollection::SetVal): same.
23788         (VisualCollection::Insert): same.
23789         (VisualCollection::Remove): same, but with VisualRemoved.
23790         (VisualCollection::RemoveAt): same.
23791         (VisualCollection::Clear): remove the loop calling VisualRemoved.
23792         this will be handled by the additional
23793         CollectionChangeTypeChanging handling in panel.cpp.
23795         * enums.h (enum CollectionChangeType): add
23796         CollectionChangeTypeChanging.
23798         * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
23799         where the ChildrenProperty is changed, by calling ChildRemoved on
23800         all the old children, and ChildAdded on all the new ones.
23801         (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
23802         (Panel::ChildRemoved): new home for
23803         VisualCollection::VisualRemoved.
23804         (Panel::OnCollectionChanged): add support for
23805         CollectionChangeTypeChanging, so we can remove all children.  this
23806         change type is generated by Collection::Clear.
23808         * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
23809         CollectionChangeTypeChanging.
23810         (InkPresenter::OnCollectionChanged): same.
23812 2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
23814         * media.cpp (Image::CreateSurface): Robustification of image
23815         loading.
23817 2008-04-14  Michael Dominic K.  <mdk@mdk.am>
23819         * clock.cpp:
23820         * clock.h: When calculating the new time in DoRepeat use modulo on new
23821         value. Otherwise we're 'losing' a little bit of time on every repeat and
23822         end time doesn't match with parent. This fixes a few more "jags" on
23823         animations ie. clock13.xaml.
23825 2008-04-11  Larry Ewing  <lewing@novell.com>
23827         * xaml.cpp (value_from_str): make sure we propogate the error if
23828         color_from_string returns NULL.
23830         * color.cpp (color_from_str): return NULL on invalid color values
23831         rather than simply returning black.
23833         Add an error condition to color_from_string so that we pass the
23834         color tests in ParserErrors test.
23835         
23836 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23838         * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
23840 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
23842         * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
23843         defined.
23845         * downloader.cpp (Downloader::Send): Use
23846         TimeManager::InvokeOnMainThread() here like Rolf did in
23847         MediaBase. Simplifies things by not needing a surface.
23849         * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
23850         object as opposed to a DependencyObject.
23852 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
23854         * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
23855         we go Filling/Stopped. Without this we never "finish off" our animations
23856         and depending on the framerate we get "jags". Fixes the clock32.xaml
23857         test.
23859 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
23861         * runtime.cpp: Make the dot and eraser cursors const to avoid
23862         compiler warnings.
23864 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
23866         * enums.c: Removing bolox comment and behavior. Always return -1 on
23867         fail.
23869         * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
23870         Should make it a little bit easier to spot problems.
23872 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
23874         * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
23875         actually recursive (I'm not sure why this was commented out? Toshok?). 
23876         Fixes the sprawl end-game animation, #378748.
23878 2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
23880         * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
23881         bnc #375213. Implemented the MouseCursorNone too.
23883 2008-04-10  Larry Ewing  <lewing@novell.com>
23885         * xaml.cpp (start_element): throw an error if there is an xml
23886         attribute on a dependency property.
23888 2008-04-10  Larry Ewing  <lewing@novell.com>
23890         * enums.c (enum_from_str): return -1 on an invalid enum string so
23891         that we can catch it as a ParserError fixes
23892         Parser_Invalid_Enum.xaml.
23894 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23896         * media.cpp: MediaBase::SetSource: no need to get a
23897           Surface/TimeManager instance to do an asynchronous call, just
23898           call TimeManager::InvokeOnMainThread.
23900 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23902         * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
23903           by the audio thread when the audio finishes.
23905         * media.h, media.cpp: Added MediaElement::AudioFinished, called by
23906           the media player when the audio finishes. Enables us to raise
23907           MediaEnded for audio-only media.
23909 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
23911         * brush.cpp|media.cpp: All SetSource() entry points now take
23912         Downloader objects rather than DependencyObject arguments - the
23913         same as MSDN defines.
23915         * media.cpp (SetSourceInternal): More cleanup /
23916         simplification. Since *::SetSource() already takes steps to be
23917         async, no need to use Downloader::Send() which would introduce
23918         another delay in downloading. It should be plenty safe to call
23919         Downloader::SendNow() in all ::SetSourceInternal()
23920         implementations. Also, we now need to handle NULL downloader which
23921         we get called with if the original SetSource() was passed a NULL
23922         downloader.
23923         (Image::SetSource): Don't cleanup the surface here, do that in
23924         SetSourceInternal() so that we delay until appropriate.
23925         (Image::SetSourceInternal): If there is a downloader, delay
23926         CleanupSurface() even longer until the new image has been
23927         downloaded.
23928         (Image::DownloaderComplete): Call CleanupSurface() here.
23930 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
23932         * media.cpp: Consolidated Image and MediaElement downloader bits
23933         by putting them into MediaBase.
23935 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23937         * dependencyobject.cpp: Guard against calling closures which have
23938           been removed during emission of previous events in the same
23939           event list: when we're emitting and a closure is removed, mark
23940           the closure as pending removal, don't call it anymore, and only
23941           remove it when we're finished emitting.
23943         * dependencyobject.h: Guard against calling closures which have
23944           been removed during emission of previous events in the same
23945           event list.
23947 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
23949         * downloader.cpp:
23950         * downloader.h:
23951         * media.cpp: A straight-forward fix for "gray flashes" in comic and
23952         slideshow (#375275). It's circumventing a change to make downloaders
23953         async for Image. Jeff, maybe you can figure more?
23955         (The commit that broke the the slideshow was r99065, Jeff from
23956         2008-03-26).
23958 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
23960         * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
23961         Showcase and test-shape-path-stretch2.xaml.
23963 2008-04-09  Chris Toshok  <toshok@ximian.com>
23965         * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
23966         is invalid, as root_2 might be.
23968 2008-04-09  Chris Toshok  <toshok@ximian.com>
23970         [ Fixes some odd behavior in
23971           http://www.thedatafarm.com/silverink/, and also fixes bug
23972           #375229 ]
23973         
23974         * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
23975         intersect the expose region with our RenderBounds, not our normal
23976         Bounds.  This forces us to add the ink presenter to the render
23977         list even when the exposed area is just going to redraw a stroke,
23978         not the actual canvas rectangle.  When we go to subtract, however,
23979         we still only subtract the canvas rectangle.
23981         * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
23982         stroke collection's bounds as well as the new stroke collection's
23983         bounds.
23984         (InkPresenter::OnCollectionChanged): when the collection has
23985         changed, we can't just use Invalidate() since that only
23986         invalidates the canvas bounds.  We need to invalidate our render
23987         bounds to get rid of strokes that are outside the canvas bounds.
23988         Also, make sure to also invalidate the new bounds of the stroke
23989         collection (it will usually be empty, but do it anyway).
23990         (InkPresenter::ComputeBounds): add logic to compute the
23991         render_bounds here.
23992         (InkPresenter::GetRenderBounds): new method.
23994         * stylus.h (class InkPresenter): add GetRenderBounds, and also add
23995         an OnPropertyChanged method so we can deal with the stroke
23996         collection being assigned to something else.
23998         * uielement.h (class UIElement): as much as I hate to do this, add
23999         yet another type of bounds (RenderBounds).  this is only here for
24000         the special case of the inkpresenter, which has the normal canvas
24001         bounds (the rectangle), the subtree bounds (which unions the
24002         canvas bounds with the bounds of strokes and children) and render
24003         bounds (which unions canvas bounds and stroke bounds.)
24005 2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
24007         * dependencyobject.cpp (resolve_property_path): Alias TextElement
24008         to TextBlock to work around some buggy beta versions of Blend.
24010 2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
24012         * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
24013         the logical/shape bounds diff stays the same. It's IMHO as close as we
24014         can go without drawing and recalculating.
24016 2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
24018         * xaml.cpp: Cleaned up some of the debugging printf's and and
24019         wrapped them in d() to declutter console spewage when unneeded.
24020         (xaml_create_from_str): ctype functions take int arguments, where
24021         normal char values are in the range 0-255 - in order to work with
24022         non-GNU, need to cast from char to unsigned char.
24024         * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
24025         initializer stuff to be consistent with other classes.
24027 2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
24029         * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
24030         to Jackson.
24032 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24034         * clock.cpp:
24035         * clock.h: SkipToFill the automatic duration clock groups except if 
24036         this is the root of all roots clock (the TimeManager's clock). Due to
24037         the idle_hint optimization, we don't process those clocks anyways.
24039 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24041         * value.h: 
24042         * animation.cpp:
24043         * animation.h:
24044         * dependencyobject.cpp:
24045         * dependencyobject.h: Making sure that each property is animated only by
24046         a single animation at a time (the last one started). 
24047         From Silverlight forums:
24049         "Keep in mind Silverlight only supports a single animation on a
24050         property at a time, so if you begin multiple animations on the same
24051         property, the last one will prevail."
24053         This prevents us from overriding Filling/HoldEnd animations by sb's
24054         started before. 
24056         The implementation is: for each prop we create a hash table (when
24057         needed) which stores objects (keys) + last AnimationStorage attached
24058         (values). When new AnimationStorage is attached to a prop, the last one
24059         is notified to stop updating the target (we don't touch the clock
24060         structure). And then there is some magic to handle destroy's etc. 
24062         This fixes PopFly mouse enter/leave problems in the toolbox and the 
24063         http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
24064         problems. Fixes #375231, #362363.
24066 2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
24068         Fixes needed for Zombomatic
24070         * downloader.cpp (Downloader::GetDownloadedFilePart): When
24071         creating the full pathname for parts we are extracting, convert
24072         everything to lowercase since we need to treat archived filenames
24073         case-insensitively.
24074         (Downloader::GetUnzippedPath): Convert filenames from the zip
24075         archive to lowercase so that it is easier for us to find them
24076         case-insensitively on the filesystem once they are extracted.
24078 2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
24080         * xaml.cpp: Fix parsing properties by ensure they start with the 
24081         element name (and not something else). Fix crasher.
24083 2008-04-07  Michael Dominic K.  <mdk@mdk.am>
24085         * src/shape.cpp:
24086         * src/shape.h: Compute the origin point as a separate step after
24087         computing the shape bounds and the stretch bounds. This fixes the
24088         recently broken sprawl.
24090         I think it also fixes other things. Before, given the way code was,
24091         the stretch_bounds would affect the origin *only* in the case of Path,
24092         in other cases (Line, Polygon, Polyline...) they would be ignored.
24094 2008-04-04  Chris Toshok  <toshok@ximian.com>
24096         * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
24097         was missing a bunch of tests (basically it was intersecting
24098         infinite lines with ellipses, not segments), and some of the math
24099         was wrong.
24101 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24103         Intended to fix bug #373462, but something else is preventing that
24104         site from working now...
24106         * media.cpp (MediaElement::SetSourceInternal): PartName is no
24107         longer a const char * argument, which means we take ownership of
24108         the PartName string.
24109         (MediaElement::SetSourceAsyncCallback): New method which is the
24110         async callback for SetSource().
24111         (MediaElement::SetSource): Reinitialize() right away.
24112         (MediaElement::SetSource): Clear out any pending SetSource async
24113         data, replacing it with the new downloader/part name info.
24114         (MediaElement::SetSource): Allow a NULL downloader object but make
24115         sure we don't crash in that case either.
24117 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24119         * dependencyobject.cpp (resolve_property_path): Avoid crash on 
24120         invalid syntax and leaks in other error cases. Fix #377039 (more
24121         test cases coming soon).
24123 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24125         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
24126         immediately if the array len is 0, prevents a crash accessing
24127         sorted_list->pdata[0] when working backwards in the second
24128         for-loop. Fixes one of the crashes I found while investigating bug
24129         #362561.
24131 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24133         * runtime.cpp: Don't crash in strcase_hash if the hashtable 
24134         contains NULL values.
24136 2008-04-03  Chris Toshok  <toshok@ximian.com>
24138         * runtime.cpp (Surface::InitializeWidget): disable the
24139         GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
24140         tests with it enabled.
24141         (Surface::motion_notify_callback): force the emission of a motion
24142         event.
24144 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24146         * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
24147         the pencil cursor. Also updated Hand (which should be a
24148         left-pointing hand, not right-pointing) and also Eraser (we need
24149         to make our own icon for this, but I suck at art so I'll pass for
24150         now).
24152 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24154         * shape.cpp:
24155         * shape.h: Calculate the logical extents when computing the shape bounds
24156         and pass them to the ComputeStretchBounds. They're currently not used in
24157         any way.
24159 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24161         * shape.cpp: Don't init the stretch matrix to identity on each
24162         Shape::ComputeShapeBounds. We want to be able to call it freely.
24164 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24166         * geometry.cpp: Use the cairo_path_extents to calculate the logical
24167         bounds instead of faking small stroke.
24169 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24171         * shape.cpp:
24172         * shape.h: Adding new parameter (bool logical) to all the
24173         Shape::ComputeShapeBounds functions and overrides. See prev commit for
24174         explanation of what is logical bounds.
24176         Currently all clients use logical == false. Just adding this
24177         functionality.
24179 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24181         * geometry.cpp:
24182         * geometry.h:
24183         * shape.cpp:
24184         * uielement.cpp: Adding new parameter (bool logical) to all the
24185         Geometry::ComputeBounds functions and overrides. Calculating logical
24186         bounds means calculating bounds without stroke included. Ie. a line
24187         (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
24188         what the stroke is. 
24190         Not used right now, will be used in just a few commits (all current
24191         ComputeBounds clients call it will logical == false).
24193 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24195         * shape.cpp: Don't automatically compute the stretch bounds when
24196         computing shape bounds. Instead, compute it as a separate step in
24197         Shape::ComputeBounds.
24199 2008-04-03  Chris Toshok  <toshok@ximian.com>
24201         * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
24202         contrary to msdn2, MS *is* indeed emitting this event with
24203         non-null eventargs.  it's just an EventArgs object, not a
24204         MouseEventArgs.
24206 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24208         * dependencyobject.cpp (EventObject::Emit): Unref the calldata
24209         even in the "no such event" exception case.
24211 2008-04-03  Larry Ewing  <lewing@novell.com>
24213         * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
24214         into appropriate error code.
24216 2008-04-03  Larry Ewing  <lewing@novell.com>
24218         * xaml.cpp: Generate errors when trying to set readonly properties.
24220 2008-04-03  Larry Ewing  <lewing@novell.com>
24222         * xaml.cpp: make sure we set an error if the property name isn't
24223         valid.
24225         * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
24226         the needed events.
24228 2008-04-03  Larry Ewing  <lewing@novell.com>
24230         * runtime.cpp (Surface::expose_to_drawable): make sure we take
24231         allocation.x and allocation.y into account when deciding not to
24232         draw.  Should fix the disappearing gtksilver widget reported on irc.
24234 2008-04-02  Larry Ewing  <lewing@novell.com>
24236         * xaml.cpp: flush character data at the end of property elements
24237         too.
24239 2008-04-02  Jackson Harper  <jackson@ximian.com>
24241         * xaml.cpp: Add the element name for this error.
24243 2008-04-02  Chris Toshok  <toshok@ximian.com>
24245         * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
24246         (Stroke::HitTestEndcapPoint): same.
24247         (point_gte_line): new method.
24248         (point_lte_line): new method.
24249         (Stroke::HitTestSegmentPoint): use point_gte_line and
24250         point_lte_line to determine if the point is inside the segment.
24251         (global): wrap all spew in DEBUG_HITTEST.
24252         
24253 2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24255         * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
24256           just plain broken.
24258 2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
24260         * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
24261         integer type when comparing.
24263         * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
24264         debugging printfs. Fixes bug #375273.
24266 2008-04-01  Chris Toshok  <toshok@ximian.com>
24268         * xaml.cpp: back out the SetSurface call removal.
24270         * dependencyobject.cpp (EventObject::unref): instead,
24271         SetSurface(NULL) here before we delete the object.
24273 2008-04-01  Chris Toshok  <toshok@ximian.com>
24275         * control.cpp (Control::InitializeFromXaml): make sure to call
24276         SetSurface(NULL) on the old real_object since we're detaching it
24277         from the tree.  Call SetSurface on ourselves (really, should just
24278         be the real_object, right?) before calling the real_object methods
24279         that would cause dirty stuff to happen.
24281         * xaml.cpp (create_custom_element): don't call SetSurface here, it
24282         will cause problems if there's a parser error (since elements
24283         can/will be on the surface's dirty list after they're destroyed.)
24284         (default_create_element_instance): same.
24286 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24288         * playlist.cpp, playlist.h: A lot of fixes according to the tests.
24289         * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
24290           specify where in the stream we start and (playlists can specify a
24291           starting point which isn't in the beginning), and set the duration from
24292           the playlist (if the playlist has it).
24293         * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
24294           false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
24295           if the recursive playlist couldn't be replaced.
24297 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24299         * media.h: Added MediaElement::GetPlaylist.
24301 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24303         * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
24304           Remove Type::NPOBJ, it's not needed.
24306 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24308         * animation.cpp: Since now the clocks are synced we don't need to
24309         recursively check the states in the teardown on completed.
24311 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24313         * clock.cpp:
24314         * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
24315         manually to Stopped but not touching the state of children).
24317         We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
24318         set, we don't tick the ClockGroup no matter what the state is. Idle_hint
24319         is set when all children of ClockGroup have state != Active (ie. are
24320         filling). This can be seen as "optimization" -- not to dumbly process
24321         filling clocks which keep setting same value all the time (it creates
24322         insane recursion ie. in Showcase making it unusable). Silverlight seems
24323         to do something very similiar.
24325         Before this commit a same effect was achieved by the said "desyncing" --
24326         forcing the ClockGroup to Stopped. This approach however is a bit more
24327         clean. 
24329 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24331         * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
24333 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24335         * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
24337 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24339         * value.cpp: Remove a few warnings which might give false positives now.
24341 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24343         * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
24344           we're being unreffed on the main thread, if not, call unref_delayed.
24346 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24348         * runtime.cpp, runtime.h: Added a Surface::InMainThread.
24350 2008-04-01  Fernando Herrera  <fherrera@novell.com>
24352         * media.cpp: Remove the request position function when aborting the
24353         downloader.
24355 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24357         * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
24358           MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
24359           being called from the destructor, and if so, null out the element field
24360           of the MediaPlayer, so that we don't access a destructed media element.
24361           Add an async version of MediaPlayer::EnqueueFrames, so that the audio
24362           threads can request more data in a thread-safe manner.
24364 2008-04-01  Fernando Herrera  <fherrera@novell.com>
24366         * asf/asf.cpp:
24367         * pipeline.h: Support for live mms streams, that have packet_count as
24368         0 and return false for CanSeekToPts.
24370 2008-03-31  Chris Toshok  <toshok@ximian.com>
24372         * namescope.h, namescope.cpp: make no semblance of having a
24373         superior namescope implementation (where they get transported
24374         around with the subtree they're attached to when it's
24375         removed/re-added to the hierarchy.)  Instead follow MS's broken
24376         implementation where temporary namescopes are completely removed
24377         when merged into another one.
24379         * collection.h, collection.cpp (Collection::MergeNames): factor
24380         out some common code from Add, Insert, and SetVal. Also, deal with
24381         the fact that merging namescopes now really adds all the names to
24382         the parent namescope, so clear the old namescope.
24383         (Collection::SetVal): don't just unregister the old toplevel name,
24384         but all the names in the subtree.
24385         (Collection::Remove): same.
24386         (Collection::Clear): same.
24387         (Collection::UnregisterAllNamesRootedAt): override DO's method,
24388         recursing into all our children.
24389         (Collection::RegisterAllNamesRootedAt): same.
24390         (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
24391         UIElement::OnLoaded is called again, and <BeginStoryboard>
24392         elements restart when the subtree is added to the hierarchy again.
24394         * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
24395         override and forward onto real_object.
24396         (Control::RegisterAllNamesRootedAt): same.
24397         
24398         * dependencyobject.cpp (DependencyObject::ClearValue): add a
24399         parameter to allow us to specify *not* to notify listeners of the
24400         property change.  we do this with the NameScope property, which
24401         noone should be listening too.  It was causing a tremendous
24402         performance hit when merging a lot of namescopes (as we do in
24403         inkStylusPointCount.htm)
24404         (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
24405         removed from the hierarchy, we need to unregister all the names
24406         beneath it.
24407         (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
24408         added to the hierarchy, if it doesn't have a temporary
24409         namescope (in which case we just merge it).
24411 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24413         * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
24414           MemorySource owns the memory or not (if it will be freed upon
24415           destruction or not).
24417 2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
24419         * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
24420         for-loop would only use every other point as a starting point for
24421         a segment. E.g. if you had points a, b, c, d and e - the code only
24422         checked segments ab, cd, and e when it should have been checking
24423         ab, bc, cd, and de.
24425 2008-03-31  Fernando Herrera  <fherrera@novell.com>
24427         * downloader.cpp: Check if aborted before cheking for requested
24428         position.
24430 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24432         * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
24433           ProgressiveSource.
24434         * playlist.cpp: Updated according to pipeline changes.
24435         * mplayer.h: Fix SetState to not overwrite current bits, only current state.
24436         * media.h, media.cpp: Rework buffering progress to use the available time of
24437           media available (pts) instead of doing some funny math on file
24438           positions.
24439         * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
24441 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24443         * animation.cpp: Don't Stop the Storyboard root_clock before begining
24444         the Storyboard again, just silently tear it down.
24446         Calling Stop resets the property values to base which is something we
24447         don't want. When Begin () is called on Sb in SL, the last animated
24448         values are used. 
24450 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24452         * animation.cpp:
24453         * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
24454         works similar to Teardown but doesn't destroy the clock/animation
24455         hierarchy. We need this hierarchy to ie. reset prop values to base when
24456         Storyboard::Stop is called manually. 
24458         When Storyboard is completed, call DetachClockGroupFromParent (if not
24459         Teardown). Otherwise the Storyboard will ghostly change state with parent 
24460         state changes.
24462 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24464         * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
24465         to check for NULL and report stopped == true when both ClockGroup state
24466         is Stopped and all children are Stopped. 
24468         To be honest, this never currently reports Stopped == true as we do
24469         intentional state desync when storyboard reaches end -- setting the
24470         ClockGroup state to Stopped but keeping the children in Active/Filling.
24471         This *has* to go away.
24473 2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24475         * src.mdp: Updated.
24477 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
24479         * utils.cpp (TextStream::Read): Better handling of iconv() failure
24480         cases.
24482 2008-03-28  Chris Toshok  <toshok@ximian.com>
24484         * animation.cpp, animation.h: remove Storyboard::FindSurface -
24485         EventObject::GetSurface() always returns the right thing.
24486         Override SetSurface to check whether we're being detached from or
24487         attached to a surface, and pause or resume the clock in response.
24488         This fixes some issues in storyboard_EnterLeaveSemantics.
24490 2008-03-28  Chris Toshok  <toshok@ximian.com>
24492         * dependencyobject.h,
24493         dependencyobject.cpp (DependencyObject::SetSurface): new method,
24494         set the surface for all our DependencyObject subclassed property
24495         values.
24497         * collection.h, collection.cpp (Collection::Add): SetSurface work.
24498         (Collection::Insert): same.
24499         (Collection::SetVal): same.
24500         (Collection::Remove): same.
24501         (Collection::RemoveAt): same.
24502         (Collection::Clear): same.
24503         (Collection::SetSurface): new method, iterate over all children
24504         setting the surface.
24505         (VisualCollection): remove surface logic here.
24506         (VisualCollection::VisualAdded): same.
24507         (VisualCollection::VisualRemoved): same.
24509 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24511         * mplayer.cpp: Clear all queues after a seek has completed.
24513 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
24515         * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
24517         * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
24518         RemoveDir() rename.
24519         (create_unzipdir): Updated for MakeTempDir() rename.
24521         * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
24522         be more consistent with moonlight API naming convensions.
24523         (RemoveDir): Renamed from moon_rmdir().
24524         (CopyFileTo): Renamed from moon_copy_file()
24526 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24528         * debug.cpp: Fix warning.
24530 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24532         * clock.cpp: Fixing the clock repeat for duration-based
24533         RepeatBehavior. 
24534         
24535         Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
24536         passing now (same behavior as in SL).
24538 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24540         * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
24541         the bound decrease the repeat_count no matter what (if auto-reversed or
24542         not). This makes the auto-reversed storyboard work.
24544         Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
24545         is clock14.xaml.
24547 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24549         * animation.cpp: Teardown the storyboard in Completed only if the root
24550         clock is stopped AND all the children are stopped too. After teardown we
24551         loose the ability to reset-back the values and Completed is
24552         fired always, even if the clock is filling (a filling clock should reset
24553         on Stop).
24554         
24555         This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
24556         the popular methodology of beginning a filling Storyboard on MouseEnter
24557         and stopping it on MouseLeave.
24559 2008-03-27  Michael Dominic K.  <mdk@mdk.am>
24561         * runtime.cpp: Ignore the enter/leave crossing events coming as a 
24562         result of grab/press started/finished.
24564 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24566         * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
24567           MediaPlayer changes.
24568         * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
24569           private, and add public accessors when required. Remove all boolean
24570           fields and add a single bit/state field with its corresponding enum and
24571           public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
24572           no longer used. Removed unused defines. Made video and audio structures
24573           nested inside MediaPlayer instead of pointers (and queue inside
24574           video/audio), avoids pointer accesses and additional malloc/frees, since
24575           they were always created anyways. Don't seek to anywhere in Stop if
24576           we're stopping because we're closing, since it may cause crashes if
24577           we're closing because the MediaElement is being destructed (it may cause
24578           the MediaElement to be resurrected). Made public methods private
24579           whenever possible.
24581 2008-03-28  Fernando Herrera  <fherrera@novell.com>
24583         * asf/asf.cpp: Use the pts == 0 optimization before trying to
24584         SeekToPts.
24586         * downloader.cpp:
24587         * downloader.h: Add functions to allow request a remote postition.
24589         * media.cpp:
24590         * media.h:
24591         * pipeline.cpp:
24592         * pipeline.h: Implement SeekToPts for mms:// sources.
24594 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24595         
24596         * dependencyobject.h: Detect an unrecoverable error condition with
24597           refcounting (reffing an object with refcount of 0), and abort instead of
24598           crashing randomly and insecurely later on.
24600 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24602         * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
24604 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
24606         * downloader.cpp (Downloader::GetResponseText): Use the new
24607         TextStream class.
24609         * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
24610         reversed.
24612         * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
24613         sure to exit the loop ;-)
24615 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
24617         * xaml.cpp (xaml_create_from_file): Use the new TextStream class
24618         instead of doing things the hard way. Might be more performant,
24619         definitely won't malloc/free nearly as much. Also fixed a bug
24620         where leading lwsp might be larger than our read buffer.
24622         * utils.cpp (TextStream): New class for reading text input
24623         streams, converting them to UTF-8 as they are read.
24625         * downloader.cpp (Downloader::Send): Handle the case where the
24626         attached surface is NULL.
24627         (Downloader::GetResponseText): Handle zero-length files. Also,
24628         nul-terminate the returned buffer (which is now a char* rather
24629         than a void*) since it is clear that the javascript expects to be
24630         able to use this value as a string buffer.
24632 2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24633         
24634         * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
24635           requested to play audio. Don't hold the lock when polling.
24637 2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
24639         * downloader.cpp (Downloader::SendInternal): New method that is
24640         basically the same as the old ::Send().
24641         (Downloader::Send): Queue the SendInternal() call via
24642         TimeManager's TickCall API.
24644 2008-03-26  Chris Toshok  <toshok@ximian.com>
24646         * dependencyobject.h, dependencyobject.cpp (class EventObject):
24647         add RemoveMatchingHandlers variants that let you pass in a
24648         predicate to test event handlers with.
24650 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24652         * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
24653           changes.  Added a MemoryStream.
24655         * media.cpp: Updated according to API changes.
24657 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24659         * mplayer.cpp, mplayer.h: Add a new state to the audio:
24660           WaitingForData, in which case we don't poll on that audio
24661           node (since the hardware will just tell us it's ready to recieve
24662           data). Fixes audio using 100% cpu after when it runs out of
24663           data (either because of network hiccup or the stream finished).
24665 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24667         * pipeline.cpp, mplayer.cpp, pipeline.h: Made
24668           IMediaStream::selected private and add accessors.
24670 2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
24672         * shape.h:
24673         * shape.cpp: set the dash caps for all the shapes, draw start/end caps
24674         on line and polylines.
24676 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24678         * mplayer.cpp: Remove unused fields.
24680 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24682         * debug.cpp: Correctly compute base addresses of libraries, and use a
24683           thread-safe version of strtok.
24685 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24687         * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
24688           - it's now necessary to explicitly disable it in order to get rid of it
24689           instead of relying on a default flag to have the right value in order to
24690           get it. Makes video work with mopen again.
24692 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24694         * pipeline.cpp: Fix a crash.
24696 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24698         * mplayer.cpp: Remove Instance (), it's redundant.
24699         * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
24700           everything in the audio player with one semaphore, it simplifies things
24701           and removes a couple of problems helgrind found.
24702         * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
24703           audio player as well. Use delayed unreffing in destructors which may be
24704           called on worker threads.
24706 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24708         * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
24709         * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
24710           thread-safe and making it thread-safe isn't worth it. Also use a pthread
24711           mutex instead of a glib mutex, since helgrind reports a lot of false
24712           positives for glib mutexes. Hold the mutex for the smallest amount of
24713           time possible, making it unnecessary to use a recursive mutex.
24715 2008-03-26  Michael Dominic K.  <mdk@mdk.am>
24717         * shape.cpp: Reverting the clip changes, it was bolox.
24719 2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
24721         * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
24722         the assert - it was only needed during implementation to make sure
24723         the bsearch worked correctly.
24724         (Mp3FrameReader::Seek): Same.
24726 2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24728         * media.cpp: Don't access any TimeManager instance from another thread, just
24729           call the static TimeManager::InvokeOnMainThread.
24731 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
24733         * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
24734         if Width/Height was specified. Fixes a bogus warning about infinity
24735         transformations.
24737 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
24739         * src/shape.cpp: When setting the clipping for the shape also include
24740         the transformations coming from stretching. This fixes
24741         test-shape-line-stretch3 test and the missing stripes on Silverlight
24742         showcase.
24744 2008-03-24  Chris Toshok  <toshok@ximian.com>
24746         * runtime.h (class Surface): add
24747         Surface::PropagateDirtyFlagToChildren.
24749         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
24750         duplicated code out of ProcessDownDirtyElements.
24752 2008-03-24  Chris Toshok  <toshok@ximian.com>
24754         * panel.cpp (Panel::FrontToBack): remove the tree walking
24755         code (where we walked up the hierarchy looking for cases where we
24756         shouldn't subtract.)  Instead, we always subtract if the local
24757         state says we can.  Instead of forcing all leaf elements to walk
24758         up to their parent panel, we assume they'll operate on local state
24759         as well, and give them a copy of the region to subtract their
24760         bounds from, instead of the real region.  We are sneaky.
24762         * uielement.cpp (UIElement::FrontToBack): Operate on our local
24763         state only, no walking up the tree.
24765 2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
24767         * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
24768         was seemingly getting layer 1 and layer 2 backwards.
24769         (mpeg_frame_length): Seems like we are never supposed to add 2
24770         bytes for 16bit crc?
24772         * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
24773         then don't bother applying kerning. Fixes 2 cases in
24774         LineBreakClasses.htm
24775         (TextLayout::LayoutWrap): Disable breaking after a
24776         G_UNICODE_BREAK_AFTER if we can break before the word as this
24777         seems to fix the last test case in LineBreakBasic1.htm
24778         (TextLayout::LayoutWrap): Reverted a fix that introduced a
24779         regression but didn't fix any known test cases.
24781 2008-03-21  Michael Dominic K.  <mdk@mdk.am>
24783         * src/runtime.cpp: When calling gdk_window_get_pointer in
24784         motion_notify_ to pop more hints actually use the results as they're
24785         more valid than x,y in the event passed. Without doing so, we're not
24786         getting the last mouse coords.
24788         Fixes the nasty problem that MouseEnter/Leave is not called once in a
24789         while.
24791 2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24793         * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
24794           MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
24795           with EventObject::GetSurface.
24797 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
24799         * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
24800         font hack for now.
24802         * text.cpp (deobfuscate_font): New helper function used by
24803         TextBlock and Glyphs.
24804         (TextBlock::DownloaderComplete): Check for obfuscated fonts.
24805         (Glyphs::DownloaderComplete): Same.
24807         * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
24808         GUID from a string.
24809         (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
24810         (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
24811         since we no longer get passed zip files. Instead of extracting
24812         fonts from a zip archive, we now index the fonts in the
24813         directory (if they haven't already been indexed) and then try to
24814         find the best matching font from the indexed fonts.
24815         (IndexFontDirectory): New function to index all fonts in a
24816         directory (and all subdirs).
24817         (TextFont::TextFont): Changed for other API changes.
24819 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
24821         * downloader.cpp (Downloader::IsDeobfuscated)
24822         (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
24823         Some new methods for replacing the original downloaded file with
24824         another tmp file that will need to be unlinked when the downloader
24825         is destroyed or a new file is requested.
24827         * utils.cpp (moon_copy_file): New convenience function.
24829 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
24831         * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
24832         and unzipped state variables. Get rid of part_hash, no longer
24833         needed.
24834         (Downloader::CleanupUnzipDir): New method to cleanup the files
24835         extracted from any zip files we downloaded.
24836         (Downloader): Call CleanupUnzipDir ().
24837         (Downloader::GetDownloadedFile): New method that gets the original
24838         untouched downloaded file path.
24839         (Downloader::DownloadedFileIsZipped): New method to check to see
24840         if the downloaded file is a zip archive.
24841         (Downloader::GetDownloadedFilePart): A new method that replaces
24842         the old GetResponseFile() API, behaves the same as the old API.
24843         (Downloader::GetUnzippedPath): New method to get the unzip
24844         directory path (and unzip the downloaded file if it hasn't already
24845         been unzipped).
24846         (Downloader::Open): Cleanup any extracted zip files.
24848         * utils.cpp (moon_rmdir): New convenience function.
24850 2008-03-20  Larry Ewing  <lewing@novell.com>
24852         * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
24853         the surface first so that the changes to the properties cause
24854         invalidations.
24856 2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24858         * src.mdp: Added new files.
24860 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24862         * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
24864 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24866         * pipeline.h: Added two more error conditions.
24868 2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
24870         * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
24871         caching glyphs. Try to take full advantage of the pre-allocated
24872         glyphs array before clobbering previously loaded glyphs.
24874 2008-03-19  Michael Dominic K.  <mdk@mdk.am>
24876         * src/dependencyobject.cpp: Making the prop resolving a bit more
24877         gracefull (smart) in case of common mistakes. 
24879         Solves test-crash-gracefull-prop-resolving.xaml.
24881 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24883         * pipeline.cpp: We need to unlock the mutex before joining the
24884         thread. Fixes a dead-lock.
24886 2008-03-19  Geoff Norton  <gnorton@novell.com>
24888         * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
24889         repeated load.
24891 2008-03-19  Geoff Norton  <gnorton@novell.com>
24892         
24893         * yuv-converter.cpp:  More 64-bit fixes
24895 2008-03-19  Geoff Norton  <gnorton@novell.com>
24896         
24897         * yuv-converter.cpp:  Fix the test/cmp on x86-64
24899 2008-03-18  Geoff Norton  <gnorton@novell.com>
24901         * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
24902         CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
24903         gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
24904         clobbering (x)mm3 (green coefficient) when processing the high order
24905         pels.  I've reordered the method to remove some useless load/calc
24906         patterns that were there simply for readability and fixed the
24907         clobbering.
24908         
24909 2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
24911         * font.cpp (TextFontDescription::CreatePattern): Always return the
24912         original pattern.
24913         (TextFont::Load): No longer takes a fromFile argument.
24914         (TextFont::TextFont): Cache using the original pattern (which is
24915         what we really wanted to do originally, but were caching the
24916         "closest-match" pattern before which was wrong).
24917         (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
24918         FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
24919         wrapper API that is unnecessary.
24920         (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
24922 2008-03-18  Geoff Norton  <gnorton@novell.com>
24924         * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
24925         cache lines for the Y plane.
24926         
24927 2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
24929         * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
24930         * plugin-ffmpeg.h: Fix conditional swscale inclusion
24932 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
24934         * animation.cpp:
24935         * animation.h: Adding a new virtual method GetValueKind to Animation
24936         that returns the kind/type of values that given animation generates
24937         (doubles, points, etc.).
24939         Modyfying the HookupStorage to check if the animation type matches the
24940         type that the animated property expects. If it doesn't, bail out with a
24941         helpfull warning in the style of:
24943         "Ellipse.Fill property value type is 'Brush' but animation type is
24944         'Color'"
24946         This fixes a crash in test-crash-color-anim-on-solid.xaml and all
24947         crashes where we try to animate ie. a color property using doubles.
24949 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
24951         * animation.cpp: Even more smoothing for KeySpline.
24953 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
24955         * dependencyobject.cpp: Enabling back the inheritance test for property
24956         resolving but only when dealing with non-attached properties. 
24958 2008-03-17  Geoff Norton  <gnorton@novell.com>
24960         * Makefile.am:
24961         * pipeline-ffmpeg.cpp:
24962         * pipeline-ffmpeg.h:
24963         * swscale-converter.cpp:
24964         * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
24965         out to a seperate file so it can be included optionally in the build.
24967 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24969         * mplayer.cpp: Show error message, not only error number, upon thread
24970           creation failure.
24972 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24974         * playlist.cpp, playlist.h: Add a way to determine if the playlist was
24975           created to play a single file, or if it was created from an asx file
24976           (IsSingleFile).
24978 2008-03-17  Chris Toshok  <toshok@ximian.com>
24980         * dependencyobject.cpp (EventObject::EventObject): reorder things
24981         to quiet g++.
24983 2008-03-17  Geoff Norton  <gnorton@novell.com>
24985         * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
24986         for locals.  Use posix_memalign and share the instance for the 
24987         lifespan of the converter.
24988         
24989 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
24991         * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
24992         index argument, apparently FreeType2 always set face->face_index
24993         to 0 for these type fonts, so don't rely on it being accurate.
24994         (FontPack::CacheFileInfo): Pass the index value as an argument to
24995         FontPackFileFace's ctor.
24996         (TextFont::TextFont): Do hash lookups based on the matched
24997         pattern, not the original pattern passed in.
24999 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
25001         * text.h: Added #include "layout.h"
25003         * font.cpp: Removed font.cpp's layout logic which has been
25004         rewritten in layout.cpp.
25005         (TextFont::HasGlyph): It seems that Silverlight may wrap text
25006         differently depending on whether the glyph is in the font?
25008         * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
25010 2008-03-17  Geoff Norton  <gnorton@novell.com>
25012         * yuv-converter.cpp: Ensure that our pointer alignment checks are
25013         64-bit safe.
25015 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25017         * animation.cpp: Interpolate linearly between keyspline values. This
25018         fixes the jags in test-animation-slow-keyspline.xaml.
25020 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25022         * animation.cpp: Fixes to the way we generate the KeySpline values to be
25023         more smooth an precise.
25025 2008-03-17  Larry Ewing  <lewing@novell.com>
25027         * runtime.cpp: go ahead and invalidate the toplevel before
25028         cleaning everything up. remove the disconnect call in
25029         DestroyWidget, all the handlers should be ok with getting called
25030         on fullscreen or the normal widget.
25032 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25034         * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
25035         line breaking logic.
25037 2008-03-14  Geoff Norton  <gnorton@novell.com>
25038         
25039         * yuv-converter.cpp: Remove some dead code.
25041 2008-03-14  Geoff Norton  <gnorton@novell.com>
25043         * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
25044         bounary.  Each pel will expand to 4 bytes.  Since we process 16
25045         pels at a time in SSE2 we need 64 output bytes per iteration.
25047         * yuv-converter.cpp: Remove the rest of the unaligned move/stores
25049 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25051         * xaml.cpp: (flush_char_data) free data inside GString since the
25052         Value constructed around it creates it's own copy.
25054 2008-03-14  Geoff Norton  <gnorton@novell.com>
25056         * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
25057         to get a 16byte alignment for SSE2.
25058         * yuv-converter.cpp: Remove most of our unaligned load/stores.
25060 2008-03-14  Larry Ewing  <lewing@novell.com>
25062         * collection.h:
25063         * error.h:     
25064         * eventargs.h, enventargs.cpp:
25065         * type.h, type.cpp: make EventArgs a subclass of DependencyObject
25066         and all that entails.  Still need to look over the properties.
25068         * runtime.cpp, runtime.h: expose EmitError for now.
25069         
25070 2008-03-14  Larry Ewing  <lewing@novell.com>
25072         * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
25073         with a a 16bit alignment for the yuv converter.
25075 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25077         * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
25078         own copy of the message.
25080 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25082         * font.cpp (TextRun::TextRun): Can't drop non-printable chars
25083         because soft-hyphen is apparently non-printable.
25085 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25087         * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
25088         happen now if the glyph does not exist in the font).
25089         (Glyphs::Render): Same.
25091         * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
25092         which takes a unichar and index. This is now the main
25093         implementation that the other GetGlyphInfo() and
25094         GetGlyphInfoByIndex() use. The glyph table is now indexed by index
25095         rather than unichar.
25097 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25099         * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
25100         without a specified index, these are ok.
25102 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25104         * brush.cpp: In ImageBrush, if the image has not been downloaded
25105         yet, draw nothing like SL does -- instead of the grayish shadow.
25107 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25109         * dependencyobject.cpp: Check the types of objects when
25110         resolving_property_paths and some more verbosity to the error
25111         reporting. Now test-crash-non-existing-animation-target-prop3
25112         fails with the proper warning.
25114         Also, terminate first on first error found.
25116 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25118         * dependencyobject.cpp: Even more verbose error reporting in the
25119         resolve_property_path ().
25121 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25123         * animation.cpp: Making the warning report proper error when can't
25124         resolve property on object. Now we're getting:
25126         "No property named
25127         (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
25128         on object ball, which has type Ellipse!"
25130 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25132         * animation.cpp: Check correctly if we have object and property
25133         before trying to hookup storage.
25135         Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
25136         but the warning message is still incorrect:
25138                 "No object named ball!"
25140         The object named "ball" exists but it doesn't have the requested
25141         property.
25143 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25145         * animation.cpp: Changing few printf's to g_warnings.
25147 2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
25149         * shape.cpp: Deal with different [start|end|dash] caps for lines 
25150         and polylines.
25152 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25154         * mplayer.cpp: Comment out printf.
25156 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25158         * mplayer.cpp: AudioNode::Play: property calculate the delay between the
25159           play position in the hardware and the pts we just sent to alsa, and
25160           subtract it from that pts.
25162 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
25164         * clock.cpp: use a monotonic clock if available to avoid issues with
25165         the system time changing.
25167 2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
25169         * layout.cpp (TextRun::TextRun): Don't drop non-printable
25170         chars... somehow soft-hyphen (0xAD) is non-printable according to
25171         glib and so breaks the LineBreakBasic1.htm test.
25172         (TextLayout::LayoutNoWrap): Keep appending words to the line until
25173         a line ends beyond max_width, we don't care where it begins (it
25174         could begin way beyond max_width for all we care).
25176 2008-03-13  Chris Toshok  <toshok@ximian.com>
25178         * text.cpp (~Glyphs): don't unref the fill, since we don't take a
25179         ref on it.
25181 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25183         * mplayer.cpp: Make this build on SLED until I find a proper workaround.
25185 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25187         * media.cpp: Update according to MediaPlayer changes.
25189 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25191         * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
25192         thread. Fixes #326902.
25194 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25196         * Makefile.am: Set our G_LOG_DOMAIN.
25198 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25200         * xaml.cpp: default_create_element_instance: Set the surface as soon as
25201           possible.
25203 2008-03-13  Michael Dominic K.  <mdk@mdk.am>
25205         * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
25206         behavior. When getting the keyframe for time additionally crawl back (if
25207         needed) to find the last non-null keyframe and non-null previous
25208         keyframe. By doing so we silently ignore the frames without values set
25209         and don't crash on nullable types.
25211         Fixes the crash in AnimationMatrix2.html/xaml and in the
25212         test-animation-null-keyframe.xaml test.
25214         Remving the XXX warnings about nullabled types from file since they
25215         don't apply anymore.
25217 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25219         * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
25220           Visual, we're already storing the surface in the EventObject.
25221         * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
25222           and comment out the warning, since with the current code it's entirely
25223           possible to unref a dependecyobject with no surface.
25225 2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
25227         * brush.cpp: compute relative transform as it's done in SL. We used to
25228         derelativize transform to match the absolute ones. Now we map the brush
25229         to a 1x1 square, apply the transform, and unmap back. It simplify the 
25230         computation a lot too. Fixes bnc #354892 and a bad gradient in 
25231         brushes.xaml.
25233 2008-03-12  Chris Toshok  <toshok@ximian.com>
25235         * media.cpp (expand_rgb_to_argb): use a different codepath if the
25236         rowstride isn't padded out to be divisible by 4 (or else we read
25237         off the end by a byte).
25239 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25241         * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
25243 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25245         * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
25246         * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
25247           pipeline correctly removes registered infos upon shutdown, so if we're
25248           initialized again we should also register again.
25249         * runtime.cpp: Call Media::Shutdown do shut down the media threads before
25250           doing anything else.
25252 2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
25254         * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
25256         * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
25257         TextRun's, if the Run contains \n's, break the text into
25258         non-linebreak and linebreak TextRun elements. Allows the
25259         TextLayout::Layout() logic to be simplified considerably.
25261 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25263         * dependencyobject.cpp: DependencyObject: Initialize our surface field to
25264           NULL.
25266 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25268         * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
25269           reporting so that the errors can easily be bubbled up the pipeline. Add
25270           a 'selected' field to IMediaStream, whether the media player is using
25271           that stream or not.
25272         * error.h: Add a MediaErrorEventArgs class.
25274 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25276         * pipeline.cpp: Propagate the surface from the media element to the media.
25278 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25280         * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
25281           IMediaStream, indicates whether the stream is being played or not.
25283 2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
25285         * dependencyobject.cpp: Add NULL check in method 
25286         RemovePropertyChangeListener since a bad XAML input can cause a
25287         NULL entry in the list.
25289 2008-03-12  Michael Dominic K.  <mdk@mdk.am>
25291         * runtime.cpp:
25292         * runtime.h:
25293         * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
25295 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25297         * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
25298           don't crash, print an error message. Dup all strings put into
25299           namespace_map, and free them all upon its destruction.
25301 2008-03-11  Larry Ewing  <lewing@novell.com>
25302         
25303         * collection.cpp (VisualCollection::VisualAdded): make sure we set
25304         the surface as the first step, dirty processing depends on it.
25305         Fixes OM_RemoveClearRemoveAt.htm regression.
25307 2008-03-11  Larry Ewing  <lewing@novell.com>
25309         * canvas.h:
25310         * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
25311         and Left when we are toplevel so that we can recompute our
25312         transform.
25314         * uielement.cpp: if we don't have a parent call GetTransformFor on
25315         ourself so that Top and Left are taken into account on toplevel
25316         canvases.  Fixes test-canvas-toplevel.xaml
25318 2008-03-11  Chris Toshok  <toshok@ximian.com>
25320         * clock.h, clock.cpp: a few changes, the most important
25321         being (ifdefed for now) code to put the timemanager to sleep when
25322         it's not needed for animations, rendering, or tick calls.  To do
25323         this we need a couple of changes to the clock code.  1) propagate
25324         the time_manager out to all clocks, so we can force it to tick the
25325         clock hierarchy the first time whenever a storyboard is started.
25326         2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
25327         in need of another tick."  Do the same for the tick call stuff,
25328         where the bool return value means "we have more tick calls
25329         pending."  Also, add a couple of methods to the
25330         TimeManager (NeedRedraw, NeedClockTick) which will start up the
25331         timemanager if it's asleep, and set the proper flag so it'll do
25332         the right work on the next tick.
25335         * uielement.cpp: notify the timemanager that we have a redraw to
25336         process.
25337         
25338         * runtime.cpp (Surface::realized_callback): tell the time manager
25339         to redraw us to get the process moving.
25341 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25343         * xaml.cpp: Work around the fact that it's not always safe to 
25344         call some expat functions, like XML_GetCurrentLineNumber, if the
25345         parsing failed early.
25347 2008-03-11  Chris Toshok  <toshok@ximian.com>
25349         * namescope.h, namescope.cpp: switch from reffing the objects to
25350         using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
25351         cycle with its namescope.  Also, short circuit out if we're
25352         registering the same object twice.  keeps us from having too many
25353         DestroyedEvents (since RemoveHandler only removes one).
25355         * dependencyobject.h, dependencyobject.cpp: move
25356         GetSurface/SetSurface to EventObject, and add unref_delayed as a
25357         method.  If the event object has a surface associated with it, add
25358         it to the surface's pending list of unrefs.  otherwise warn us and
25359         add it to the global list.  The warnings should be fixed as the
25360         global list really should go away.
25362         Also, before we free a value, make sure to remove our handler and
25363         unset the closure.
25365         Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
25366         this.  So if you compile with OBJECT_TRACKING on, nothing new
25367         happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
25368         variable to the id of the object you want to track.  Makes the
25369         turnaround time a little quicker.
25371         shift some things around in the header file while I'm making this
25372         change.
25374         * runtime.h, runtime.cpp: move some more methods to the .cpp from
25375         the .h, and also add the per-surface pending unrefs list.  This is
25376         basically a c&p of the global list from dependency.cpp.
25378         * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
25379         using EventObject's.
25380         
25381 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25383         * xaml.cpp: Add NULL check in dependency_object_add_child since
25384         parent->parent->item may be NULL in malformed XAML files.
25386 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25388         * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
25389           EstimatePtsPosition and remove the estimate parameter, it's never used.
25391 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25393         * runtime.cpp: No need to scream in printfs.
25395 2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
25397         * font.cpp (TextLayout::Layout): More fixes, this is getting
25398         gross.
25400 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25402         * xaml.cpp: Avoid crashing if the PML does not start with a 
25403         M(ove) instruction.
25405 2008-03-11  Michael Dominic K.  <mdk@mdk.am>
25407         * src/: Moving implementations from .h to .cpp, leaving only
25408         setters/getters + simple constructors in .h.
25410 2008-03-11  Larry Ewing  <lewing@novell.com>
25412         * xaml.cpp (dependency_object_set_property): throw an error if we
25413         get here without a DependencyObject.  Fixes
25414         test-property-parsing.xaml
25416 2008-03-10  Larry Ewing  <lewing@novell.com>
25418         * panel.cpp:
25419         * uielement.cpp: add more checks to the parent tree.
25421 2008-03-10  Chris Toshok  <toshok@ximian.com>
25423         * dependencyobject.cpp (~DependencyObject): use
25424         g_hash_table_foreach_remove, so the dtor of one value can't access
25425         an already destroyed DO from another value.
25427 2008-03-10  Chris Toshok  <toshok@ximian.com>
25429         * namescope.cpp: don't explicitly unref the object when removing
25430         it.  instead use base_unref as the value-dtor for the GHashTable.
25431         This will cause unrefs when the hash table is destroyed in the
25432         dtor (a case we were missing before.)
25434         * collection.h, collection.cpp (class Collection): factor out the
25435         body of Collection::Clear into a non-virtual method that we can
25436         call from the dtor.
25438 2008-03-10  Larry Ewing  <lewing@novell.com>
25440         * uielement.cpp:
25441         * panel.cpp: make sure we don't subtract the region unless non of
25442         our anscestors have a slip mask.  This should be implemented in a
25443         more efficient way.
25445 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25447         * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
25449 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25451         * dependencyobject.h, dependencyobject.cpp: Enable object counting when
25452           DEBUG is defined.
25453         * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
25454         * pipeline.cpp: Remove printfs.
25456 2008-03-10  Larry Ewing  <lewing@novell.com>
25458         * geometry.h:
25459         * geometry.cpp: make IsBuilt check for actual path data as well
25460         then use it everywhere we need it.  Invalidate the path if the
25461         figures change.  Fixes test-transform-clip.htm.
25463 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25465         * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
25467 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25469         * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
25470           #368461.
25472 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25474         * media.cpp: Update according to pipeline changes. TryOpen: our
25475           downloaded_file field may change when we call MediaOpened, so save a
25476           local copy before calling MediaOpened. Unref our playlist upon
25477           destruction, and 
25478         * mplayer.cpp: Update according to changes in the pipeline.
25479         * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
25480           rest aren't used. Make the remaining method take the stream as a
25481           parameter, and the resulting frame will be put in the closure. Also
25482           handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
25483           case just try again with the next frame. Make MediaWork ref/unref the
25484           fields that can be ref counted. 
25485         
25486 2008-03-10  Chris Toshok  <toshok@ximian.com>
25488         [ Fixes bug #368460 ]
25489         * collection.cpp (Collection::SetVal): make sure to unregister the
25490         name of the object(s) we remove from the collection.
25491         (Collection::Remove): same.
25492         (Collection::RemoveAt): same.
25493         (Collection::Clear): same.
25495         * namescope.cpp (NameScope::RegisterName): ref the object.
25496         (NameScope::UnregisterName): unref the object.
25498 2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
25500         * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
25501         Silverlights TextWrapping="Wrap" bug where it doesn't ever break
25502         the last word.
25504 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25506         * src.mdp: Updated.
25508 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25510         * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
25511         * runtime.cpp: Use GetRefCount, not refcount.
25513 2008-03-10  Chris Toshok  <toshok@ximian.com>
25515         * runtime.h, runtime.cpp: add surface_get_time_manager.
25517         * downloader.h, downloader.cpp: add downloader_get_surface.
25518         
25519 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25521         * runtime.cpp:
25522         * runtime.h:
25523         * shape.cpp: Making the shape-caching a runtime parameter
25524         (shapecache=yes). Turned off right now.
25526 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25528         * shape.cpp: Tiny refactoring to the surface-size calculation code.
25530 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25532         * runtime.h:
25533         * shape.cpp: Adding functionality to limit the amount of caching
25534         happening on one surface. Currently set to ~6mb. 
25536 2008-03-09  Larry Ewing  <lewing@novell.com>
25538         * mplayer.cpp: fix another place that used the wrong stride.
25540 2008-03-09  Geoff Norton  <gnorton@novell.com>
25542         * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
25543         instrucitons.
25545 2008-03-09  Geoff Norton  <gnorton@novell.com>
25547         * yuv-converter.cpp: Detect the CPU features at runtime.  We
25548         should now be able to distribute a 32-bit SSE2/MMX build to
25549         non SSE2/MMX machines
25551 2008-03-09  Geoff Norton  <gnorton@novell.com>
25553         * yuv-converter.cpp: Implement runtime fallbacks in the Convert
25554         function (TODO: Still need to runtime detect SSE2/MMX) 
25556 2008-03-09  Larry Ewing  <lewing@novell.com>
25558         * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
25560 2008-03-09  Larry Ewing  <lewing@novell.com>
25562         * mplayer.cpp (MediaPlayer::Open): use the proper stride
25563         calculation functions.
25565 2008-03-08  Geoff Norton  <gnorton@novell.com>
25567         * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
25568         codepath along with some code cleanup.  Still some more cleanup
25569         to do for runtime detection of CPU features.
25571 2008-03-08  Geoff Norton  <gnorton@novell.com>
25573         * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
25574         These coefficients are far more sane now and our lum change is 
25575         reflected properly.
25577 2008-03-08  Chris Toshok  <toshok@ximian.com>
25579         * clock.cpp (TimeManager::SourceTick): larry gets credit for
25580         spotting this problem and suggesting the fix.  remove the
25581         hysteresis code, and *always* set a new timeout, based on what our
25582         idea of the timeout and the amount of time we spent rendering the
25583         previous frame.  This smooths things out immensely, removes (for
25584         me) the animation stutters induced by audio in sprawl, and results
25585         in fewer dropped frames.
25587 2008-03-08  Geoff Norton  <gnorton@novell.com>
25589         * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
25590         and b was pulling the wrong l/h value.
25592 2008-03-08  Chris Toshok  <toshok@ximian.com>
25594         * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
25595         accessing dob->refcount.
25596         (Value::CreateUnref): same.
25598         * dependencyobject.h, dependency.cpp (class EventObject): reorder
25599         this class definition so that we don't have multiple
25600         public/protected/private areas.  confusing as hell :) Also, move
25601         the implementations of the non-performance critical things into
25602         the .cpp file, as they were making the .h rather cluttered (ctor,
25603         dtor, weak ref/unref.)  Lastly, make almost everything private
25604         instead of public (most importantly the refcount.)
25606         * debug.h, debug.cpp: random code cleanup.  we don't need to be
25607         concerned with adding some additional stack methods to the plugin
25608         in the DEBUG case, so go ahead and just use DEBUG here instead of
25609         STACK_DEBUG.
25611 2008-03-08  Chris Toshok  <toshok@ximian.com>
25613         * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
25614         extern guint32 moonlight_flags.
25616         * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
25617         converter, otherwise use ffmpeg.
25619         * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
25620         flags, and (my god) put the extern moonlight_flags here.
25622         * runtime.cpp: add yuv converter options. use
25623         MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
25624         "converter=ffmpeg".
25626 2008-03-08  Geoff Norton  <gnorton@novell.com>
25628         * yuv-converter.cpp: Clear the mmx state when we're done
25629         processing.  Fixes most problems on x86_32.
25631 2008-03-08  Geoff Norton  <gnorton@novell.com>
25633         * pipeline.cpp: Disable YUV converter, its crashing on x86_32
25634         currently.
25636 2008-03-08  Geoff Norton  <gnorton@novell.com>
25637         
25638         * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
25639         * pipeline.cpp: Register YUV converter here.
25641 2008-03-08  Geoff Norton  <gnorton@novell.com>
25643         * yuv-converter.cpp:  Remove some code duplication and refactor
25644         to support register starved implementations.
25646 2008-03-08  Geoff Norton  <gnorton@novell.com>
25648         * Makefile.am: Add yuv-converter.cpp to the build
25649         * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
25650         libswscale.
25651         * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
25653 2008-03-08  Chris Toshok  <toshok@ximian.com>
25655         * clock.h, clock.cpp, animation.cpp: a few clock related changes.
25657         1. Revert the change that uses "forward" to tell if we're moving
25658         forward or not.  This isn't the only indicator, as a parent clock
25659         might be ticking backward, so we really do need to use "our_delta"
25661         2. Also, we need to not clamp the time of the clock (on either
25662         end) when we're filling, as if the parent's duration is longer
25663         than ours and they autoreverse, there needs to be some padding in
25664         the reverse direction before we start again.
25666         3. Only call ComputeBeginTime() on a newly created clock if the
25667         timeline has a begin time specified.  Otherwise, use
25668         BeginOnTick/GetBeginOnTick to make it begin on the next tick.
25669         This fixes the chess animation breakage.  The problem was caused
25670         by us computing the begin time immediately in Storyboard::Begin,
25671         which would calculate the clock's begin time relative to the
25672         *previous* tick.  on the next tick, the clock was almost always at
25673         1.0 progress, which caused the animations to skip directly to the
25674         end.
25676 2008-03-08  Chris Toshok  <toshok@ximian.com>
25678         * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
25679         dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
25680         assert in a plugin (even if people are running a debug build it's
25681         not exactly nice to bring down their browser.)
25683 2008-03-07  Chris Toshok  <toshok@ximian.com>
25685         * value.cpp (Value::CreateUnrefPtr): don't assert here.
25686         (Value::CreateUnref): same.
25688 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25690         * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
25691           it's not initialized, print a warning and re-initialize it.
25693 2008-03-08  Fernando Herrera  <fherrera@novell.com>
25695         * pipeline.cpp:
25696         * playlist.cpp:
25697         * playlist.h: Add support for ASX2 playlist files returned by
25698         mediaservers when requesting a mmsh file over plain http. Fixes
25699         http://channel9.msdn.com.
25701 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25703         * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
25704           case-insensitively.
25706 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25708         * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
25709           derived classes protected.
25710         * media.cpp: Update according to pipeline changes. TryOpen: our
25711           downloaded_file field may change when we call MediaOpened, so save a
25712           local copy before calling MediaOpened.
25714 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25716         * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
25717         * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
25718           TimeManager instance to add the timeout to.
25720 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
25722         * downloader.cpp: Fix access to Status from JScript.
25724 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25726         * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
25727           more frames.
25729 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
25731         * brush.cpp: Fix default value for ColorInterpolationMode (js
25732         unit tests)
25733         * parsertest.cpp: Adapt to API change.
25734         * xaml.cpp|h: Change value_from_str[_with_typename] to return a
25735         bool since NULL can be a valid Value in some cases (e.g. empty
25736         stuff that should not reset the DO default values).
25738 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25740         * mplayer.cpp: Add a null check before accessing any time managers.
25742 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25744         * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
25745           accessing the field.
25746         * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
25747           the field. Update according to pipeline changes.
25748         * mplayer.cpp, mplayer.h: Update according to pipeline changes.
25749         * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
25750           can be ref counted. Make MediaClosure more intelligent by ref/unreffing
25751           the context and media fields. All variations of MediaWork has a closure,
25752           so move the closure field out of the union. This simplifies
25753           Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
25754           not cause any reads/seeks which may block. Remove SetQueueCallback, the
25755           request takes a closure now. Implement an ASXDemuxer to read ASX files.
25756         * sizes.cpp: Updated.
25757         * playlist.h, playlist.cpp: First part of the new playlist support.
25759 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25761         * dependencyobject.cpp: Make the output in EventObject::Track print
25762           atomically. Really avoids a lot of confusion if several threads are
25763           printfing at the same time.
25765 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25767         * debug.cpp: Add a couple of null checks.
25769 2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
25771         * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
25772         (TextLayout::Layout): Don't include trailing lwsp in the line
25773         width calculation unless it is the last line.
25774         (TextLayout::Layout): Don't include trailing empty lines in the
25775         height calculation.
25777 2008-03-06  Chris Toshok  <toshok@ximian.com>
25779         * clock.h, clock.cpp: some changes to make TimeManager a
25780         per-surface item, instead of a singleton/global.  The time manager
25781         creates a root clock group, just like Surface used to, which is
25782         the parent of all storyboards for a surface.
25783         
25784         * dirty.h, dirty.cpp: remove the method prototypes and globals -
25785         switch everything to be Surface:: methods.
25786         
25787         * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
25788         for the root clock, and create a TimeManager instead.  Also, add
25789         the dirty methods/fields to Surface, even though the
25790         implementation still lives in dirty.cpp.  Also, call
25791         toplevel->SetSurface(NULL) early in our dtor so that elements can
25792         react before, e.g., the time manager has been destroyed.
25794         * media.h, media.cpp: use the surface's TimeManager instead of a
25795         global one.  Also override SetSurface so we can tell if we're
25796         losing access to it, and remove our timeout accordingly.
25798         * mplayer.cpp: use the media element's TimeManager.
25800         * visual.h, visual.cpp: add GetTimeManager() method, which just
25801         does GetSurface()->GetTimeManager().
25803         * dependencyobject.cpp (base_unref_delayed): as much as I hate to
25804         do this, use a g_idle instead of a tick call here, since we have
25805         no access to the surface.
25807         * animation.cpp (Storyboard::Begin): the surface no longer has the
25808         root clock group, the surface's TimeManager does.
25810         * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
25811         our children.
25813         * uielement.h, uielement.cpp: translate global dirty calls into
25814         surface calls, and override SetSurface to remove ourselves from
25815         the dirty list if we're losing our surface.
25817         * eventargs.cpp: translate global dirty calls into surface calls.
25818         
25819 2008-03-06  Michael Dominic K.  <mdk@mdk.am>
25821         * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
25822         child clocks. Othewise children always get a small delta and keep
25823         going beyond the parent Duration bounds. Fixes the contrained
25824         storyboard examples.
25826         Also making the forward/backward ComputeNewTime behavior depend on
25827         'forward' instead of out_delta (which can be 0 if hitting bounds).
25829 2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
25831         * transform.cpp: Fix Matrix default values to match identity 
25832         matrix (and fix one js unit test).
25834 2008-03-05  Larry Ewing  <lewing@novell.com>
25836         * shape.cpp: drop the code that checks stretch when building the
25837         paths for polyline and polygon.  Fix the condition for translation.
25839 2008-03-05  Larry Ewing  <lewing@novell.com>
25841         * shape.h:
25842         * shape.cpp: refactor the stretch code slightly and fix the
25843         original stretch tests (that passed the harness but are clearly
25844         wrong).
25846 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25848         * media.h: Made destructors in objects deriving from EventObject protected,
25849           preventing 'delete obj' and stack-allocation for these objects.
25850         
25851         * playlist.cpp: Can't delete downloaders anymore, unref it.
25853 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25855         * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
25856           dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
25857           namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
25858           trigger.h, uielement.h, visual.h: Made destructors in objects deriving
25859           from EventObject protected, preventing 'delete obj' and stack-allocation
25860           for these objects.
25861         * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
25862         * dirty.h: Added header.
25864 2008-03-05  Chris Toshok  <toshok@ximian.com>
25866         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
25867         front-to-back rendering the default.
25869 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25871         * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
25872           trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
25873           media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
25874           runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
25875           calldata instead of a gpointer.
25876         * error.h: Added EventArgs, a base class for all *EventArgs.
25877         * collection.h: Make ChangeEventArgs inherit from EventArgs.
25878         * uielement.cpp: Create all *EventArgs on the heap and simply the code a
25879           bit.
25880         * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
25881         * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
25882           *EventArgs. Added MarkerReachedEventArgs.
25883         * brush.cpp: Updated event handling to take an EventArgs* calldata instead
25884           of a gpointer. ~ImageBrush: don't delete, unref.
25886 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25888         * value.cpp: Fix warning.
25890 2008-03-05  Larry Ewing  <lewing@novell.com>
25892         * shape.cpp: Fix line, polyline and polygon to apply stretches
25893         properly (modulo pesimistic shape bounds bugs).  Mostly fixes
25894         test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
25895         and test-shape-polygon-stretch2.xaml. 
25897         * shape.h: move stretch transform out of Path and into Shape.
25899         * stylus.h:
25900         * stylus.cpp: include the strokes in the subtree bounds so that we
25901         will get invalidations and update bounds when the collection
25902         changes.  There are still potential bounds issues point changes,
25903         those are being looked into.  Fixes invalidation issues in
25904         test-inkpresenter-position and test-inkpresenter-scale.
25906 2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25908         * xaml.cpp: Add a null at the end of the namespace array.
25910 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
25912         * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
25913         white space into a simple space.
25914         (TextLayout::Layout): Treat embedded \n's as LineBreaks
25915         (TextLayout::Layout): When calculating the width of a line that
25916         ends in a space, don't include the width of the space char -
25917         Silverlight doesn't seem to.
25918         (TextLayout::Layout): Don't pad the height. Don't pad the width
25919         either, altho it seems like a padding of +2.0 is about right but
25920         ONLY if the text is in a canvas? See OMTextInline.htm's
25921         actualWidth/Height measurements as well as the out-of-tree
25922         measurement.
25924         * xaml.cpp (char_data_handler): Always create the GString cdata,
25925         we need to note leading lwsp which the old implementation didn't.
25926         (flush_char_data): Try to emulate Silverlight's chug/chomp
25927         behavior more closely.
25929 2008-03-05  Chris Toshok  <toshok@ximian.com>
25931         * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
25932         to panel's OnSubPropertyChanged if we don't handle it.
25934         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
25935         make sure we don't call this method with NULL args.  Also, remove
25936         larry's g_warning (which wasn't the case, i tested with sprawl!),
25937         and also remove the check for matching property/parent type for
25938         attached properties.  this will break controls.
25940         * transform.h, transform.cpp: it used to be that logical parents
25941         of children could rely on OnSubPropertyChanged being invoked for
25942         any property change.  This is no longer the case - the only
25943         instance where it still happens is if there's an attached property
25944         involved.  All other cases have to use OnCollectionChanged.  So,
25945         switch OnSubPropertyChanged to OnCollectionChanged here.
25947 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
25949         * text.cpp (TextBlock::OnCollectionChanged): We need to update
25950         bounds/text even if element_args is NULL (because adding/removing
25951         an item still changes our text).
25952         (Inline::OnPropertyChanged): Use args->new_value.
25954 2008-03-05  Chris Toshok  <toshok@ximian.com>
25956         * transform.h, transform.cpp: remove
25957         TransformCollection::OnSubPropertyChanged.  it was gumming up the
25958         works.
25960 2008-03-05  Larry Ewing  <lewing@novell.com>
25962         * shape.cpp: disable the shape caching code for now unless
25963         USE_OPT_SHAPE_SURFACE_CACHING=1.
25965 2008-03-05  Michael Dominic K.  <mdk@mdk.am>
25967         * Makefile.am:
25968         * enums.c:
25969         * enums.h:
25970         * xaml.cpp: Taking out all the enum->str (and vice versa) code from
25971         xaml.cpp and putting it into a new file -> enum.c + some utilities. 
25973         The enum<->str code is not specific to xaml and is usefull from plugin as
25974         well.
25976 2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
25978         * media.cpp: close the pixbuf_loader to load the small images too.
25980 2008-03-04  Chris Toshok  <toshok@ximian.com>
25982         * runtime.cpp (Surface::expose_to_drawable): re-enable the
25983         clearing of the cairo surface, but only if we have a
25984         widget (i.e. not in the windowless plugin case.)  Should fix
25985         translucent desklets without breaking the plugin.
25987 2008-03-04  Chris Toshok  <toshok@ximian.com>
25989         [ rather large change, reworking much of the property change event
25990         system to be a little smaller api surface-wise, and also cleaning
25991         up uses of it to remove some of the accumulated cruft that we'd
25992         developed over the past 10 months.]
25993         
25994         * dependencyobject.h, dependencyobject.cpp: A few key changes:
25996         1. Attach -> AddPropertyChangeListener
25997            Detach -> RemovePropertyChangeListener
25998            NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
26000            This was done to remove the confusion between "attached"
26001            properties and our use of the word "attach" to mean "listen for
26002            property changes".  Attached properties are those which
26003            implicitly notify the parent when they're changed.
26004         
26005            OnChildPropertyChanged is gone.  Canvas (the only user of it)
26006            now uses OnSubPropertyChanged to deal with child property
26007            changes.
26009         2. *PropertyChanged methods take a
26010            structure (PropertyChangedEventArgs) that contains the
26011            DependencyProperty, as well as the old and new values of it.
26012            This was to remove the need for almost every
26013            OnPropertyChangedMethod to immediately call GetValue on the
26014            property.  Passing the old value requires changing the
26015            current_values hash to not have a value destructor, so we have
26016            to manually delete values again.
26018         3. Reordered the args for
26019            AddPropertyChangeListener/RemovePropertyChangeListener so that
26020            the listener comes first and the second arg defaults to NULL.
26021            Cleans up a bit of the use of this method globally.
26023         * animation.h, animation.cpp: track OnSubPropertyChanged changes.
26025         * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
26026         LinearGradientBrush::OnPropertyChanged,
26027         RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
26029         also lots of changes to use args->new_value instead of calling
26030         GetValue(property).
26032         Clear up confusion regarding the meaning of the property passed to
26033         AddPropertyChangeListener.
26035         * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
26036         OnSubPropertyChanged.
26037         
26038         * collection.h, collection.cpp (Node::Node): don't add parent as a
26039         listener for every property change here.  We handle this
26040         specifically (and automatically) in
26041         DependencyObject::NotifyListenersOfPropertyChange, but only for
26042         attached properties.
26043         (Node::~Node): don't remove the listener here either.
26045         lots of tracking the DO api changes here too.
26047         * control.h, control.cpp: track On*PropertyChanged changes.
26049         * font.cpp: fix some warnings
26051         * frameworkelement.h, frameworkelement.cpp: track
26052         On*PropertyChanged changes.
26053         
26054         * geometry.h, geometry.cpp: track On*PropertyChanged changes.
26055         
26056         * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
26057         lot of the empty blocks here - there's nothing to do for these
26058         properties, so we might as well not bloat the code.  Also, use
26059         new_value when we can.
26060         (Image::DownloaderComplete): add a (I hope) suitably nasty comment
26061         about calling brush->OnPropertyChanged directly.  code shouldn't
26062         do this, we should figure out if we can just set the property, and
26063         if so, do that.  otherwise something else is broken.
26064         (Image::OnPropertyChanged): use new_value where we can.
26066         * panel.h, panel.cpp: remove the cached background field.  It
26067         wasn't used except to Attach/ref + Detach/unref it, and that's
26068         handled automatically by the DependencyProperty machinery.
26069         Otherwise just track the On*PropertyChanged api changes.
26071         * shape.h, shape.cpp: similarly, we don't need to ref/attach our
26072         cached stroke and fill fields.  They're populated for us (and
26073         ref'ed/unref'ed as needed), so we don't need anything additional
26074         here.  Use new_value instead of GetValue in OnPropertyChanged.
26075         Also, factor out some redundant code from all the subclass
26076         OnPropertyChanged methods that was nearly the same as the
26077         Shape::OnPropertyChanged code for it.
26079         * stylus.h, stylus.cpp: On*PropertyChanged api changes.
26081         * text.h, text.cpp: mostly On*PropertyChanged api changes, and
26082         lots of using new_value instead of GetValue, but also get rid of
26083         the cached TextBlock foreground instance field.  It's easy enough
26084         to fetch when we need it in the ::Paint method, and the
26085         dependencyobject stuff already refs and attaches to it.
26087         * transform.h, transform.cpp: lots of On*PropertyChanged api
26088         changes, and using new_value instead of GetValue.
26090         * uielement.h, uielement.cpp: remove the cached opacityMask
26091         field (it wasn't used except for attach/detach, which is handled
26092         for us.)  The usual On*PropertyChanged changes as well as using
26093         new_value instead of GetValue.
26094         
26095 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26097         * xaml.cpp (style_simulations_map): There's only one
26098         StyleSimulation value, and that is None.
26100         * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
26101         width and the text is not part of the first run on a line, break
26102         at the beginning of the Run. This seems to be what Silverlight
26103         does in OMTextInline.htm.
26105 2008-03-04  Larry Ewing  <lewing@novell.com>
26107         * eventargs.cpp: update the dirty list before trying calculating
26108         relative locations.
26109         
26110         * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
26111         here so that our hit testing has up to date bounds.
26114         * dirty.h: remove the prototypes for up/down since it isn't safe
26115         to split the up/down passes.
26117         * src/uielement.cpp: remove dirty processing.
26118         
26119 2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
26121         * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
26122         create the pixbuf from a file, allowing partial rendering of broken
26123         imagefiles, like in Image.htm
26125 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26127         * text.cpp (Inline::GetDefaultValue): Implemented.
26129 2008-03-04  Michael Dominic K.  <mdk@mdk.am>
26131         * src/uielement.cpp: When calling uielement_transform_point, make sure our
26132         transforms are up-to-date (not dirty).
26134         Since we're updating the transform matrices only in the expose (dirty)
26135         callback it can happen that two ie. mouse events arrive before we get to
26136         the expose. If the first mouse event invalidated the transform and the
26137         second one relies on the transform (ie. tries to obtain relative mouse
26138         position) it'd get bogus values since the transform has not been
26139         regenerated yet.
26141         Fixes the drag & drop behaviour in SL ink journal (the selection tool).
26142         Fixes: #362227.
26144 2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
26146         * src/dirty.cpp:
26147         * src/dirty.h: Splitting the process_dirty_elements () into two individual
26148         chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
26149         process_dirty_elements () now calls both. 
26151         The point here is that we need to process down dirty elements (call
26152         process_down_dirty_elements ()) from other contextes as well.
26154 2008-03-03  Larry Ewing  <lewing@novell.com>
26156         * uielement.cpp:  Call FullInvalidate when clip changes so that
26157         our subtree bounds are updated and invalidated.  Make sure we
26158         don't reset the forced invalidate flag.
26159         
26160         * dirty.cpp: invalidate subtree bounds on forced invalidations.
26161         Fixes test-clip-invalid-update.htm.
26162         
26163 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26165         * text.cpp (TextBlock::GetText): New method to generate a string
26166         representing the Text property from the inlines.
26167         (TextBlock::SetText): New method (split out from the old
26168         ::SetValue code) to parse the newly set text string into a list of
26169         Inlines and update out InlinesProperty if changed. Returns whether
26170         or not the inlines property changed.
26171         (TextBlock::OnPropertyChanged): Call SetText() to update out
26172         Inlines if the TextProperty value was changed by an outside
26173         source. If the InlinesProperty was changed by an outside source,
26174         update our TextProperty.
26175         (TextBlock::OnCollectionChanged): Update our TextProperty if an
26176         Inline was added or removed or if a Run element had its
26177         TextProperty changed.
26179 2008-03-03  Chris Toshok  <toshok@ximian.com>
26181         * animation.cpp: plug a memory leak in the 3
26182         UsingKeyFrames::GetCurrentValue methods.
26184 2008-03-03  Chris Toshok  <toshok@ximian.com>
26186         * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
26187         return a cairo_matrix_t instead of a pointer to the
26188         internal (mutable) field, and update its only use.
26190 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26192         * media.cpp (media_element_get_audio_stream_index): Fixed to
26193         handle nullable value.
26194         (media_element_set_audio_stream_index): Same.
26195         (media_init): Register the AudioStreamIndex property as being
26196         nullable.
26197         (MediaElement::Reinitialize): Set the CurrentStateProperty to
26198         "Closed".
26200 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26202         * media.cpp (media_init): Register AudioStreamCount,
26203         BufferingProgress, CanPause, CanSeek, CurrentState,
26204         NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
26205         as being read-only.
26207         * text.cpp (text_init): Register ActualWidth and ActualHeight
26208         properties as ReadOnly.
26210         * transform.cpp (Matrix::GetValue): Removed.
26211         (Matrix::SetValue): Removed.
26212         (Matrix::OnPropertyChanged): Implemented.
26214 2008-03-01  Larry Ewing  <lewing@novell.com>
26216         * shape.cpp (Shape::DoDraw): refactor slightly.
26218         * geometry.cpp: fix extents calculation when there is only a fill
26219         on the shape.  Fixes test-path-stretch-fill-extents.xaml.
26220         
26221         * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
26222         negative widths or heights have no bounds.
26223         (Shape::DoDraw): Silence warning.
26225 2008-02-29  Larry Ewing  <lewing@novell.com>
26227         * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
26228         match StretchAndShapes.xaml.
26230         * collection.cpp (VisualCollection::Remove): don't fire
26231         VisualRemoved unless we are going to actually remove the item.
26232         Fixes OM_RemoveClearRemoveAt.htm.
26234 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26236         * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
26237         the z_sorted array before sorting so that we can be sure the end
26238         result will be a stable sort.
26239         (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
26240         because we need to take index into account. Instead, grow our
26241         array and call ResortByZIndex().
26243 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26245         * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
26246         an even more fun memory corruption bug.
26248 2008-02-29  Larry Ewing  <lewing@novell.com>
26249         
26250         src/control.cpp:
26251         src/frameworkelement.cpp:
26252         src/geometry.cpp:
26253         src/media.cpp:
26254         src/rect.cpp:
26255         src/rect.h:
26256         src/shape.cpp:
26257         src/text.cpp:
26258         src/uielement.cpp: Fix Rect::Transform, replace all occurances of
26259         bounding_rect_for_transformed_rect with Rect::Transform.
26261 2008-02-29  Larry Ewing  <lewing@novell.com>
26263         * geometry.cpp: apply transform to all bounds calculations.  Fixes
26264         test-geometry-bounds.xaml.
26266 2008-02-29  Larry Ewing  <lewing@novell.com>
26268         * geometry.cpp: Make sure geometry groups draw their children
26269         rather than just copying the paths so that local transforms are
26270         applied correctly.
26272 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26274         * text.cpp (TextBlock::GetValue): Fixed memory leak.
26276         * media.cpp (MediaElement::GetValue): Fixed compile warning.
26278         * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
26279         rather than calling inline_get_*() which use GetValue().
26281         * font.cpp (TextFont::TextFont): Don't let the underline thickness
26282         be < 1.0
26284         * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
26285         Simplified.
26286         (DependencyObject::GetValue): Simplified.
26287         (DependencyObject::GetDefaultValue): New method to get the default
26288         value for a property (now used by GetValue()).
26290 2008-02-29  Larry Ewing  <lewing@novell.com>
26292         * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
26293         transform into account when computing bounds.  Fixes
26294         CGeometry_AddToRenderList.xaml
26296 2008-02-29  Larry Ewing  <lewing@novell.com>
26298         * shape.h:
26299         * shape.cpp: export calc_line_bounds.
26301         * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
26302         problems on Animation_TargetingAndHandoff.xaml.
26304 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26306         * pipeline.cpp: Add a missing const modifier.
26308 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26310         * mplayer.cpp: Use the first streams found in the media, not the last.
26312 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26314         * stylus.cpp: if there's an outline, draw a line of at least 2px.
26316 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26318         * brush.cpp: No longer ignore out-of-bounds offest in
26319         SetupGradient. Add the bounds stop with linearinterpolation
26320         between the nearest stop and the outofbounds one. Handle the
26321         degenerated case with only outofbounds stops.
26323 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
26325         * shape.cpp: Commenting a left-over debug g_warning.
26327         Additionally adding a protection against NULL in cache-size reporting (as
26328         experienced by rolf). However, if GetSurface () returns NULL in the Render
26329         callback... I guess we're screwed anyways.
26331 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
26333         * xaml.cpp:
26334         * xaml.h: Adding convert_property_value_to_enum_str function to
26335         check/convert if the value for the given property can be represented by an
26336         enum string. 
26338         It would be nicer to mover all the enums tables/resolving to a separate
26339         place in future instead of gluing it to xaml.cpp.
26341 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26343         * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
26344         Stretch property.
26346 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
26348         * text.cpp (Glyphs::Render): Use horiBearingX for the first char
26349         in the Glyphs string just like we do for TextBlock rendering.
26351 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
26353         Fixes the last remaining issue in the TextRegressions.htm test.
26355         * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
26356         non-autogenerated <Run>'s.
26358         * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
26359         from the TextBlock's Text property as being auto-generated.
26361 2008-02-27  Larry Ewing  <lewing@novell.com>
26363         * shape.cpp: change the shape surface cache to cache in device
26364         coordinates and rework the candidate restrictions to reject
26365         huge shapes and allow scaled caches.
26367 2008-02-27  Larry Ewing  <lewing@novell.com>
26369         * shape.cpp: center the filled image within the new bounds.
26371 2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26373         * media.h, media.cpp: When a media is opened, seek to the current
26374         position.
26376         * value.cpp: ToString: Return 'NULL' if we're null.
26378 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26380         * src/animation.cpp: When storyboard is completed, Teardown the clocks
26381         only if we're realling stopping (not holding). Fixes the
26382         StoryBoard_ModifyProperty test.
26384 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26386         * clock.cpp: Make sure we actually hit the our_delta < 0 code 
26387         path. Fixes the AutoReversed/Repeated animations.
26389 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26391         * shape.cpp: More cases to invalidate (free mem) of the surface cache.
26393 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
26395         * font.cpp (TextFont::TextFont): Precalculate underline position
26396         and thickness. Also, we need to adjust the position based on 1/2
26397         the underline thickness.
26398         (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
26399         (TextLayout::RenderLine): Same.
26401 2008-02-26  Chris Toshok  <toshok@ximian.com>
26403         * runtime.cpp (runtime_cairo_create): take the visual too, so the
26404         plugin can send ours in - we can't rely on the pixmap having a
26405         visual associated with it, because it's initialized with the
26406         _foreign api which doesn't fill in the colormap. yay.
26407         (Surface::Surface): if we're windowless don't create the widget.
26408         also, init render/render_data and invalidate/invalidate_data to
26409         NULL.
26410         (Surface::ConnectEvents): exit early if we're windowless.
26411         (Surface::Invalidate): call through the invalidate function if
26412         there is one.  otherwise, default behavior (if we have a widget).
26413         (Surface::Paint): exit early if no toplevel.
26414         (Surface::render_cb): call through the render function if there is
26415         on.
26416         (Surface::expose_to_drawable): this is most of the guts of
26417         expose_callback, changed to handle the case where we're already
26418         drawing to the backbuffer (in the windowless case) and therefore
26419         don't need the temporary pixmap.  Also, commented out some code
26420         that clears the contents - do we actually need this?  The comment
26421         for it is enormous...
26422         (Surface::expose_event_callback): just call expose_to_drawable
26423         with the widget's window.
26425         * runtime.h (class Surface): we need to make the gtk callbacks
26426         public since the plugin will be invoking them directly.  Also,
26427         switch the event methods to returning bools, and add a new method
26428         called expose_to_drawable, so the plugin can direct rendering to a
26429         pixmap in the windowless case.
26431         * uielement.h, uielement.cpp: change all the Emit* methods to
26432         return bool.
26434         * dependencyobject.h, dependency.cpp: make EventObject::Emit
26435         return true if there were handlers for the event, and false
26436         otherwise.
26438 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
26440         * text.cpp (TextBlock::TextBlock): Removed the useless
26441         text_block_set_text() call. This was just a broken hack meant to
26442         do what MDK's previous commit fixed the right way.
26444         * font.cpp (TextFont::UnderlinePosition): Fixed to take font
26445         y_scale metrics into consideration.
26446         (TextFont::UnderlineThickness): Same.
26448 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26450         * src/text.cpp: TextBlock when constructed by default has an empty
26451         Inlines collection instead of NULL. Along with all the previous
26452         commits fixes the OM_CreateAddInsert.htm test.
26454 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26456         * src/collection.cpp: Don't allow collection insert at negative
26457         position.
26459 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26461         * src/collection.cpp: Don't add the object to the collection if it
26462         already contains the object (return -1 instead).
26464 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26466         * src/animation.cpp:
26467         * src/animation.h:
26468         * src/collection.cpp:
26469         * src/collection.h: The "Add" method of collections returns int (index of
26470         the element added), not bool. As explained in:
26472         http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
26474 2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
26476         * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
26477         through FontConfig, we need to parse the font's family name to
26478         extract styleistic info so we can do proper font name matching and
26479         style matching (e.g. "Myriad Pro Cond Black Italic" should match
26480         "Myriad Pro, Condensed Black Italic").
26482 2008-02-25  Chris Toshok  <toshok@ximian.com>
26484         * runtime.h, runtime.cpp: s/drawing_area/widget and
26485         s/DrawingArea/Widget
26487         * demo.cpp: same.
26489 2008-02-25  Michael Dominic K.  <mdk@mdk.am>
26491         * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
26492         can be called on the element to give it a hint that it should free it's
26493         cache for the time being.
26495         * src/collection.cpp:
26496         * src/panel.cpp:
26497         * src/panel.h: Forward CacheInvalidateHint to all children.
26499         * src/shape.cpp:
26500         * src/shape.h: Destroy the surface and path cache when hinted.
26502         In total improves our memory usage with surface/path caching, ie. in the
26503         Showcase.
26505 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
26507         * src/runtime.cpp:
26508         * src/runtime.h:
26509         * src/shape.cpp:
26510         * src/shape.h: Adding functionality to report the cache size usage. By
26511         default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
26513 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
26515         * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
26516         to expose a few more pixels but helps with surface caching.
26518 2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26520         * downloader.cpp: downloader_get_response_file: remove any directory
26521           components from the part name, otherwise the creation of the tmp file
26522           fails. If we're aborted, don't call any callbacks.
26523         * media.cpp: If we have a downloader and SetSource is called with a new
26524           downloader, abort the previous download, not only unref it, otherwise
26525           our callbacks and events may still get called from the old downloader.
26527 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
26529         * font.cpp (TextFont::TextFont): Simplified the fallback code.
26531 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
26533         Fixes Glyphs.xaml
26535         * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
26536         cluster mappings.
26537         (Glyphs::Layout): Properly handle glyph clusters.
26538         (Glyphs::Render): Same.
26540 2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26542         * media.cpp: When aborting a downloader, null out the write
26543         functions too.
26545 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26547         * src/clock.cpp: Emit the Completed event when Filling as
26548         well. Together with prev commit fixes: #359024 and #324935.
26550 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26552         * src/animation.cpp:
26553         * src/animation.h: Detach the AnimationStorage update handler from the
26554         clock when the clock is stopped -- prevents us from overriding the (just
26555         reset) base value with another update.
26557 2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
26559         * src/value.cpp: Implementing ToString () for DOUBLE.
26561 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26563         * src/color.cpp: A slightly more relaxed/tolerant way of parsing
26564         the colors... it's the web and it's broken by default. Fixes:
26565         #362287 (the US candidates website).
26567 2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
26569         * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
26571 2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
26573         Fixes the TextBlockFontDownloads.htm test.
26575         * font.cpp (TextFontDescription::Set*): If the new value is not
26576         the same as the old, invalidate the loaded TextFont.
26577         (TextFont::TextFont): Always compare family names unless we're
26578         requesting the "Sans" (e.g. last) fallback font.
26579         (TextFont::TextFont): If the requested family name does not match
26580         the specified font file, fall back to a system font of the same
26581         name (we were doing this for zip archievs before, but not for
26582         specified ttf font files).
26584         * text.cpp (TextBlock::SetFontSource): If the downloader is null,
26585         set the font filename to null and invalidate the textblock.
26587 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26589         * media.cpp: Add a printf to inform when we're trying to load an
26590         mms stream.  Helps a lot when trying to identify sites depending
26591         on mms/streaming support.
26593         * runtime.cpp: Unref debug_selected_element upon
26594         destruction. Fixes a leak.
26596 2008-02-20  Michael Dominic K.  <mdk@mdk.am>
26598         * src/shape.cpp: Fixing the shape caching to work also with
26599         Path/Geometry.  Fixes: #362021.
26601 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26603         * media.cpp: MediaElement/Image: Remove event handlers when we abort the
26604           downloader, otherwise the handlers might be called after we're
26605           destroyed.
26607 2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
26609         * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
26610         know which, if any, parts of the URI to hide.
26611         (Uri::Parse): If we don't have a protocol, don't simply assume
26612         that the entire string is the filename. We might have a fragment
26613         attached, for example.
26615         * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
26616         get the font index (if a fragment is set). Also, use the parsed
26617         Uri's ::ToString() method to hide the fragment so that requesting
26618         the file actually works.
26619         (Glyphs::DownloaderComplete): Don't need to parse the URI here
26620         anymore, we've already got the index from OnPropertyChanged().
26622 2008-02-19  Jackson Harper  <jackson@ximian.com>
26624         * xaml.cpp: Parser error if we can't find the owner type or
26625         property name when setting properties.
26627 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
26629         * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
26631 2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26633         * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
26634           shortcomings.
26635         * media.cpp: Remove printf.
26637 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
26639         * moon-path.c: #if out moon_get_origin since it's not used 
26640         anymore. Change cairo_path_display output to be easier to read 
26641         with negative numbers.
26643 2008-02-18  Michael Dominic K.  <mdk@mdk.am>
26645         * src/media.cpp:
26646         * src/media.h: Load images slightly faster by skipping one pixbuf blit and
26647         doing the expansion + conversion in one step.
26649         Also fixing an ugly memory leak where all RGBA images loaded were leaked
26650         (two times in memory).
26652 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
26654         * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
26655         being called from a timeout (unprotected) and we're potentially calling
26656         gdk_ invalidation functions. I think it only matters (in this case) 
26657         on non-X backends though. 
26659 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
26661         * src/uielement.cpp: Moving the debug timers for rendering slightly and
26662         uncommenting them so that they work when TIMERS is enabled.
26664 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
26666         * src/runtime.cpp:
26667         * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
26668         default) that changes your 'd' key into a special debug key. When pressed,
26669         a message is printed to the console (region start). When pressed again,
26670         another message is printed (region end). This is usefull to see what
26671         happens in a particular part of the program timeline (ie. after click). 
26673         Makes sense obviously only with timers debugging on and stuff.
26675 2008-02-14  Michael Dominic K.  <mdk@mdk.am>
26677         * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
26678         shows that SL runs by default at something around that. Also, with the
26679         recent fixes some sites are suffering from 24 (can run/look much better
26680         at higher fps).
26682 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
26684         * src/shape.cpp:
26685         * src/shape.h: Adding surface caching for shapes. The strategy
26686         is to cache big surfaces that have little transformations (such as
26687         ie. backgrounds, fade overlays, etc.). Improves performance greatly
26688         for many sites (ie. Showcase).
26690 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
26692         * src/uielement.cpp: Commenting out the timer in post-pre render as it's
26693         broken and blocks the compilation with timers on.
26695 2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
26697         * src/animation.cpp:
26698         * src/animation.h: Massive fix for our KeySpline animation calculation
26699         routines (which were broken and giving wrong values). According to:
26701         http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
26703         "...think of the horizontal axis as the pace with which the interpolation
26704         proceeds along the timing interval. The vertical axis is the resulting
26705         value for the animation's progress, yielded by the function that underlies
26706         the keySplines property. Another way of describing this is that the
26707         horizontal axis is the input unit time for the interval, and the vertical
26708         axis is the output unit time."
26710         Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
26711         a little bit ugly -- we waste 256 bytes per KeySpline to store
26712         pre-calculated values in a lookup table. But maybe it's not soo bad, since
26713         balf function (from prev implementation) was coming up top in the
26714         profiles anyways.
26716         The only other way I can (currently) think of would be to solve a cubic
26717         equation each time we poll the KeySpline for a value. That would be,
26718         however, a *massive* performance hit. 
26720         Hence the lookup solution for now (note: the generation of the table is
26721         very fast, no cubics involved).
26723 2008-02-11  Michael Dominic K.  <mdk@mdk.am>
26725         * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
26726         as it should... yes, our redraws are slow, but not *that* slow ;)
26728 2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
26730         * src/mplayer.cpp: If we have no audio devices present in the system,
26731         launch a special audio loop variant to still read/fetch audio (and discard
26732         it) so that the video playback is not blocked. Fixes: #341835.
26734 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
26735         
26736         * font.cpp (TextFont::TextFont): If the loaded font's family_name
26737         doesn't match the requested family name, fall back to the default
26738         font (it means the requested font doesn't exist on the system).
26739         (TextLayout::Layout): Added a 'first_char' state variable that can
26740         be used to figure out if if the current char is the first char on
26741         a line. This is needed for the wrapping logic.
26743 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
26745         Fixes some text layout bugs in TextBlockFontFamilies.xaml
26747         * xaml.cpp (flush_char_data): Now takes a string 'next_element'
26748         argument rather than a bool 'start' argument so that we can make
26749         sure that the previous and next element types are <Run>'s because
26750         lwsp between a <LineBreak/> and a <Run> or a </Run> and a
26751         <LineBreak/> should be ignored. Also, never g_strchomp() this
26752         cdata.
26753         (start_element_handler): Pass the name of the next element to
26754         flush_char_data().
26755         (end_element_handler): Pass NULL to flush_char_data() as the
26756         next_element argument.
26758 2008-02-08  Chris Toshok  <toshok@ximian.com>
26760         * media.cpp (MediaElement::Render): reorder things so that we're
26761         calculating the brush pattern matrix with the snapped pixels.
26763 2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
26765         * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
26767 2008-02-07  Chris Toshok  <toshok@ximian.com>
26769         * media.cpp (MediaElement::Render): snap to the pixel grid if
26770         we're not rotated/skewed.
26772 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
26774         * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
26776 2008-02-07  Larry Ewing  <lewing@novell.com>
26778         * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
26779         same as out of bounds stops.
26781         * shape.cpp: cache the results of CompouteShapeBounds in
26782         extents rect, use that value in GetSizeForBrush.
26784 2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
26786         Fixes a rendering glitch for xaml similar to:
26788         <TextBlock>
26789            <Run FontStyle="Italic">This </Run>is Dodger Blue
26790         </TextBlock>
26792         * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
26793         setting the value of a content_property (e.g. a Run).
26795 2008-02-07  Michael Dominic K.  <mdk@mdk.am>
26797         * src/color.cpp: Added support to parse scRGB-style color specificators
26798         (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
26799         should produce accurate-enough colors for most uses.
26801         http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
26803 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
26805         * shape.cpp|h: Split ComputeBounds to avoid calling functions 
26806         bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
26807         inside each shape. This will enable us to reuse the non-transformed
26808         value elsewhere too. This also fix (for me) the origin point that
26809         caused problems for some brushes. Started implementing methods 
26810         ComputeLargestRectangle[Bounds] to optimize drawing.
26812 2008-02-06  Chris Toshok  <toshok@ximian.com>
26814         * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
26815         want the untransformed size of the element.  otherwise we end up
26816         with a pattern matrix that scales things too large given that
26817         we're also scaling the element.  Fixes fullscreen mode in halo3
26818         and /fox video players (bug #335845).
26820 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26822         * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
26823           range, draw the current frame. If we're ahead of the range, do nothing
26824           (fixes some video/audio sync problems), and if we're behind drop frames.
26825           The range makes sure that we paint every frame even when the audio loop
26826           doesn't update the target pts as often as we're drawing video.
26828 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26830         * panel.cpp, runtime.cpp: Fix warnings.
26832 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26834         * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
26835           the entire loop, only when fetching packets. This allows packets to
26836           arrive from the pipeline while in the loop (especially noticable when
26837           decoding the video inside the loop).
26839 2008-02-06  Chris Toshok  <toshok@ximian.com>
26841         * uielement.cpp (UIElement::FrontToBack): use the media state
26842         accessors, and don't exclude Buffering state - we could be
26843         buffering with a frame rendered.
26845 2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
26847         * shape.cpp|h: Keep track if a rectangle has radii or not.
26848         * uielement.h: Add a flag for radii
26850 2008-02-06  Chris Toshok  <toshok@ximian.com>
26852         * uielement.cpp (UIElement::FrontToBack): make sure
26853         media_element_get_current_state != NULL before we strcmp it.
26855 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26857         * src.mdp: Updated.
26859 2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
26861         * brush.cpp: fix the radialgradientbrush setup.
26863 2008-02-05  Chris Toshok  <toshok@ximian.com>
26865         * collection.cpp (Collection::EmitChanged): new method.  Emit the
26866         Changed event and then call closure->OnCollectionChanged.  Also
26867         replace all references to closure->OnCollectionChanged to
26868         EmitChanged.
26870         * collection.h (class Collection): add ChangeEventArgs struct, and
26871         an EmitChanged method declaration.
26873         * type.h.in, type.cpp.in (Type::~Type): no need to free all the
26874         events explicitly.
26875         (Type::HideEvent): remove the event name from the hash so it's
26876         inaccessible from javascript.
26877         (Type::RegisterEvent): use g_hash_table_new_full so we can specify
26878         a destroy function for keys instead of doing the _foreach in the
26879         dtor.
26880         (types_init_manually): add the #if 0 here instead of type.cpp.
26881         oops.
26882         (types_init_register_events): register a Changed event for
26883         Collections.
26885 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
26887         * downloader.cpp (Downloader::ll_downloader_get_response_file):
26888         Simplified by using the new ExtractFile utility function from
26889         utils.cpp.
26891         * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
26893         * utils.cpp: New collection of utility functions.
26895 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
26897         * font.cpp: If a font is requested from a zip archive, extract the
26898         contents and try to figure out which font is the closest match to
26899         the one requested. Fixes bug #356044.
26901 2008-02-05  Chris Toshok  <toshok@ximian.com>
26903         * uielement.cpp (UIElement::FrontToBack): enable the rectangle
26904         code, and make sure to round in the bounds we're subtracting.
26905         this was causing the flashing white border on silverlight.net/fox.
26907 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
26909         * shape.cpp: Use existing MIN macro. Use local variables when
26910         available.
26912 2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26914         * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
26916 2008-02-05  Chris Toshok  <toshok@ximian.com>
26918         * runtime.h, runtime.cpp: add support for a "selected" element
26919         when in debug mode.  Also, make use of the Region methods instead
26920         of using region->gdkregion, which is private now.
26922 2008-02-05  Chris Toshok  <toshok@ximian.com>
26924         * region.h, region.cpp (class Region): add Offset().
26926 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
26928         * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
26929         populate it's moon_path (like others) so the data can always be 
26930         used.
26931         * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
26932         from a moon_path (Stephane) and moon_merge to merge a subpath into
26933         a main path.
26935 2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26937         * pipeline-ffmpeg.cpp: Remove another printf.
26939 2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
26941         * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
26942         to move.
26943         (FileSource::Peek): Slightly better fix.
26945 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
26947         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
26948         estimate the stream position if not known rather than reading data
26949         to find out as we don't have to return an exact stream position.
26951 2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26953         * pipeline.h: Update comment.
26955 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
26957         * uielement.h:
26958         * shape.h:
26959         * shape.cpp: rename GetOringin into GetOriginPoint
26961         * brush.cpp: implement a bad origin computation (based on bounds)
26962         for Shape::Path
26964 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
26966         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
26967         (FileSource::Peek): As before, only read as much as we need - but
26968         don't clobber what we had prebuffered, only clobber as much as w
26969         need to in order to make room for the new data - this way we make
26970         it more efficient to seek backward later (if need be).
26972 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
26974         * shape.h:
26975         * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
26976         from the path data instead of from bounds.
26978         * brush.cpp: translate the brushes with a translation matrix.
26980 2008-02-01  Larry Ewing  <lewing@novell.com>
26982         * brush.cpp: Make sure we use the brush opacity when computing the
26983         color stops.
26985 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
26987         * pipeline.cpp (FindMpegHeader): Now checks for Xing and
26988         Fraunhofer VBRI headers.
26990 2008-01-31  Chris Toshok  <toshok@ximian.com>
26992         * uielement.h: include region.h
26994         * point.h: don't assume the right headers have been included
26995         before this file - include glib.h to make sure
26996         G_BEGIN_DECLS/G_END_DECLS is there.
26998         * region.h, region.cpp: split out the region code from
26999         rect.h/rect.cpp.
27001         * rect.h, rect.cpp: remove region code.
27003         * Makefile.am: add region.h/region.cpp
27005 2008-01-31  Chris Toshok  <toshok@ximian.com>
27007         * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
27008         use Region::Draw instead).
27010         * panel.cpp: remove references to runtime_cairo_region, and switch
27011         to the new Region* copy ctor.  also, use Region::IsEmpty instead
27012         of gdk_region_empty.
27014         * uielement.cpp: more region cleanup, removing references to
27015         GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
27016         out until the rendering glitch is fixed) the rectangle back to
27017         front special case code.
27019 2008-01-31  Chris Toshok  <toshok@ximian.com>
27021         * rect.cpp (Region::Region): new overload which takes a Region*,
27022         so we don't have to access ->gdkregion everywhere when we copy a
27023         region.
27025         * rect.h (struct Rect): add a GrowBy method that takes both x and
27026         y deltas, and have the 1 parameter version call it.
27027         (class Region): add a copy ctor that takes a Region*.
27029 2008-01-31  Chris Toshok  <toshok@ximian.com>
27031         * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
27032         and add it to the class, protected so subclasses can get at it.
27034         * stylus.cpp (InkPresenter::PostRender): given the ordering
27035         required, we have to c&p some of Panel::PostRender here to render
27036         the children.  Chaining up to Canvas::PostRender at the start of
27037         the method would have caused the translucency/opacity mask code in
27038         UIElement::PostRender to be executed *before* we rendered our
27039         strokes.
27041 2008-01-31  Chris Toshok  <toshok@ximian.com>
27043         * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
27044         RenderChildren to this, and chain up to Canvas::PostRender here,
27045         which will do the RenderChildren call if it needs to.
27047 2008-01-31  Chris Toshok  <toshok@ximian.com>
27049         * panel.cpp (Panel::FrontToBack): simplify this a bunch with
27050         Brush::IsOpaque.
27052         * brush.h (class Brush): remove GetTotalOpacity() which wasn't
27053         being used anywhere, and add IsOpaque() so that we can use it from
27054         the new front-to-back stuff (instead of duplicating code in Panel
27055         and Shape handling parts).
27057 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27059         * media.cpp: Update.
27061 2008-01-31  Chris Toshok  <toshok@ximian.com>
27063         * media.cpp (MediaElement::MediaElement): fix build.
27064         (Image::Image): fix initialization order to quiet g++.
27066 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27068         * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
27069           implemented again. Added an ugly caught_up_with_seek value, used to
27070           determine if video is late due to a seek, in which case it shouldn't
27071           show any frames (fixes #356053).
27072         * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
27073           HasDelayedFrame.
27074         * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
27075           HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
27076         * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
27077           HasDelayedFrame.
27079 2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
27081         * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
27082         value.
27083         (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
27084         having our caller re-parse the header.
27085         (Mp3Demuxer::ReadHeader): Updated.
27087 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27089         * brush.cpp: apply the correct offset to RadialGradientBrushes too.
27091 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27093         * clock.h: Added macros to convert between pts, milliseconds and timespans.
27094         * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
27095           0). Use the new macros when converting between time formats. Remove the
27096           AdvanceFrame timeout upon reinitialization. Implement a better buffering
27097           algorithm (and honor the BufferingTime property).
27098         * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
27099           pipeline is now normalized to start at 0. Use the new macros when
27100           converting between time formats.
27101         * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
27102           start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
27103           estimate the position of a pts. ProgressiveSource::CancelWait: only
27104           cancel if we're waiting, and then wait until actually cancelled.
27106 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27108         * shape.cpp:
27109         * shape.h: GetOrigin for Polyline and Polygon
27111 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27113         * uielement.h: add a GetOrigin ()
27115         * shape.cpp:
27116         * shape.h: implement GetOrigin for Path
27118         * brush.cpp: use GetOrigin as offset, fix the Crystal test.
27120 2008-01-30  Chris Toshok  <toshok@ximian.com>
27122         * mplayer.h (class MediaPlayer): add rendered_frame.
27124         * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
27125         false.
27126         (MediaPlayer::Close): reset rendered_frame.
27127         (render_frame): set rendered_frame to true if we've successfully
27128         copied data into the video surface.
27130         * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
27131         to the pixbuf's has_alpha if USE_OPT_RGB24.
27133         * media.h (class Image): make the CachedSurface type and the
27134         instance field "surface" public, so the front to back stuff can
27135         get at it.  Also, add "has_alpha" to it, since once the xlib
27136         surface has been created, we lose that information.
27138         * control.cpp (Control::FrontToBack): nothing to do but call
27139         FrontToBack on real_object.
27141         * control.h (class Control): add override for FrontToBack.
27143         * panel.cpp (Panel::FindStartingElement): get rid of this crap.
27144         it was broken and the wrong way to implement it.
27145         (Panel::Render): remove the RenderChildren call here, we do it in
27146         PostRender (and only if we're not rendering front to back)
27147         (Panel::PostRender): if we aren't rendering front to back, call
27148         RenderChildren.
27149         (Panel::RenderChildren): remove references to FindStartingElement.
27150         (Panel::FrontToBack): this method is a little more complicated
27151         than UIElement::FrontToBack owing to the fact that we're
27152         flattening things to a list.  We need to prepend a "cleanup node"
27153         first, before calling FrontToBack on our children, to do the
27154         Panel::PostRender stuff after our children have been rendered.  We
27155         remove this cleanup node if none of the children have added
27156         themselves to the list, and our bounds (without the children)
27157         don't intersect the expose region.  We apply the same logic to
27158         removing our rectangular bounds as the UIElement code does, but
27159         also have to take into account our background brush.  We punt if
27160         any part of it is transparent, and only handle SolidColorBrush and
27161         GradientBrush subclasses.
27163         * panel.h (class Panel): override UIElement:: FrontToBack,
27164         PreRender, and PostRender.
27166         * uielement.cpp (UIElement::DoRender): factor out most of the guts
27167         of this method so it can be used in either front-to-back or
27168         back-to-front.  Make sure to pass "false" as the front-to-back arg
27169         for PreRender and PostRender.
27170         (UIElement::FrontToBack): calculate the intersection of the expose
27171         region and our bounds.  Add this region to the front of the render
27172         list, and then do some calculating to decide if we should remove
27173         it from consideration by elements lower than us in the display.
27174         Things like "are we opaque", "have we been rotated or skewed, such
27175         that our rectangular shape no longer fills the bounds entirely",
27176         stuff like that.  We further limit subtracting in element type
27177         specific ways - right now just for MediaElement and Image with
27178         certain constraints (images can't have alpha, media elements must
27179         have a frame rendered, both types must fill their rectangle, etc).
27180         If everything passes, we remove our bounds from the expose region.
27181         (UIElement::PreRender): new method, do the things that DoRender
27182         used to do before calling Render.
27183         (UIElement::PostRender): new method, do the things that DoRender
27184         used to do after calling Render.
27186         * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
27187         so they can be used in panel.cpp.  Also, add 3 new virtual
27188         methods (FrontToBack, PreRender, PostRender) as well as two
27189         callback methods to invoke the 2 latter ones.
27191         * runtime.cpp (overrides): add "render=ftb" and "render=btf"
27192         overrides (with btf the default) corresponding to
27193         RUNTIME_INIT_RENDER_FRONT_TO_BACK.
27194         (Surface::Paint): add support for front-to-back rendering.  If
27195         it's enabled, make a FrontToBack pass on the fullscreen message
27196         and the toplevel element.  This populates the render list with a
27197         back to front ordered list of elements to paint, along with the
27198         regions they need repainted.  If the render list is empty for some
27199         reason (or if the user didn't select ftb rendering), we fall back
27200         to back to back-to-front rendering at the toplevel.
27201         (RenderNode::RenderNode): add ctor/dtor for RenderNode.
27203         * runtime.h: add the RenderNode class, used by the front to back
27204         rendering.
27206         * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
27207         to Region.
27209 2008-01-30  Jackson Harper  <jackson@ximian.com>
27211         * xaml.cpp: Strip leading whitespace from xaml files.
27212         
27213 2008-01-30  Jackson Harper  <jackson@ximian.com>
27215         * xaml.cpp: Handle more names for the default namespace.
27217 2008-01-30  Jackson Harper  <jackson@ximian.com>
27219         * xaml.cpp: Add support for ucs4.
27221 2008-01-29  Jackson Harper  <jackson@ximian.com>
27223         * xaml.cpp: pull in unistd.h
27225 2008-01-29  Jackson Harper  <jackson@ximian.com>
27227         * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
27228         expat doesn't choke.
27230 2008-01-28  Chris Toshok  <toshok@ximian.com>
27232         * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
27233         inplace, it returns the new rect.
27235         * uielement.cpp (UIElement::DoRender): same change.
27237 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
27239         * pipeline.cpp (FindMpegHeader): Validate that the sequence is
27240         actually an mpeg frame header by parsing it and calculating its'
27241         length and checking that another frame header starts where we
27242         expect it.
27243         (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
27244         too.
27246 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
27248         * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
27249         an MPEG sync header.
27250         (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
27251         IMediaSource's new GetSize() method to help calculate media
27252         duration as opposed to seeking to the end.
27254 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27256         * media.cpp, media.h: Open the media async.
27257         * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
27259 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27261         * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
27262           reached eof and couldn't advance.
27263         * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
27264           get while we're waiting for a seek to happen. Implement a better pause
27265           algorithm, the previous one was flawed and dead-locked once in a while.
27266         * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
27267           Create one frame reader for each stream.
27269 2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
27271         * media.cpp (MediaElement::UpdateProgress): Check (pos +
27272         buffering_size) > size, not < size. Duh.
27274         * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
27275         argument to use in place of media->GetSource().
27276         (Media::Open): Don't set this->source unless we successfully open
27277         the source.
27279 2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
27281         * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
27282         set the state to Buffering so that calling Play() will actually
27283         start playing the media (if the file was local, then we'll be in
27284         the Opening state which means that calling Play() will only note
27285         that a Play action was requested, but won't actually play the
27286         media).
27287         (MediaElement::SetState): Don't check for downloaded_file == NULL,
27288         it might fail in the above case.
27290 2008-01-26  Jackson Harper  <jackson@ximian.com>
27292         * xaml.cpp: Set the encoding when we are reading files also.
27294 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27296         * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
27297         greater than the current wait_pos.
27299         * media.cpp (UpdateProgress): Use the buffering_start position
27300         rather than the current write position to calculate buffer_size.
27302 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27304         * media.cpp (TryOpen): When download is complete and we
27305         successfully open the media, don't set the state to Paused - this
27306         breaks Halo3 if the video is cached.
27308         * media.cpp|h: Consolidated all of the bool state variables into a
27309         single bitfield.
27311 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27313         * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
27314           waiting for publicly available.
27315         * media.cpp: UpdateProgress: use the position the file is waiting for to
27316           calculate the buffer size (if it would exceed the default buffer size).
27318 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27320         * media.h: Add some descriptive comments.
27322 2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
27324         * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
27325         instead of calling it since it can reduce some heavy cairo calls 
27326         (cairo_in_*), if there's a clip, otherwise it won't affect 
27327         performance.
27329 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27331         * media.cpp: Initialize play_pending, and when buffering is
27332           finished, only play if autoplay or play_pending is true.
27334 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27336         * mplayer.cpp: Get rid of some unused variables and cleaned up
27337         some code.
27339 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27341         * pipeline.cpp, media.cpp: More printfs removed.
27343 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27345         * src.mdp: Updated.
27347         * pipeline-ffmpeg.cpp: Commented out printf.
27349         * pipeline.h, pipeline.cpp: Removed some dead code. Made all
27350         interfaces inherit from IMediaObject, and put the media field
27351         there. Commented out printfs.
27353         * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
27354         simplify code a bit. Encapsulated target_pts handling into
27355         separate methods.
27357         * media.h, media.cpp: Create one and only one MediaPlayer for the
27358         life-time of the MediaElement. If not AutoPlay is set, then pause
27359         instead of play.
27361 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27363         * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
27364           usage, but on construction, and finish it upon destruction. Fixes race
27365           between creating and destructing the thread.
27367 2008-01-24  Chris Toshok  <toshok@ximian.com>
27369         * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
27370         (calc_perpendicular_intersection_points): new method.
27371         (Stroke::HitTestSegmentSegment): use
27372         calc_perpendicular_intersection_points to give us the end points
27373         of the outer line segments, and use those for hit testing.
27375 2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
27377         * media.cpp (UpdateProgress): When switching to Buffering mode,
27378         save the position where we're currently at in the file so that we
27379         can use that as a reference point when calculating progress. Also,
27380         pause the MPlayer so that audio won't continue to play while we're
27381         waiting for buffering to complete. Fixes bug #356051.
27383 2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
27385         * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
27386         (or fill) are present for the shape.
27388 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27390         * pipeline.cpp, pipeline.h: Create a more general worker thread,
27391         and use unions to save some space in WorkItem. In the ASFDemuxer,
27392         when seeking, we need to seek to the audio stream, since that's
27393         what we're using to sync against (if we have audio).
27394           
27395         * list.cpp, list.h: Added List::InsertBefore.
27397 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27399         * media.cpp: MediaElement::SetSource: only trigger the download
27400         after we've attached to the CompletedEvent.
27402 2008-01-23  Chris Toshok  <toshok@ximian.com>
27404         * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
27405         re-enter HandleMouseEvent, which can happen when that stupid JS
27406         timeout dialog pops up.
27408 2008-01-23  Chris Toshok  <toshok@ximian.com>
27410         * runtime.cpp (Surface::SetMouseCapture): this fails not only if
27411         there's an existing capture, but also if there's a pending
27412         capture (so if both a parent and child capture on the same event,
27413         the child gets it.)  Fixes dragging things around in ink journal.
27415 2008-01-23  Chris Toshok  <toshok@ximian.com>
27417         * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
27418         only tests that are implemented are endcap (ellipse) vs. point,
27419         and segment vs. segment (although this one isn't the full test, as
27420         we're using the stroke line, as opposed to the exterior lines
27421         created by the ellipse pen tracing that line).
27423         * rect.h: add PointInside (Point p).
27424         
27425 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27427         * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
27428         it's no longer part of the build.
27430 2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
27432         * shape.cpp|h: Add support for different PenLineCap on Line (part 
27433         of #345888). Fix Polyline when a single segment is used (removed 
27434         TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
27436 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27438         * media.cpp (SetSource): Initialize the ProgressiveSource.
27440         * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
27441         parent class's implementation.
27443 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27445         * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
27447 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27449         * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
27450         where the caller is trying to read a block larger than our
27451         internal buffer.
27452         (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
27453         uint64_t (which is needed in the case of seeking backwards).
27455 2008-01-22  Larry Ewing  <lewing@novell.com>
27457         * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
27458         and into Path.cpp as a transform not by modifying the data.
27460         * geometry.cpp, geometry.h: remove stretch logic.
27462 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
27464         * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
27465         if within our pre-buffered bounds.
27466         (ProgressiveSource::Write): When restoring position state, use the
27467         proper offset (e.g. the offset of the end of our pre-buffered
27468         block).
27470 2008-01-22  Chris Toshok  <toshok@ximian.com>
27472         * collection.cpp (UIElementZIndexComparer): the magnitude of the
27473         return value doesn't matter, only the sign.
27475 2008-01-22  Chris Toshok  <toshok@ximian.com>
27477         * media.cpp (Image::InsideObject): if we have no surface (the
27478         image hasn't been loaded), we aren't HitTestVisible.
27480         * media.h (class Image): add InsideObject override.
27482 2008-01-22  Chris Toshok  <toshok@ximian.com>
27484         * panel.cpp (Panel::OnCollectionChanged): remove the fix for
27485         #353954 as its redundant after the previous commit.
27487 2008-01-22  Chris Toshok  <toshok@ximian.com>
27489         * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
27490         function works.
27492 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
27494         * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
27495         call Initialize() on the file source.
27497         * pipeline.cpp (IMediaSource): Read() now returns the number of
27498         bytes read rather than true/false and does nto guarantee that all
27499         of the data was read. Added a ReadAll() method which does what the
27500         old Read() method did.
27501         (FileSource): Rewritten to do our own buffering which allows for
27502         nice optimizations for Peek() and Seek().
27503         (ProgressiveSource): Also rewritten.
27505         * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
27507         * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
27508         just made them extern in the ehader, this way we don't duplicate
27509         those values in each source file that includes this header.
27511 2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
27513         * shape.cpp|h: First part of DoDraw refactoring. Pass all 
27514         regression tests from harness (moon versus moon) but it's possible
27515         that some degenerated cases (without test cases) regress.
27517 2008-01-22  Larry Ewing  <lewing@novell.com>
27519         * clock.cpp: initalize the smoothing to max framerate, the first
27520         frame is quite likely the slowest frame we'll ever draw.  Bump
27521         error delta back up to 1/50th.
27523 2008-01-22  Chris Toshok  <toshok@ximian.com>
27525         * media.cpp (MediaElement::Render): a little cairo cleanup, and
27526         remove the USE_OPT_REGION_CLIP block.
27528 2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
27530         * pipeline.cpp: include unistd.h, fixes a build error introduced in
27531         r93311 when building without-ffmpeg
27533 2008-01-22  Larry Ewing  <lewing@novell.com>
27535         * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
27536         previous commit.
27538 2008-01-22  Larry Ewing  <lewing@novell.com>
27540         * clock.cpp: Tweak clock timing and smoothing.  Increase timer
27541         priority so that ticks get deliver when we want them this doesn't
27542         change the smoothing calculation but it can raise the actual fps
27543         by assuring all our clocks are delivered.  Change smoothing alpha
27544         from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
27545         unless our new calculated timeout differs from our old by at least
27546         1/50 of a second.  Resetting the clock on every tick had the
27547         effect adding the drawing time to the tick time for every tick
27548         since the timeout starts over at zero.
27550 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
27552         * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
27553         unspecified, encode the bitrate back into the header so that if we
27554         are using the NullMp3Decoder, it will know how to handle
27555         it. Probably also needed for any actual Mp3 decoders as well since
27556         it won't reliably be able to keep track of variable-bitrate
27557         streams otherwise since it wouldn't know if/when we seek.
27558         (NullMp3Decoder::DecodeFrame): Implemented.
27560 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27562         * pipeline.cpp: Remove printf.
27564 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27566         * src.mdp: Remove mplayer2.cpp from here too.
27568 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27570         * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
27571           mplayer2.cpp to mplayer.cpp.
27573 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
27575         * downloader.cpp (ll_downloader_get_response_file): Fixed to use
27576         mkstemp() rather than tmpnam_r() and also simplified.
27578         * pipeline.cpp: Fixed various things about the progressive stream.
27580 2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
27582         * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
27583         don't memmove() data unless we don't have enough to play a single
27584         frame. Instead, what we'll do is keep progressing audio->outbuf as
27585         we play it.
27587 2008-01-19  Chris Toshok  <toshok@ximian.com>
27589         * uielement.cpp (UIElement::OnPropertyChanged): remove the
27590         handling of TriggersProperty and ResourcesProperty's closure.
27592         * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
27593         method.
27595         * transform.cpp (TransformGroup::OnPropertyChanged): remove
27596         handling of ChildrenProperty's closure.
27598         * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
27599         the handling of Inlines->closure from TextBlock.
27601         * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
27602         methods (InkPresenter and Stroke).
27604         * panel.cpp (Panel::OnPropertyChanged): remove handling of the
27605         ChildProperty's closure here.
27607         * media.cpp, media.h: remove the unnecessary
27608         MediaBase::OnPropertyChanged.
27610         * geometry.cpp, geometry.h: remove a few OnPropertyChanged
27611         methods (GeometryGroup, PathGeometry, and PathSegment.)
27613         * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
27615         * brush.cpp, brush.h: remove the unnecessary
27616         Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
27618         * animation.cpp, animation.h: remove all the
27619         *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
27620         they did was deal with collection closures.
27622         * dependencyobject.cpp (DependencyObject::SetValue): factor out
27623         the "collection->closure" setting code from all the
27624         OnPropertyChanged methods sprinkled around and put it here.  Also,
27625         set collection->closure to NULL on the old value (something the
27626         old code didn't do).
27628 2008-01-19  Chris Toshok  <toshok@ximian.com>
27630         * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
27631         NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
27632         use.
27634         * animation.h: clean this file up by removing all those disgusting
27635         macros.  for the DECL macros, just expand them here, as having the
27636         methods listed in the class declaration is a good thing.
27638         * collection.cpp (collection_new): remove the switch statement
27639         from here and use Type::CreateInstance instead.  this largely
27640         removes the need to be including extra headers (like animation.h).
27642 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27644         * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
27645           MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
27646         * src.mdp: Updated.
27648 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27650         * media.h, media.cpp: MediaElement: make this a state machine to follow the
27651           behaviour specified in MSDN. Implement buffering of media files.
27652           MediaSource (and derived): take a IMediaSource instead of a filename.
27653         * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
27654           Remove all MOON_MEDIA ifdefs, too many changes to support both versions
27655           now. Make seeking async.
27656         * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
27657           worker thread, seeking can now be done there too. Implement
27658           ProgressiveSource.
27659         * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
27660           the file extension. MediaSource (and derived): take a IMediaSource
27661           instead of a filename.
27662         * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
27663           filename.
27665 2008-01-18  Larry Ewing  <lewing@novell.com>
27667         * uielement.cpp: compute total_opacity for invalidation logic but
27668         use local_opacity for drawing.  This fixes monotones grid.xaml and
27669         some hit test regressions.
27671 2008-01-18  Jackson Harper  <jackson@ximian.com>
27673         * xaml.cpp: KeyFrameCollections can be specified in the xaml if
27674         they are in a property element.
27675         - When searching for collections, use is subclass instead of
27676         making them be the same type, so derivied collections can be used.
27677         
27678 2008-01-17  Chris Toshok  <toshok@ximian.com>
27680         * pipeline.h (class IMediaDemuxer): initializer streams and
27681         stream_count so we don't crash on ltbennett.com.
27683 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
27685         * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
27686         MPEG header, set MediaFrame->event to EOF. Same if we can't read
27687         the frame data.
27688         (Media::GetNextFrame): Don't try to decode the frame if it is an
27689         event.
27690         (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
27691         EOF.
27693         * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
27694         (AdvanceFrame): Handle EOF frame events.
27695         (audio_loop): Handle EOF frame events.
27697 2008-01-17  Chris Toshok  <toshok@ximian.com>
27699         * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
27700         invalidate the old bounds of the stroke for ItemRemoved as well as
27701         ItemChanged.
27703 2008-01-17  Chris Toshok  <toshok@ximian.com>
27705         * rect.h (Rect::Transform): new method, allows for transforming a
27706         rectangle by a cairo_matrix_t, used with transforming the stroke
27707         bounds back to screen space using the InkPresenter's
27708         absolute_xform.
27710         * stylus.cpp, stylus.h: deal with collection changed notifications
27711         on Stroke::StylusPointsProperty and on
27712         InkPresenter::StrokesProperty, and correctly invalidate a stroke's
27713         bounds.  The bounds of a stroke needs to be looked at - right now
27714         it's in the coordinate space of the InkPresenter, and so it needs
27715         to be transformed back to screen space before invalidating.  Need
27716         to check if MS uses screen space for a stroke's bounds (seems
27717         likely they do, but this was easier to code.)
27719 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
27721         * mplayer2.cpp: Updated for MediaFrame changes.
27723         * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
27725         * pipeline.cpp: Instead of having a compressed_data and
27726         uncompressed_data field, simply have a 'buffer' field that gets
27727         reused by both the demuxer and the decoder. The decoder will set
27728         the buffer to the compressed data and the decoder will, once
27729         finished decoding, free the buffer and then update it to point to
27730         the decoded data. This reduces memory overhead.
27732 2008-01-17  Chris Toshok  <toshok@ximian.com>
27734         * uielement.cpp (UIElement::InsideClip): use
27735         uielement_transform_point instead of duplicating it.
27737         * shape.cpp (Shape::InsideObject): use uielement_transform_point
27738         instead of duplicating it.
27740         * text.cpp (TextBlock::InsideObject): use
27741         uielement_transform_point instead of duplicating it.
27743 2008-01-17  Larry Ewing  <lewing@novell.com>
27744         
27745         * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
27746         unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
27747         more rectangle testing after this.
27749 2008-01-17  Jackson Harper  <jackson@ximian.com>
27751         * xaml.cpp: After setting a property stop walking up the element
27752         tree.
27754 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27756         * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
27758 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
27760         * mplayer2.cpp (audio_decode): Removed as it is no longer really
27761         needed.
27762         (audio_loop): We can't assume that an entire decoded audio packet
27763         will fit into the audio output buffer in a single shot, break it
27764         up if needed.
27766 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27768         * mplayer2.cpp: Max out video frame rate at 60fps.
27770 2008-01-17  Fernando Herrera  <fherrera@novell.com>
27772         * panel.cpp: Reorder based on ZIndex when a new item is added.
27773         Fixes bug #353954
27775 2008-01-17  Larry Ewing  <lewing@novell.com>
27777         * runtime.cpp (Surface::InitializeDrawingArea): disable extended
27778         input devices until the remaining issues can be resolved.
27780 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27782         * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
27784 2008-01-16  Larry Ewing  <lewing@novell.com>
27786         * uielement.cpp, uielement.h: 
27787         * panel.cpp, panel.h: 
27788         * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
27789         Combine the opacity visibility check into the total render
27790         visibility.  Make sure we compute/invalidate in all the same
27791         places.
27793         * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
27795         * uielement.cpp (UIElement::DoRender): make sure we don't reset
27796         the coordinate system when setting up the clip calls in the
27797         opacity and opacity mask cases.  Go back to using the brush
27798         directly when rendering masks.  Should speed things up a little
27799         and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
27801 2008-01-16  Chris Toshok  <toshok@ximian.com>
27803         * stylus.h, stylus.cpp: a few changes.  Move the
27804         StylusPointCollection and StrokeCollection classes here from
27805         collection.h/collection.cpp.  I didn't like the addition of
27806         stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
27807         the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
27808         methods, and build up the bounds for the StrokeCollection by
27809         unioning all the Stroke bounds (these should be cached, but aren't
27810         yet.)  StrokeCollection::HitTest has been implemented, just
27811         looping over the strokes.  Stroke::HitTest is missing its guts at
27812         the moment, since hit testing is going to be a little bit of a
27813         pain for it.
27815         * collection.h, collection.cpp: remove StylusPointCollection and
27816         StrokeCollection.
27818 2008-01-16  Larry Ewing  <lewing@novell.com>
27820         * uielement.cpp, uielement.h: Rework the way we handle opacity to
27821         operate like the reference platform by removing the concept of
27822         TotalOpacity and instead using push/pop group and paint_with
27823         alpha.  See test-sibling-opacity.xaml for an example.  Handle
27824         clipping in DoRender rather than in every subclass because we want
27825         the clip path active before calling push/pop so that the temporary
27826         surface is bounded.
27827         * brush.cpp, panel.cpp: remove GetTotalOpacity references.
27828         * media.cpp, media.h: cleanup the complicated render logic now
27829         that things are handled in uielement.
27830         * shape.cpp, text.cpp: remove RenderClipPath calls.
27832         * rect.cpp, rect.h: add draw methods.
27834 2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
27836         * pipeline.cpp: Implemented mpeg seeking support for
27837         Mp3FrameReader and, thusly, Mp3Demuxer.
27838         (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
27840 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27842         * mplayer2.cpp: Remove a superfluous variable from Audio.
27844 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27846         * mplayer2.cpp: Remove superfluous variables from Video.
27848 2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
27850         * moon-path.c: Fix typo (but was same value).
27852 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
27854         * pipeline.cpp: Implemented mp3 demuxer.
27856 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27858         * mplayer2.cpp: Don't crash if Seek is called before Open.
27860 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27862         * mplayer2.cpp: Remove dead code and variables, and only request
27863         audio/video frames if we have audio/video.
27865 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
27867         * mplayer2.cpp: Get rid of extra member variables in Packet.
27869 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27871         * mplayer2.cpp: Implement audio decoding on the main thread as well.
27873 2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
27875         * pipeline.cpp: Partially implemented an mp3 demuxer.
27877 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27879         * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
27880           work again with the new pipeline.
27882 2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
27884         * shape.cpp|h: It looks like we stopped needing consider_fill a 
27885         while ago.
27887 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27889         * mplayer.h: We don't need io_tread anymore, so remove it.
27890         * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
27891           for doing the decoding on the main thread with easy (in-code) switch.
27892           Comment out printfs, and remove dead/old/commented-out code.
27893         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
27894           decoding on the main thread with easy (in-code) switch.
27895         * runtime.cpp: Don't print entire object tracking output if nothing leaked.
27897 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27899         * xaml.cpp: Unref a matrix object when we are done with it.
27900         * mplayer2.cpp: Remove printf.
27902 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27904         * mplayer2.cpp: Remove printfs.
27905         * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
27906           are errors.
27907         * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
27909 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27911         * pipeline.cpp: Fix crash with several web-sites (when seeking before
27912           reading anything).
27914 2008-01-11  Chris Toshok  <toshok@ximian.com>
27916         * clock.h (class Clock): add an instance
27917         field (calculated_natural_duration).
27919         * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
27920         current time here.  this was inflating animation begin time's in
27921         some cases to be either very close to the parent's calculated
27922         duration (or even after it).
27923         (ClockGroup::ComputeBeginTime): don't chain up to
27924         Clock::ComputeBeginTime.  clock groups in our system need to
27925         include their parent time in their begin time.  There are only two
27926         levels of clockgroups - storyboards, and the clockgroup we have
27927         associated with a given surface (Which will be the parent of all
27928         the storyboards running on that surface.)
27929         (output_clock): print out the BeginTime of the clock.
27930         (TimeManager::AddChild): I don't really like this, but we need to
27931         force the calculation of the natural duration of the clock when
27932         it's added to the hierarchy.
27933         (ClockGroup::AddChild): same here.
27934         (Clock::Clock): don't calculate the natural duration of the clock
27935         here - when we instantiated a ClockGroup it was calculating the
27936         duration before the child clocks were added.
27938 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27940         * pipeline.cpp: Seek on the frame reader, not on the source.
27941         * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
27942           HasAudio/Video (). Fix seeking to actually work.
27944 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27946         * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
27947           mplayer.h where it belongs.
27948         * pipeline.cpp, pipeline.h: Implement seeking.
27949         * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
27950           directly, since ffmpeg uses one single memory location for all decoded
27951           frames, causing us to always show the last decoded frame.
27953 2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
27955         * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
27956         See bug #345892 for the required cairo patch.
27958 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27960         * media.cpp: Initialize Media too upon initialization.
27961         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
27962           mplayer2.cpp, mplayer.cpp: Implement registration of components, making
27963           it possible to completely remove ffmpeg.
27965 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27967         * pipeline.cpp: Remove stray character.
27969 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27971         * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
27972           pipeline-ffmpeg.h: Code-cleanup.
27974 2008-01-10  Larry Ewing  <lewing@novell.com>
27976         * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
27977         before setting the extension events (lame api) and disable the
27978         cursor test.
27980 2008-01-10  Chris Toshok  <toshok@ximian.com>
27982         * runtime.cpp (Surface::InitializeDrawingArea): activate all
27983         devices that have a cursor associated with them.
27985 2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
27987         * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
27989 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27991         * mplayer.cpp: Surround with ifdef to conditionally include the new
27992           MediaPlayer or not.
27993         * Makefile.am: Added pipeline* and mplayer2.cpp.
27994         * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
27995           the pipeline.
27996         * pipeline.cpp, pipeline.h: Added.
27997         * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
27999 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28001         * panel.cpp: Delete leaked region.
28003 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28005         * src.mdp: Added.
28007 2008-01-09  Chris Toshok  <toshok@ximian.com>
28009         * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
28010         _get_bounds.
28012 2008-01-09  Chris Toshok  <toshok@ximian.com>
28014         * collection.h, collection.cpp: add C wrappers for
28015         StrokeCollection::GetBounds and ::HitTest.
28017         * stylus.h, stylus.cpp: same deal for Stroke::
28018         
28019 2008-01-09  Chris Toshok  <toshok@ximian.com>
28021         * collection.h, collection.cpp: add empty implementations of
28022         StrokeCollection::GetBounds and StrokeCollection::HitTest.
28024         * stylus.h, stylus.cpp: add empty implementations of
28025         Stroke::GetBounds and Stroke::HitTest.
28027 2008-01-09  Chris Toshok  <toshok@ximian.com>
28029         * uielement.h, uielement.cpp: change all the Emit* methods that
28030         deal with mouse events to take a GdkEvent instead of state/x/y,
28031         and also change their calldata to a heap allocated MouseEventArgs,
28032         which we unref after the emit.  This is because the pointer itself
28033         is wrapped by the managed MouseEventArgs, and will be unref'ed in
28034         ~MouseEventArgs at some later time.
28036         * runtime.h, runtime.cpp: change all the mouse events to pass
28037         around the actual GdkEvent instead of the state/x/y.  This is due
28038         to the fact that our MouseEventArgs class now wraps the GdkEvent,
28039         so we can get at all the stylus/extension event stuff.
28041         * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
28042         longer required.  We correctly create a StylusInfo instance from
28043         the MouseEventArgs.
28045         * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
28046         (libmooninclude_headers): add eventargs.h
28048         * libmoon.h: add eventargs.h.
28050         * eventargs.h, eventargs.cpp: new files, splitting out the
28051         KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
28052         out MouseEventArgs, making it a refcounted object with enough
28053         smarts to handle both the managed case and plugin case.  Include
28054         all the stylus related code as well, so this *should* make all the
28055         stylus requiring demos work.
28057 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28059         * geometry.cpp (path_get_bounds): My fix the other day wasn't
28060         quite ideal. Instead of using a 0.1 line thickness when the
28061         shape's StrokeThickness is 0, continue using that 0 thickness but
28062         use cairo_fill_extents() instead. Also, when shape is null, ise a
28063         0.0 thickness & cairo_fill_extents() as well.
28065         * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
28066         that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
28068         * runtime.cpp (EmitEventOnList): Changed to take double x,y
28069         coordinate arguments rather than int.
28070         (HandleMouseEvent): Same.
28072 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28074         * list.cpp (List::~List): Added a dtor that deletes all nodes
28075         currently in the list. This is doable now that List::Nodes are
28076         classes where the node dtors can be overloaded.
28078 2008-01-09  Jackson Harper  <jackson@ximian.com>
28080         * xaml.cpp: If a property is a collection, don't assume that the
28081         collection is already initialized (they used to always be), and
28082         initialize the collection if needed. This fixes BNC 350893.
28084 2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
28086         * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
28087         on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
28089 2008-01-08  Chris Toshok  <toshok@ximian.com>
28091         * animation.cpp (Storyboard::Begin): simple change to fix a nasty
28092         bug.  we need to add the teardown handler before the completed
28093         handler.  otherwise cases where people were using a storyboard as
28094         a timer would break - the completed handler would fire, the JS
28095         would restart the storyboard, then the teardown handler would free
28096         the new clock hierarchy.  Fixes the page animation in pageturn,
28097         and gets the bubbles moving again in the SilverlightCLRBalls demo.
28099 2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
28101         * geometry.cpp (path_get_bounds): Cairo seems to break if the line
28102         thickness is 0.0, so if the shape's thickness is set to 0.0, use
28103         0.1 like we do if shape is null. Fixes bug #351575.
28105 2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
28107         * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
28108         that ignore those properties, can avoid setting them on the cairo
28109         context.
28111 2008-01-04  Chris Toshok  <toshok@ximian.com>
28113         * runtime.cpp: mostly switch all emit_* calls to take doubles, and
28114         pass doubles around for button x/y.
28115         (Surface::motion_notify_callback): if we're gtk > 2.12, use
28116         gdk_event_request_motions (falling back to gdk_window_get_pointer
28117         if not).  also, we can use the mouse_event_x/y from the event,
28118         even when it's a hint.
28120         * runtime.h: switch back to using doubles for everything mouse
28121         event related.  Change MoonlightEventEmitFunc to take doubles.
28123 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28125         * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
28126         since the events that use them want them as ints anyway.
28127         (button_release_callback): Cast the button->x/y doubles to int.
28128         (button_press_callback): Same.
28129         (motion_notify_callback): Cast event->x/y to int.
28130         (crossing_notify_callback): Same.
28132         * dependencyobject.cpp: EventObjects now use a List class for
28133         event_lists rather than GSList which is far more costly for
28134         appends.
28135         (Emit): Reduce the number of linked-list iterations from 5 to 2.
28137 2008-01-04  Chris Toshok  <toshok@ximian.com>
28139         * runtime.h, runtime.cpp: completely overhaul the way we handle
28140         mouse events.  Instead of doing both hit testing and event
28141         dispatch in one recursive tree traversal, we build up a list of
28142         all elements that will bubble the event, and then use that list
28143         along with the previous one to generate Enter/Leave events for the
28144         elements that require it.  Also fix the way capture is done (it's
28145         not handled until the end) and fix the Enter event dispatch when
28146         you release mouse capture.
28148         * uielement.h, uielement.cpp: rename the mouse events to match the
28149         names used in C# and JS, as it's been singularly annoying to
28150         remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
28151         rename all the Handle* event methods to Emit*, as that's all they
28152         do.  Make them nonvirtual, as the traversal and emission of the
28153         events now happens in runtime.cpp.  Add a new virtual
28154         method (HitTest), that is overridden by the container elements,
28155         which appends elements that are going to bubble the event to the
28156         list.
28158         * panel.h, panel.cpp: remove all the Handle* methods, implement
28159         HitTest.
28161         * control.h, control.cpp: remove all the Handle* methods,
28162         implement HitTest.
28164 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28166         * media.cpp (UpdateProgress): Don't SetValue() unless the delta
28167         was large enough - otherwise we could get into a situation where
28168         we never emit a progress changed event in a case where the data
28169         trickles in at < 0.05%.
28171 2008-01-04  Chris Toshok  <toshok@ximian.com>
28173         * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
28174         up the clock hierarchy for the target property like we do with the
28175         target name.
28177 2008-01-04  Chris Toshok  <toshok@ximian.com>
28179         * media.h: add Image::DownloaderFailed.
28181         * media.cpp (Image::UpdateProgress): make sure to qualify the
28182         DownloadProgressProperty we lookup on the Downloader, since
28183         without the Downloader:: it'll try to get
28184         Image::DownloadProgressProperty, which will always return 0.0.
28185         (Image::SetSource): use the static qualifier for
28186         events (Downloader:: instead of downloader->).
28187         (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
28189         * brush.cpp (ImageBrush::image_progress_changed): make sure to set
28190         our ImageBrush::DownloadProgressProperty before emitting the
28191         changed event.
28192         (brush_init): lookup the ImageBrush::ImageFailedEvent.
28194 2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28196         * runtime.cpp: Free background_color upon surface
28197           destruction. Fixes a minor leak.
28199         * clock.cpp|h: Free the tick_call_mutex upon destruction.
28201 2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
28203         Fix for bug #350962
28205         * media.cpp (MediaBase::OnPropertyChanged): Don't emit
28206         DownloaderProgressChanged events anymore, leave that up to Image
28207         and MediaElement classes so that we don't emit events when an
28208         outside source changes the value.
28209         (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
28210         event if the proper download delta has occured.
28211         (Image::UpdateProgress): Same.
28213 2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28215         * dependencyobject.h: Remove warning.
28217 2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
28219         * runtime.h (CreateDownloader): Simplified.
28221 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28223         * collection.cpp: Upon destruction on VisualCollection, remove the visual
28224           parent of all items.
28225         * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
28226           how to use them.
28227         * dirty.cpp: Don't take a ref in DirtyNode.
28229 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28231         * media.cpp: Add const modifier 
28233 2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28235         * downloader.cpp: Null-initialize a field.
28236         * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
28238 2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28240         * pipeline.h: Added, the start of the new media pipeline.
28242 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
28244         * collection.cpp|h: Add missing method AddStylusPoints for 
28245         StylusPointCollection
28247 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
28249         * geometry.h: Remove hack for PathGeometry::FiguresProperty
28250         * xaml.cpp: If a collection is null by default then we must call
28251         parent->SetValue(dp, collection) or the collection, and it's 
28252         contents, won't be available. Fix (correctly) Chess.
28254 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
28256         * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
28257         there's no default Figure collection. Fix Chess crasher.
28258         * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
28259         foir doubles, and as an "empty" (but not NULL) Value for 
28260         DOUBLE_ARRAY.
28262 2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28264         * media.cpp, media.h: Implement support for markers as a separate stream
28265           (the demuxer will call a callback when it encounters any streamed
28266           markers).
28268 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
28270         * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
28271         now needed since it defaults to null and not an empty collection.
28273 2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
28275         * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
28277 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
28279         * color.cpp: Handle empty string correctly in color_from_str. Unit 
28280         tests shows this return 0 (and not transparent).
28282 2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
28284         * xaml.cpp: fix for bnc 348581.
28286 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
28288         * brush.cpp: Fix default color values for SolidColorBrush::Color and
28289         GradientStop::Color properties (see js unit tests).
28290         * geometry.cpp|h: Remove default collection from PathGeometry. Fix
28291         testPathGeometry unit test.
28293 2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28295         * media.cpp: ReadASFMarkers: Read markers as well as script commands.
28296           Subtract the preroll value from the pts before adding the marker. Unref
28297           the created collection and markers when finished with them.
28298           AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
28299           frame (might be necessary if the last frame has a marker).
28301 2007-12-17  Jb Evain  <jbevain@novell.com>
28303         * xaml.cpp: fix testMatrixWithZeroItem test case.
28305 2007-12-17  Jb Evain  <jbevain@novell.com>
28307         * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
28308         value type, has SL exposes it as a DependencyObject.
28310         * transform.cpp|h: define and implement the
28311         Matrix DependencyObject type.
28313         * xaml.cpp: create a Matrix DO on a Matrix xaml element.
28314         Also create such an object with the <MatrixTransform Matrix='...'>
28315         syntax.
28317 2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
28319         * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
28320         is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
28322 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
28324         * runtime.cpp (fps_report_default): Default printf FPS report
28325         callback.
28326         (Surface::render_cb): Use instance-local variables for keeping
28327         track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
28328         is set.
28330         * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
28331         (class Surface): New method to set the FPS report callback for a
28332         surface.
28334 2007-12-14  Chris Toshok  <toshok@ximian.com>
28336         * type.cpp.in, type.cpp (types_init_register_events): need to
28337         register DownloadProgressChanged and ImageFailed events on
28338         imagebrushes.
28340         * brush.h, brush.cpp: same, and hook up the events from
28341         ImageBrush's embedded image so that we can re-emit the events.
28342         
28343 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
28345         * downloader.cpp (Downloader::Abort): Don't abort if we've already
28346         been aborted or been notified that we've failed (needed protection
28347         for the Plugin downloader).
28348         (Downloader::Send): Set aborted = false.
28349         (Downloader::NotifyFailed): Don't do anything if we've already
28350         been notified of failure for this download request.
28352         * downloader.h (class Downloader): Keep track of aborted state as
28353         well.
28355 2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
28357         * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
28358         only one (Width XOR Height) is provided.
28360 2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
28362         * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
28363         been built before calling cairo_stroke_extents. This fix sample
28364         http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
28366 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
28368         * shape.cpp|h: Shortcut path bounds calculation when both Width
28369         and Height are specified. Add same clipping rules to Line, 
28370         Polyline and Polygon classes.
28372 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
28374         * geometry.cpp: Resume using cairo_stroke_extents in some cases
28375         because we need very precise bounds for Fill to work properly.
28376         This fix Sprawl's cowboy hat ribbon :-)
28378 2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
28380         * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
28382 2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
28384         * downloader.cpp|h: Made the ::Write() method take the same
28385         int-type args as the NPP_Write() function (which means int32 for
28386         both offset and nbytes).
28388 2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
28390         * stylus.cpp: Fix JS unit tests for Stroke properties by having
28391         a default DrawingAttributes inside the Stroke.
28393 2007-12-10  Chris Toshok  <toshok@ximian.com>
28395         * dependencyobject.h, dependencyobject.cpp: more event changes.
28396         events keep a integer "token" per event, that starts at 0, that is
28397         returned from the plugin's addEventListener method, and can be can
28398         be passed to the plugin's removeEventListener method.
28400 2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
28402         * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
28403         property of the Shape. Fix bug #346018
28405 2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
28407         * runtime.cpp (InitializeDrawingArea): Removed the call to
28408         gtk_widget_set_size_request() - we now call it elsewhere (since
28409         going fullscreen requiers us to call set_size_request() /before/
28410         calling gtk_window_fullscreen(). When going to fullscreen mode,
28411         this was causing the FullScreenMessage item to appear in the
28412         upper-left corner rather than centered like it should have been.
28413         (Surface): Make the call to gtk_widget_set_size_request() here now
28414         that it no longer is called inside InitializeDrawingArea().
28416 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
28418         * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
28419         * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
28420         bounds calculation on paths when Height *and* Width are present.
28422 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
28424         * shape.cpp: In Shape::ComputeBounds don't compute half thickness
28425         unless the value is needed.
28427 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28429         * xaml.cpp: Plug more leaks.
28431 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28433         * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
28434           detected by the javascript tests.
28436 2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
28438         * media.cpp (media_element_get_attributes): Added.
28439         (media_element_set_attributes): Added.
28440         (MediaElement): Set an empty list of attributes as per the spec.
28442 2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
28444         * media.cpp:
28445         * brush.cpp: implement RelativeTransform for image brushes and 
28446         LinearGradientBrush. RadialGradientBrush still missing.
28448 2007-12-06  Chris Toshok  <toshok@ximian.com>
28450         * dependencyobject.h, dependencyobject.cpp: make
28451         EventObject::AddHandler return the id (when using the event_name
28452         variant).
28454 2007-12-06  Chris Toshok  <toshok@ximian.com>
28456         * xaml.cpp (xaml_init): register the right constructors for
28457         PathSegmentCollection, GeometryCollection, and
28458         TransformCollection.
28460 2007-12-05  Chris Toshok  <toshok@ximian.com>
28462         * animation.cpp, animation.h: a couple of fixes.  Move away from
28463         watching the clock state in AnimationStorage and resetting the
28464         property value there.  instead, just override Clock::Stop in
28465         AnimationClock and call ResetPropertyValue on the storage.
28467         Also, when a storyboard's clock group is stopped, free it and
28468         remove it from the parent clock's list of children.  This should
28469         keep us from growing the number of clocks over time for
28470         storyboards which don't have Begin() called again (the only
28471         circumstance under which we destroy the clock).
28473         * clock.cpp, clock.h: handle the case where a clock can be started
28474         and then stopped before the next clock tick.  This happens when
28475         you move the mouse very quickly over the thumbnails in pageturn.
28477 2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
28479         * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
28480         (no path provided). Fix Build/ComputeBounds when no center point
28481         is provided.
28483 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28485         * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
28486           dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
28487           and make it a real property with accessors.
28489 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28491         * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
28492           animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
28493           logical_parent/SetLogicalParent/GetLogicalParent.
28495 2007-12-04  Larry Ewing  <lewing@novell.com>
28497         * media.cpp (Image::Render): fix the conditions for the opacity
28498         stability count.
28500 2007-12-03  Larry Ewing  <lewing@novell.com>
28502         * src/media.cpp (Image::Render): use paint_with_alpha if opacity
28503         is changing, use the old buffered alpha if it is not.
28505 2007-12-04  Jb Evain  <jbevain@novell.com>
28507         * stylus.cpp|h: add stylus_info_get_current function.
28508         Right now, it's an hack which always return a StylusInfo
28509         of type Mouse, not inverted.
28511 2007-12-03  Chris Toshok  <toshok@ximian.com>
28513         * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
28514         it now clamps to [0,duration_timespan].  This fixes the Simon
28515         "button flying off the screen" bug.
28517 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28519         * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
28520         iterating thru the list 6 times :)
28521         (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
28522         child_clocks list here too, or we end up corrupting memory.
28524 2007-12-03  Larry Ewing  <lewing@novell.com>
28526         * media.cpp (Image::Render): wrap the region clipping in a #define
28527         for testing.
28529 2007-12-03  Larry Ewing  <lewing@novell.com>
28531         * media.cpp (Image::Render): remove accumulated drawing cruft.
28533 2007-12-03  Chris Toshok  <toshok@ximian.com>
28535         * animation.cpp: put back in the calls to ComputeBeginTime that I
28536         accidentally committed a few days ago (and lewing reverted to fix
28537         the build).  they're needed with the new clock changes.
28539 2007-12-03  Chris Toshok  <toshok@ximian.com>
28541         * clock.cpp, clock.h: rework the clock code a bunch.  There are a
28542         couple of large changes.
28544         Get rid of the stupid new_ and current_ fields.  Just update the
28545         field immediately.  This cuts down on logic in if checks, and also
28546         makes subclocks update much faster in relation to their parent
28547         clock (we used to have to wait 1 tick per level in the tree for
28548         state to propagate).
28550         Abstract out all the QueueEvent calls into setters in clock.h.
28552         Break up Clock::Tick some, so more of the code is reusable from
28553         ClockGroup::Tick without having to call Clock::Tick and then work
28554         behind its back.
28556 2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
28558         * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
28559         already set on the pattern).
28561 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28563         * dependencyobject.cpp (RemoveHandler): Simplified a little.
28565         * animation.cpp (Stop): Remove the CompletedEvent root_clock
28566         handler. Fixes Simon's GAME OVER! textblock storyboard.
28568 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28570         * runtime.cpp: Added clipping/bounding-box override values.
28572         * uielement.cpp (DoRender): Changed optional bounding-box/clipping
28573         debugging drawing based on runtime settable bitflags.
28575 2007-12-03  Larry Ewing  <lewing@novell.com>
28577         * uielement.cpp: Clean up the debug rendering code for bounding
28578         boxes and clip regions.
28580 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28582         Fixes a bug pointed out by Larry when rendering lines beginning
28583         with a 'J', where the tail escapes the bounding box.
28585         * font.cpp (Layout): Use the horiBearingX font metric.
28586         (RenderLine): Same.
28588 2007-12-03  Larry Ewing  <lewing@novell.com>
28590         * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
28591         if we can't invert the matrix but still draw someting.
28593 2007-11-29  Larry Ewing  <lewing@novell.com>
28595         * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
28596         bounds to the clip region as well.
28598         * control.cpp (Control::ComputeBounds): differenciate between our
28599         bounds and our subpath bounds.
28601         * control.h: add bounds_with_children and GetSubpathBounds ().
28603 2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
28605         * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
28606         the font face charmap, use unichar = 0 rather than returning NULL.
28608 2007-11-28  Chris Toshok  <toshok@ximian.com>
28610         * runtime.cpp (Realloc): when we Realloc(), we need to tell the
28611         toplevel canvas to update its bounds.  This *may* be wrong, but it
28612         definitely fixes matrix.
28613         (UpdateFullScreen): we need to stop the timesource when emitting
28614         the fullscreenchangeevent.  otherwise we can end up stuck in a
28615         nested glib mainloop and never return from the emit (actually we
28616         never even invoke the JS callback in matrix.  the nested loop
28617         happens somewhere deep in the bowels of NPN_Invoke).
28619 2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
28621         * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
28622         hack that forced the assumption of a streaming (vs progressive)
28623         media download. Also fixed to emit a DownloadProgressChanged event
28624         at progress == 1.0 (which is what th Silverlight book says we're
28625         supposed to do).
28627 2007-11-28  Larry Ewing  <lewing@novell.com>
28629         * src/uielement.cpp (UIElement::DoRender): make sure we don't
28630         leave a path on the cairo context when clipping.
28632 2007-11-28  Chris Toshok  <toshok@ximian.com>
28634         * uielement.cpp (UIElement::UIElement): compute the initial total
28635         hit test visibility.
28637         * dirty.cpp (process_dirty_elements): don't invalidate/update
28638         bounds when the hit test visibility changes.
28640         * frameworkelement.(h,cpp): calculate the bounds here using
28641         width/height.
28643         * panel.cpp: chain up to frameworkelement.
28644         
28645 2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
28647         * text.cpp (TextBlock::SetValue): Check the resulting Inlines
28648         collection formed from the Text property being set against the old
28649         Inlines - if no change, don't set the new Inlines collection,
28650         simply keep using the old. The idea is to prevent unnecessary
28651         layout re-calculations and invalidates.
28653 2007-11-27  Chris Toshok  <toshok@ximian.com>
28655         * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
28656         canvas.cpp, collection.cpp, shape.cpp:
28658         rather large change - don't use a large rectangular bounding box
28659         encompassing both the panel's frameworkelement bounds as well as
28660         the bounds of all its children.  Instead, only worry about the
28661         frameworkelement bounds, and let the children invalidate
28662         themselves.  but do all this in a way that we still use the
28663         subtree's bounding box to prune rendering and hit testing.
28665         since we won't be invalidating the entire box surrounding all
28666         children, we need to propagate visibility information down the
28667         tree as we do opacity.
28669         This should really speed up most animations (such as those in
28670         sprawl and airlines) since we'll be invalidating far smaller
28671         areas.
28672         
28673         (this code was stupidly hard for lewing and me to get right.  yay
28674         for jet lag.)
28676 2007-11-23  Larry Ewing  <lewing@novell.com>
28678         * runtime.cpp: add show=expose to toggle expose display.
28680 2007-11-22  Jb Evain  <jbevain@novell.com>
28682         * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
28683         a glib warning if set_properties is NULL.
28685 2007-11-21  Chris Toshok  <toshok@ximian.com>
28687         * media.cpp (MediaElement::UpdateProgress): only set 1 of
28688         DownloadProgressProperty and BufferingProgressProperty.  The
28689         former is used if we're playing progressively, the latter if we're
28690         buffering before playing.  This fixes the buffering animation on
28691         the halo site.
28692         
28693 2007-11-21  Chris Toshok  <toshok@ximian.com>
28695         * runtime.cpp (Surface::Invalidate): add the int case around the
28696         complete expression to quiet gcc.
28698 2007-11-20  Larry Ewing  <lewing@novell.com>
28700         * runtime.cpp (Surface::expose_event_callback): take allocation
28701         offsets into account when invalidating and drawing.  Fixes
28702         #339010.
28704 2007-11-20  Chris Toshok  <toshok@ximian.com>
28706         * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
28707         2.12, destroy the hash table and set it to NULL so we'll recreate
28708         it.
28710 2007-11-20  Chris Toshok  <toshok@ximian.com>
28712         * collection.cpp (VisualRemoved): switch from using
28713         item->parent->ChildInvalidated(UIElement), use
28714         item->parent->Invalidate (item->GetBounds()).
28716         * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
28717         Invalidate (Region*) and update calls to it.  Remove
28718         ChildInvalidated(UIElement*).  Also, remove all references to the
28719         children_dirty_region field.  everything goes through dirty_region
28720         now.
28722         * dirty.cpp: switch to using item->parent->Invalidate instead of
28723         item->parent->ChildInvalidated, and remove references to
28724         children_dirty_region.
28726 2007-11-20  Chris Toshok  <toshok@ximian.com>
28728         * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
28729         copy before emitting an event.
28731 2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
28733         * runtime.cpp (surface_get_toplevel): Removed.
28735         * uielement.cpp (uielement_get_isloaded): Removed.
28737 2007-11-20  Jb Evain  <jbevain@novell.com>
28739         * downloader.h (Downloader): override SetSurface and GetSurface
28740         to work on a custom surface field.
28741         * downloader.cpp (Downloader::Downloader): initialize
28742         surface to NULL.
28743         * runtime.h (Surface::CreateDownloader): initialize the surface
28744         of the downloader.
28745         * collection.cpp: when removing an UIElement from an UIElementCollection,
28746         clear out its surface to NULL.
28747         * visual.cpp: remove null check preventing to set the surface to NULL.
28748         * dependencyobject.cpp: (DependencyObject::FindName): if the
28749         current DO has no parent, fallback to its surface to try
28750         FindName on its top level element (needed to call FindName
28751         on a downloader for instance). Fixes #335018.
28753 2007-11-20  Jackson Harper  <jackson@ximian.com>
28755         * xaml.cpp: If we need to reparse the attributes for an element
28756         (because we loaded a class and the props need to be set on the new
28757         class) we have to clear out the hash of properties that are marked
28758         as already set. Otherwise we get a property already set error.
28760 2007-11-20  Jackson Harper  <jackson@ximian.com>
28762         * xaml.cpp: Add new function to create a value from a string
28763         without having the Kind available (you still need to have the type
28764         in string form).
28765         - SetAttribute now ensures that the attribute was set properly
28766         - If the object we are trying to set an attribute on is a managed
28767         object and there is no DependencyProperty for the attribute, we
28768         try setting the attribute on the object.
28770 2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
28772         * uielement.cpp: Ensure the default value for VisibilityProperty
28773         is VisibilityCollapsed even if the value is invalid (for Javascript
28774         compatibility, since 1.1 should throw an exception). See #340799
28776 2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
28778         * uielement.cpp: FullInvalidate on setting Viibility to Visible.
28779         Fixes bnc #342662.
28781 2007-11-19  Larry Ewing  <lewing@novell.com>
28783         * uielement.cpp: setup the clip before push/pop group so that
28784         we reduce the temp surface size.
28786 2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
28788         * transform.cpp: Use cairo_matrix_init_translate instead of 
28789         cairo_matrix_init + cairo_matrix_translate where possible (which
28790         avoid the multiplication with the identity matrix).
28792 2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
28794         * runtime.cpp (surface_get_toplevel): New function needed by the
28795         managed land to implement a bit of a hack for the Resize
28796         event (when someone connects to the Resize event, if the toplevel
28797         canvas is already loaded, we want to immediately call the
28798         handler).
28800         * uielement.cpp (uielement_get_isloaded): Same.
28802 2007-11-15  Jackson Harper  <jackson@ximian.com>
28804         * Makefile.am:
28805         * parsertest.cpp: Some tests I use for checking the parsing
28806         functions.
28808 2007-11-15  Jackson Harper  <jackson@ximian.com>
28810         * color.h: Add equality operators.
28812 2007-11-15  Jackson Harper  <jackson@ximian.com>
28814         * xaml.cpp: use isalpha for determining whether or not an int32 is
28815         an enum.  This allows things like -1 to work.
28817 2007-11-15  Jackson Harper  <jackson@ximian.com>
28819         * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
28820         for doubles.
28822 2007-11-15  Jackson Harper  <jackson@ximian.com>
28824         * point.h|cpp:
28825         * rect.h|cpp: Update signatures to allow for error checking when
28826         creating types from strings.
28827         * xaml.h|cpp: Consolidate code to create values from strings, add
28828         some error checking.  Update most of the parsing methods so it is
28829         possible to return errors when parsing.
28830         * playlist.cpp: Sig update.
28831         
28832 2007-11-15  Jackson Harper  <jackson@ximian.com>
28834         * stylus.h|cpp: Initialize these collections so we don't get NULLs
28835         for GetValue on them.
28837 2007-11-14  Chris Toshok  <toshok@ximian.com>
28839         * runtime.cpp (strcase_hash): swap this out for mono's eglib
28840         implementation, augmented with g_ascii_tolower, to remove the
28841         malloc/free and 2 passes over the string.
28843 2007-11-14  Chris Toshok  <toshok@ximian.com>
28845         * dependencyobject.cpp: move the strcase_hash/equals functions...
28846         
28847         * runtime.cpp: here.
28849         * runtime.h: and make them public.
28851         * type.cpp.in, type.cpp (RegisterEvent): and use them here
28852         (RegisterType): and here.
28854 2007-11-14  Jb Evain  <jbevain@novell.com>
28856         * media.cpp|h: remove specific Image and MediaElement
28857         accessors for progress property now that the code
28858         moved to MediaBase.
28860 2007-11-14  Jb Evain  <jbevain@novell.com>
28862         * type.cpp.in, type.cpp, media.h, media.cpp: Move
28863         DownloadProgressProperty and DownloadProgressChangedEvent
28864         to MediaBase so it gets shared for both Image and MediaElement.
28865         Fixes #325255.
28867 2007-11-14  Jb Evain  <jbevain@novell.com>
28869         * value.h.in: update code template to match current value.h.
28871 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
28873         * openfile.cpp: Added support for Filter and FilterIndex.
28875 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
28877         * animation.cpp: Replaced g_assert_not_reached with g_warning.
28878         At least until #340799 (enum validation) is fixed. Part of #335413
28879         * shape.cpp: Add g_warning to replace the g_assert_not_reached 
28880         removed earlier. At least until #340799 (enum validation) is fixed.
28881         * uielement.cpp: Replaced g_assert_not_reached with g_warning.
28882         At least until #340799 (enum validation) is fixed. Part of #335413
28884 2007-11-13  Miguel de Icaza  <miguel@novell.com>
28886         * value.cpp (Value::ToString): Add method to help debug some
28887         apps. 
28889 2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
28891         * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
28892         elements.
28894 2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
28896         * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
28897         as this is unrequired (API wise) and can be expensive (it was enough
28898         to add custom bound calculation code to shapes and geometries).
28900 2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
28902         * shape.cpp: Removed g_assert_not_reached and, if any bad value is
28903         supplied (should be catched well before that, #340799), use the 
28904         default value. Fix part of #335413
28906 2007-11-09  Chris Toshok  <toshok@ximian.com>
28908         * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
28909         convert this over to using our List class.  Also fix a bug where
28910         elements with down dirty flags weren't being inserted propertly
28911         into the up dirty list.
28913 2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
28915         * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
28917 2007-11-09  Miguel de Icaza  <miguel@novell.com>
28919         * value.h (struct Value): Cope with NULL strings.
28921 2007-11-09  Jackson Harper  <jackson@ximian.com>
28923         * xaml.cpp: Closepath needs to draw a line to the path's starting
28924         point and needs to create a new path figure element at the
28925         starting point.
28927 2007-11-09  Jackson Harper  <jackson@ximian.com>
28929         * type.cpp|h.in: Add an accesor for the ContentProperty name.
28930         
28931 2007-11-09  Jackson Harper  <jackson@ximian.com>
28933         * xaml.cpp: Rework to allow unparented properties.  createFromXaml
28934         ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
28935         basically ignore the property and will return the SolidColorBrush
28936         as the top element. This fixes 335865.
28938 2007-11-08  Chris Toshok  <toshok@ximian.com>
28940         [ may go a long way toward fixing #337714, if it doesn't fix it
28941         outright ]
28942         
28943         * uielement.h, uielement.cpp: add an overload of ChildInvalidated
28944         that takes a UIElement* instead of a region.  The implementation
28945         just invalidates the entire bounds of the child in the parent.
28947         * collection.h, collection.cpp: we weren't breaking the
28948         item->parent link when removing visuals from a VisualCollection.
28949         Add VisualRemoved, which invalidates the child's region (and stop
28950         using child->Invalidate, since that won't work once the link to
28951         the parent is broken) and breaks the parent link.  Call
28952         VisualRemoved from everywhere we remove/replace a visual in our
28953         collection.  Also, rename VisualUpdated to VisualAdded, since
28954         that's more indicative of why the method is being called.
28955         
28956 2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
28958         * runtime.cpp (Attach): Emit the Resize event.
28959         (drawing_area_size_allocate): Emit the Resize event.
28961 2007-11-07  Chris Toshok  <toshok@ximian.com>
28963         * clock.cpp (Clock::Begin): guard against division by zero.
28965 2007-11-07  Chris Toshok  <toshok@ximian.com>
28967         * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
28968         width the canvas tells the surface to be (if it does).  this fixes
28969         issues uncovered by larry's improved bounds checking code.  Also,
28970         remove the instance fields for screen_height/width.  they're only
28971         used in one place, so make them local to that function.
28973 2007-11-07  Chris Toshok  <toshok@ximian.com>
28975         * brush.h, brush.cpp: add some c++ setters/getters to make some
28976         code a little smaller.
28978 2007-11-06  Larry Ewing  <lewing@novell.com>
28980         * src/frameworkelement.cpp: Force a full invalidate if the width
28981         or height property because panels include their children in the
28982         bounds compution and will pass the dirty check.
28984         * media.cpp: Implement the Region based rendering for MediaElement
28985         and Image.
28987         * panel.cpp: Unconditionally pass the region to the Children.
28989         * panel.cpp: when rendering children treat panels and other
28990         objects differently.  For containers pass the clipped region
28991         directly, for elements subdivide the region and paint each block.
28992         Renable FindStartingElement with a slightly less expensive
28993         algorithm.
28995         * rect.cpp: don't collapse complicated regions the drawing code is
28996         smarter now.
28998 2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
29000         * font.cpp (TextFont): Fixed to not exit() even when no font could
29001         be loaded from FreeType.
29003 2007-11-06  Chris Toshok  <toshok@ximian.com>
29005         * dependencyobject.cpp (GetObjectType): make this g_critical, and
29006         also print out a stack trace if STACK_DEBUG is enabled.
29008         * dependencyobject.h: stop Emitting the DestroyedEvent from the
29009         dtor.  instead do it from unref before we delete the object.
29011 2007-11-05  Chris Toshok  <toshok@ximian.com>
29013         * rect.h (ToGdkRectangle): quiet countless warnings.
29015 2007-11-05  Larry Ewing  <lewing@novell.com>
29017         Merge most of dirty region branch.  This makes the dirty logic and
29018         rendering code use the new region class to track more complicated
29019         shapes than bounding boxes when processing changed areas.
29021         * media.cpp: switch back to indirect rendering for drawing media
29022         elements until a solution to the boundry clipping can be found.
29024         * panel.cpp: disable FindStartingElement (the buggy) until a more
29025         optimal method can be found.
29027         * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
29028         needs to be fixed to order dirty children.
29030 2007-11-03  Chris Toshok  <toshok@ximian.com>
29032         * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
29033         call SkipToFill if we have no active child clocks.
29034         (ClockGroup::Stop): simplify this.
29035         (ClockGroup::Seek): make this look a little more like ::Stop.
29037 2007-11-03  Chris Toshok  <toshok@ximian.com>
29039         * xaml.cpp (repeat_behavior_from_str): add support for the
29040         "ff.ffx" format for repeat behaviors.
29042         * clock.cpp, clock.h: the first sizeable amount of work done in a
29043         while to correct the multitude of tiny bugs in clock handling.
29044         this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
29045         comment Clock::Tick a lot, and remove a bunch of the old
29046         CLOCK_DEBUG spew which was making the code that much more
29047         difficult to look at.
29048         
29049 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29051         * font.cpp (TextFontDescription::SetScale): Removed, this hack
29052         wasn't working as well as I'd hoped.
29053         (TextFontDescription::GetScale): Same.
29054         (TextFontDescription::CreatePattern): If the requested font size
29055         is < 41.0 (seems to be the magic number where scaling loses impact
29056         on metrics), use FontSize=41.0 and do proper scaling to get the
29057         actual size we want. My worry was that asking for small font sizes
29058         (smaller than 16.0?) would look ugly with this hack, but that is
29059         surprisingly not true. By always requesting a font size that will
29060         yield the generic font metrics (e.g. not some hacked font size),
29061         we will always be able to wrap identically no matter what FontSize
29062         is requested (so long as the width gets scaled appropriately).
29064         * text.cpp (TextBlock::ComputeTransform): Removed.
29066 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29068         * font.cpp (RenderLine): Render glyphs with index 0 too, so that
29069         we render an empty box for glyphs not in the font (just like
29070         Silverlight).
29072         * text.cpp (ComputeTransform): Fixed to use the correct matrix for
29073         getting the scale values.
29075 2007-11-01  Jackson Harper  <jackson@ximian.com>
29077         * trigger.h:
29078         * text.h:
29079         * geometry.h
29080         * transform.h:
29081         * animation.h:
29082         * brush.h:
29083         * panel.h: Add ContentProperty 'attributes'.
29084         * typegen.cs:
29085         * type.cpp|h:  Add content property information to types.  This
29086         will be used by the parser and will allow the parser to drop it's
29087         special type system.
29089 2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29091         * animation.cpp: AnimationStorage: unregister from registered events on
29092           destruction.
29094 2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
29096         * text.cpp (TextBlock::SetValue): Oops - if we are setting an
29097         empty string on the Text property, then we need to clear out
29098         whatever was there before (if anything).
29100 2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
29102         Fixes for handling lwsp cdata between <Run> elements.
29104         * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
29105         arg suggesting that we are being called in response to a new
29106         element starting vs an element ending.
29107         (start_element_handler): Pass true as the start arg to
29108         flush_char_data().
29109         (end_element_handler): Pass false as the start arg to
29110         flush_char_data().
29112         * text.cpp (SetValue): Only add a run if the string is non-empty.
29114 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29116         * dependencyobject.cpp: Guard against calling NULL.
29118 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29120         * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
29121           return value is always checked.
29123 2007-10-31  Chris Toshok  <toshok@ximian.com>
29125         * trigger.cpp (EventTrigger::SetTarget,
29126         EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
29127         "Loaded".
29129 2007-10-31  Jackson Harper  <jackson@ximian.com>
29131         * dependencyobject.h|cpp: Give DependencyProperties the ability to
29132         be readonly.
29133         * canvas.cpp:
29134         * animation.cpp: Signature updates
29135         
29136 2007-10-30  Jackson Harper  <jackson@ximian.com>
29138         * xaml.h: Add the error args to the loader.
29139         * xaml.cpp: Make most of our parsing errors match Silverlight.
29141 2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
29143         * font.cpp (Path): Check the path data != NULL before we make any
29144         cairo calls, no sense wasting cycles if we will no-op in the end.
29146 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29148         * media.cpp, media.h: Fix signedness mismatch warning.
29150 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29152         * mplayer.h: Added asf_player field.
29154 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29156         * Makefile.am: Add files in asf/.
29157         * media.cpp, media.h: Read ASF markers from the file. Save the position when
29158           advancing frames. Use the difference between the last position and the
29159           current position to determine if any MarkerReached events are supposed
29160           to be raised.
29161         * mplayer.cpp: Add some error checking/reporting when opening streams.
29162           Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
29163           to actually use it).
29165 2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
29167         * font.cpp (RenderLine): Split out from TextLayout::Render() and
29168         made to reset the brush at each segment to match Silverlight's
29169         behaviour.
29171 2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29173         * debug.cpp: Added print_gdb_trace with an explaining comment.
29174         * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
29175           isn't defined.
29177 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29179         * font.cpp (TextLayout::Render): Set y1 before creating/appending
29180         the path instead of in the segment loop.
29181         (TextLayout::Render): Make underline pos relative to y1 (aka the
29182         baseline) that we calculated above. Makes this easier to
29183         understand.
29185 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29187         * font.cpp (TextLayout::Layout): Always calculate segment->width
29188         here.
29189         (TextLayout::Render): Not here.
29191         * text.cpp (Glyphs::GetTransformOrigin): Implemented.
29193 2007-10-25  Jackson Harper  <jackson@ximian.com>
29195         * type.cpp|.in:
29196         * runtime.h|cpp: Add the Error event to the surface.  Raising this
29197         event will cause the plugins onError handler to be invoked, the
29198         default onError handler notifies the user of the error with a
29199         javascript alert.
29201 2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
29203         * stylus.cpp|h: Keep the semi-working code as a fast path to
29204         render strokes (if no outline color is used and when width ==
29205         height). Added a hack to support OutlineColor.
29207 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29209         * brush.cpp (Brush::SetupBrush): Now takes width and height
29210         arguments. Updated all brushes.
29212         * text.cpp (Glyphs::Render): We want to check this->width and
29213         this->height, not the width/height arguments.
29215         * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
29216         yet (surface = NULL), return.
29217         (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
29218         warnings.
29220 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
29222         * text.cpp (Glyphs::GetSizeForBrush): Implemented.
29224         * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
29226 2007-10-24  Jackson Harper  <jackson@ximian.com>
29228         * type.cpp.in/h.in: Add some c-style functions for creating
29229         instances.
29231 2007-10-24  Jackson Harper  <jackson@ximian.com>
29233         * typegen.cs:
29234         * type.cpp.in/h.in: Add a create instance call to types.  This
29235         will allow the parser to use our Type object instead of creating
29236         it's own.
29238 2007-10-24  Chris Toshok  <toshok@ximian.com>
29240         * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
29241         g_main_context_iteration so we don't block if there isn't anything
29242         to do.  also, emit 3 TickEvents to make sure the tick is
29243         propagated down into the animations.
29245 2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29247         * xaml.cpp: No need to check if the created object is an UIElement before
29248           calling SetSurface anymore.
29249         * visual.h: Update SetSurface to virtual.
29250         * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
29251           our Image object.
29252         * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
29253           the methods do nothing, the surface is still stored in Visual, but this
29254           allows classes that do not inherit from Visual to correctly set the
29255           surface on their members which do inherit from Visual).
29257 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
29259         * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
29261 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
29263         * text.cpp (TextBlock::ComputeTransform): If the scale has
29264         changed, set dirty = true so that we recalculate the layout.
29266         * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
29267         macro, just do it w/o so that we hush the compiler warning.
29269 2007-10-23  Chris Toshok  <toshok@ximian.com>
29271         * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
29272         a clock in absolute terms.  instead, offset it from the current
29273         time of the parent clock (or time manager).
29274         (Clock::Begin): clamp progress to 1.0
29275         (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
29276         by making it less sensitive to immediate changes.
29278 2007-10-23  Chris Toshok  <toshok@ximian.com>
29280         * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
29281         audio (so we sync to the clock).
29283         * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
29285 2007-10-23  Chris Toshok  <toshok@ximian.com>
29287         * clock.cpp (ManualTimeSource::SetCurrentTime): call
29288         g_main_context_iteration as a stopgap to make video elements show
29289         up.
29290         (TimeManager::TimeManager): remove spew.
29291         (TimeManager::Tick): re-enable the clock throttling.  oops.
29293 2007-10-23  Larry Ewing  <lewing@novell.com>
29295         * src/runtime.cpp: clear the background in more cases.
29297 2007-10-23  Larry Ewing  <lewing@novell.com>
29299         * src/runtime.cpp: make the eventbox windowless and remove the
29300         stale event code.  Let gtk do the clearing.
29302 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
29304         * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
29305         (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
29306         the correct frame rather than just rendering the first frame we
29307         find.
29309 2007-10-23  Chris Toshok  <toshok@ximian.com>
29311         * mplayer.cpp: replace all occurences of av_gettime with
29312         TimeManager::Instance()->GetCurrentTimeUsec().
29314         * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
29315         thingy.
29316         (render_cb): re-enable the fps on the console.  oops.
29318         * runtime.h (RuntimeInitFlags): add
29319         RUNTIME_INIT_TIMESOURCE_MANUAL.
29321         * type.h.in, type.cpp.in: remove BASE (should have happened on my
29322         last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
29323         event.
29325         * type.h, type.cpp: sync to the .in files.
29327         * clock.h, clock.cpp: add the idea of a TimeSource to the
29328         TimeManager.  Two are written - SystemTimeSource, which uses the
29329         gtk timeout, and ManualTimeSource, which allows code to set what
29330         the global time should be.  Also, add GetCurrentTimeUsec() for use
29331         by mplayer, so we can switch it away from av_gettime and make it
29332         possible for video to sync to the ManualTimeSource.
29334 2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29336         * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
29338 2007-10-23  Larry Ewing  <lewing@novell.com>
29340         * runtime.cpp: make sure we unref the surface.
29342 2007-10-23  Larry Ewing  <lewing@novell.com>
29344         * runtime.cpp: avoid making gdk calls that pull in the platform
29345         cairo.
29347 2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
29349         * text.cpp: Don't allow Pango rendering if disabled at
29350         configure-time.
29351         (TextBlock::ComputeTransform): Moved the scale logic here from
29352         OnPropertyChanged() so that we catch all transform changes.
29354         * uielement.h: Made ComputeTransform() virtual.
29356 2007-10-22  Chris Toshok  <toshok@ximian.com>
29358         * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
29359         we can just cast to Clock here.
29361         * dependencyobject.h, dependencyobject.cpp: remove the Base class,
29362         and make roll EventObject and Base into one class (still called
29363         EventObject).
29365 2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
29367         * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
29368         * stylus.cpp|h: Add some missing functions. Rendering changes 
29369         (not active, work in progress).
29371 2007-10-18  Chris Toshok  <toshok@ximian.com>
29373         * dependencyobject.h: fix comment.
29375         * animation.h, animation.cpp: use the
29376         Clock::CurrentStateInvalidated event to reset the property value
29377         to baseValue instead of overriding the Clock::Stop method.  This
29378         fixes clocks with FillBehavior="Stop" instead of storyboard with
29379         FillBehavior="Fill".
29381         * clock.cpp (Clock::Tick): remove a stupid block of code that was
29382         causing clocks which were Filling to spontaneously end up in their
29383         Active state again.
29385 2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
29387         * geometry.cpp: New code to handle arc segments. No known issues
29388         (except the handling of near zero values which doesn't seems to
29389         be constant).
29390         * libmoon.h, Makefile.am: Remove reference to rsvg.h
29391         * rsvg.cpp|h: Remove from SVN.
29393 2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
29395         * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
29396         based on the ones from libgdiplus.
29398 2007-10-17  Chris Toshok  <toshok@ximian.com>
29400         * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
29401         created managed dob to the created_elements list so it gets
29402         unrefed properly.
29403         (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
29404         (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
29406 2007-10-17  Chris Toshok  <toshok@ximian.com>
29408         * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
29409         (sizes_LDADD): same.
29411 2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29413         * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
29414           OBJECT_TRACKING isn't defined.
29415         * runtime.h: Enable the contextual downloader warning again.
29416         * dependencyobject.cpp: Fix build when DEBUG is defined.
29418 2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
29420         * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
29421         properties changing value, don't fall thru to the rest of the
29422         checks (as then we'd re-emit it to sublisteners which isn't what
29423         we want I don't think). Also, don't change the font scale unless
29424         it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
29426 2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
29428         * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
29429         changes and apply the y-scale to the font so that we can more
29430         accurately path the font glyphs at the scale we intend to render
29431         them at.
29433         * font.cpp (TextFont): Cache the scale here.
29434         (Kerning): Apply the scale.
29435         (Descender): Here too.
29436         (Ascender): And here.
29437         (Height): Same.
29438         (GetGlyphInfo): Create and apply the scale/invert matrix. Also
29439         scale the glyph metrics.
29440         (UnderlinePosition): Apply the scale.
29441         (UnderlineThickness): Same here.
29442         (TextFontDescription): Added a scale, default to 1.0
29443         (CreatePattern): Set the scale on the pattern.
29444         (UnsetFields): When unsetting values, restore them to their
29445         default values.
29446         (Merge): Merge the scale.
29447         (GetScale): New method.
29448         (SetScale): New method.
29450 2007-10-16  Chris Toshok  <toshok@ximian.com>
29452         * dependencyobject.cpp (detach_depobj_values): call
29453         obj->SetParent(NULL) here as well, so we don't reference a
29454         destroyed parent.
29456         * runtime.cpp (Surface::Surface): use Surface::timeline instead of
29457         a local variable.
29458         (Surface::~Surface): make sure to remove the surface's clock_group
29459         from the time manager.  Also, unref the timeline we create in the
29460         ctor.
29461         (runtime_shutdown): reimplement the oldest 10 alive object
29462         printing stuff in the face of using a hashtable.
29464         * runtime.h: add Surface::timeline, so we can clean it up in
29465         ~Surface.
29467         * dependencyobject.h (Base::) use a hash table to track alive
29468         objects instead of a list.  this speeds up things immensely.
29470         * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
29471         children so any further GetParent() calls won't return a destroyed
29472         object.
29474         * animation.cpp (Storyboard::~Storyboard): guard against a crash
29475         when a parent clock is freed before the child clock.
29477         * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
29479 2007-10-15  Chris Toshok  <toshok@ximian.com>
29481         * animation.[h,cpp]: remove the strong reference from
29482         AnimationStorage to its target object, and instead use the
29483         EventObject::DestroyEvent to implement a weak reference.  See the
29484         TODO for a blurb about generalizing this.
29486         * typegen.cs (GenerateTypeCpp): remove the special case code that
29487         makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
29488         EVENTOBJECT as the parent for the DestroyedEvent to line up
29489         properly in the event tables.
29491         * type.cpp.in, type.cpp (types_init_register_events): register the
29492         Destroyed event.
29494         * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
29495         emitted just before we clean up the EventObject's event list.
29497 2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
29499         * text.cpp (Layout): I think I finally figured out the scaling to
29500         apply to the units provided in the Indices property and also
29501         discovered that the Advance is not applied at the uOffset, it is
29502         applied independently of the uOffset.
29503         (Render): Same fixes as in Layout().
29505 2007-10-13  Chris Toshok  <toshok@ximian.com>
29507         * animation.cpp (balf): fix bug 325175 by not taking the square
29508         root of a negative number (fixes the flashing in the credits for
29509         Monotone.)  Also clean up this code so that we're not using
29510         globals to communicate parameters (through Simpson) between balf
29511         and BezierArcLength, and lower the tolerance (I doubt we need
29512         *that* much precision).
29514 2007-10-12  Chris Toshok  <toshok@ximian.com>
29516         * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
29517         dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
29518         transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
29519         which gives the actual object whose property changed.  Also, in a
29520         few instances fix the NotifyAttachersOnPropertyChanged call that
29521         some classes used to not use the subprop, but the prop.  The
29522         subprop doesn't refer to "this" in those instances, but to @obj.
29523         @prop refers to "this".
29525         * collection.[h,cpp]: use the above change to correctly support
29526         the DependencyObject parameter of OnCollectionChanged (when the
29527         change type is ItemChanged).
29528         
29529         * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
29530         move the ZIndex property support from UIElement to Panel, which
29531         makes more logical sense (and is likely the reason MS removed the
29532         property from UIElement in 1.1) -- ZIndex is about what happens to
29533         this UIElement in relation to its siblings.
29534         
29535 2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
29537         * shape.cpp: Only set miter limit if line join is set to miter.
29539 2007-10-12  Chris Toshok  <toshok@ximian.com>
29541         * collection.cpp: move the panel logic away from VisualCollection.
29542         It belongs in Panel::OnCollectionChanged.
29544         * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
29545         everything the VisualCollection code used to do on its behalf.
29547         * uielement.h, uielement.cpp: introduce a new field for use with
29548         the dirty code - force_redraw_of_new_bounds.  Basically, we set
29549         the field according to the parameter passed to UpdateBounds.
29551         * dirty.cpp (UpdateBounds): force an invalidate if
29552         el->force_redraw_of_new_bounds is set.
29554 2007-10-12  Chris Toshok  <toshok@ximian.com>
29556         * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
29557         RemoveTimeout) which wrap the glib timeout calls we were making.
29558         This lets us keep track of active timeout ids and remove them all
29559         when the TimeManager shuts down.  So, if we leak MediaElements
29560         (which seems to be happening in TopBanana), we don't crash.
29562         * mplayer.cpp: use the new TimeManager timeout call instead of the
29563         glib mainloop directly.
29565         * media.cpp: same.
29566         
29567 2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
29569         * downloader.cpp (downloader_init): Default the DownloadProgress
29570         to 0.0.
29572 2007-10-12  Jackson Harper  <jackson@ximian.com>
29574         * downloader.h: Add an access to the downloader state.  I need
29575         this in the plugin.
29577 2007-10-12  Jb Evain  <jbevain@novell.com>
29579         * brush.cpp|h: add image_brush_set_source.
29581 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29583         * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
29584         where it doesn't handle J-Type picture frames.
29586 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
29588         * panel.cpp|h: Split Render into Render and RenderChildren, so 
29589         the later can be overriden in InkPresenter.
29590         * stylus.cpp|h: A quick (see FIXME) implementation to render 
29591         ink found in some xaml files.
29593 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29595         * mplayer.cpp: Updated to use the new Queue class.
29596         (AdvanceFrame): Accessing the queue directly as a linked list
29597         allows us to simplify the loop a little so that we don't have to
29598         keep a reference to the previous packet's decoded frame.
29600         * list.cpp: Added a new Queue class which will replace GAsyncQueue
29601         in mplayer.cpp.
29603 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29605         * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
29606         (AdvanceFrame): Keep a reference to the previous frame in case we
29607         reach the end of the queue.
29609 2007-10-11  Jb Evain  <jbevain@novell.com>
29611         * dependencyobject.cpp|h: add dependency_object_set_name.
29613         * media.cpp|h: add media_attribute_get_value and
29614         media_attribute_set_value
29616         * playlist.cpp|h: populate MediaAttributeCollection when
29617         a playlist entry is opened.
29619 2007-10-11  Larry Ewing  <lewing@novell.com>
29621         * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
29622         areas... have more fun in general.
29623         
29624         * src/rect.h: replace Floor function with RoundOut function.
29625         * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
29626         clipping issue in sprawl.
29628 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
29630         * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
29631         which it inherits)
29633 2007-10-11  Jb Evain  <jbevain@novell.com>
29635         * playlist.cpp: replace C++ casts to plain casts.
29637 2007-10-11  Jb Evain  <jbevain@novell.com>
29639         * collection.cpp: replace dynamic_casts with plain casts
29640         as per Miguel suggestion.
29642 2007-10-11  Jb Evain  <jbevain@novell.com>
29644         * collection.cpp|h: add, implement and expose the
29645         MediaAttributeCollection::GetItemByName method.
29647 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29649         * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
29651 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29653         * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
29654         * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
29655           char/char mismatch warnings.
29656         * visual.cpp: Fix no newline warning.
29657         * runtime.cpp: Fix a initialization warning.
29658         * demo.cpp: Remove unused variable.
29660 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29662         * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
29663           matches base_unref behaviour.
29664         * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
29665           operations.
29667 2007-10-10  Chris Toshok  <toshok@ximian.com>
29669         * runtime.cpp (runtime_shutdown): explicitly drain all remaining
29670         pending managed unrefs.
29672         * dependencyobject.cpp: remove the Base::ref/unref implementations
29673         from here.  Add the threadsafe base_unref_delayed code, as well as
29674         code to manage a tick call to free up the instances on the next
29675         clock tick.  Also provide an external api (drain_unrefs -- bad
29676         name, fix me plz k thx) so that runtime.cpp can explicitly unref
29677         everything when we shutdown (if they haven't already been dealt
29678         with.)
29680         * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
29681         we don't have 2 implementations of all these methods.  Instead,
29682         just ifdef the relevant portions of the methods, and keep them in
29683         dependencyobject.h.  Also, add prototypes for drain_unrefs and
29684         base_unref_delayed, which is called from managed code.
29686         * collection.h, collection.cpp: make Clear take an optional
29687         "emit_event" argument (default = true.)  Call Clear instead of
29688         list->Clear(true) in our dtor so we clean up the namespaces and
29689         Detach properly.
29691         * debug.cpp: use an extern "C" block. looks nicer.
29693 2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
29695         * brush.cpp: Handle GradientStop with negative offset like 
29696         Silverlight (seems to) do.
29698 2007-10-10  Chris Toshok  <toshok@ximian.com>
29700         * panel.cpp (Panel::~Panel): no need to clear our Children
29701         collection.  the normal dtor stuff will do that for us.
29703 2007-10-10  Larry Ewing  <lewing@novell.com>
29705         * media.cpp: Fill with the element extents don't just paint the
29706         surface because if the stretch is specified we may end up painting
29707         outside the proper area.
29709 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29711         * media.cpp: When updating the MediaElement's progress, get the Downloader's
29712           DownloadProgressProperty.
29714 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29716         * visual.cpp, visual.h: Added visual_set_surface, and guard against
29717           overwriting a set surface with null.
29719 2007-10-10  Jackson Harper  <jackson@ximian.com>
29721         * collection.cpp: Set the surface when adding a visual element.
29723 2007-10-10  Jackson Harper  <jackson@ximian.com>
29725         * shape.cpp: We need to do something when line properties are
29726         changed. Fixes test-animation-line.xaml
29728 2007-10-10  Jackson Harper  <jackson@ximian.com>
29730         * xaml.cpp: Don't allow the same property to be set twice.
29732 2007-10-09  Jackson Harper  <jackson@ximian.com>
29734         * xaml.cpp: When we create custom elements we also need to set the
29735         surface on them and mark them for cleanup.
29737 2007-10-09  Jackson Harper  <jackson@ximian.com>
29739         * xaml.cpp: When we are creating objects from a string, set the
29740         encoding to utf8 so that expat doesn't try to determine the
29741         encoding from the ?xml declaration (which will be incorrect
29742         because the string is in utf8).
29744 2007-10-09  Chris Toshok  <toshok@ximian.com>
29746         * clock.cpp (ClockGroup::Stop): If the clock group has children we
29747         depend on stopping them first.  But if the clock group is without
29748         children, chain up to Clock::Stop here.
29750 2007-10-09  Jb Evain  <jbevain@novell.com>
29752         * uielement.h: define new methods RenderClipPath and
29753         IntersectBoundsWithClipPath.
29754         * uielement.cpp: implement them.
29755         * panel.cpp, shape.cpp, media.cpp: use them.
29757 2007-10-09  Chris Toshok  <toshok@ximian.com>
29759         * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
29760         frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
29761         brush.cpp, text.cpp: s/Attachee/Attacher.
29763         * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
29764         call that is used at dtor time to call Detach on all
29765         DependencyObject-subclassed Values, and 2) make NULL available in
29766         detach as a wildcard - passing NULL for the property detaches all
29767         properties that the current object might be watching on.
29769         Also, correct a longstanding problem in terminology/api.  if A's
29770         code calls B->Attach (..., this), then A is the Attacher, not the
29771         Attachee.  Basically s/Attachee/Attacher in all places,
29772         everywhere.
29774         * dependencyobject.cpp: same changes as above.  Also, change the
29775         current_values hash table to key off the DependencyProperty, not
29776         off the DependencyProperty name.  This allows us to use a direct
29777         hash, as opposed to a string hash.
29778         
29779         * collection.cpp (dtor): make sure sure to detach from all the
29780         list elements before we clear the list.
29782 2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
29784         * font.cpp (Layout): Only break words on ASCII lwsp, we should not
29785         break on nbsp's for example.
29787 2007-10-09  Jackson Harper  <jackson@ximian.com>
29789         * xaml.cpp: Make sure the Surface gets set on custom created
29790         UIElements.  Also add them to the created list, so they get freed.
29792 2007-10-09  Jackson Harper  <jackson@ximian.com>
29794         * control.cpp: Since controls are UIElements we need to make sure
29795         their surface is set when we create them from XAML.
29797 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29799         * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
29801 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29803         * debug.cpp, debug.h: Conditionally compile support for managed stack
29804           frames.
29806         * runtime.cpp: add more debug code.
29808 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
29810         * text.cpp (OnPropertyChanged): We may need to relayout even if
29811         the wrapping is set to NoWrap.
29813 2007-10-08  Zoltan Varga  <vargaz@gmail.com>
29815         * text.cpp (OnPropertyChanged): Do a relayout if the Width property
29816         changes and text wrapping is enabled.
29818 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
29820         * mplayer.cpp (Open): If the media has video, load the first video
29821         frame.
29822         (Seek): Same.
29823         (AdvanceFrame): Fixed to "end" properly.
29825         * media.cpp: Don't manually call DisplayFrame() anymore.
29827 2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29829         * xaml.cpp: Set the surface of newly created objects (where applicable).
29830         * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
29831         * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
29832           brand new CreateDownloader method.
29833         * visual.h: Added a surface field, complete with setters and getters.
29834         * downloader.cpp, downloader.h: Add a context field.
29835         * runtime.h: Add a downloader_context field, and CreateDownloader methods.
29836         * runtime.cpp: Add a downloader_context field.
29838 2007-10-09  Larry Ewing  <lewing@novell.com>
29840         * media.cpp: add clipping to shape::DoDraw and to the bounds
29841         computations.
29843 2007-10-08  Larry Ewing  <lewing@novell.com>
29845         * media.cpp:
29846         * panel.cpp: intersect the bounds with the clip path to
29847         optimize the invalidated region.
29849         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29850         with a NULL.
29852 2007-10-08  Larry Ewing  <lewing@novell.com>
29854         * media.cpp:
29855         * panel.cpp: intersect the bounds with the clip path to
29856         optimize the invalidated region.
29858         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29859         with a NULL.
29861 2007-10-08  Larry Ewing  <lewing@novell.com>
29863         * media.cpp:
29864         * panel.cpp: intersect the bounds with the clip path to
29865         optimize the invalidated region.
29867         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29868         with a NULL.
29870 2007-10-08  Larry Ewing  <lewing@novell.com>
29872         * media.cpp:
29873         * panel.cpp: intersect the bounds with the clip path to
29874         optimize the invalidated region.
29876         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29877         with a NULL.
29879 2007-10-08  Larry Ewing  <lewing@novell.com>
29881         * media.cpp:
29882         * panel.cpp: intersect the bounds with the clip path to
29883         optimize the invalidated region.
29885         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29886         with a NULL.
29888 2007-10-08  Larry Ewing  <lewing@novell.com>
29890         * runtime.cpp: change previous logic to drop the alpha
29891         completely here until more testing can be done.
29893 2007-10-08  Larry Ewing  <lewing@novell.com>
29895         * runtime.cpp: draw the background color blended over white.
29897 2007-10-08  Larry Ewing  <lewing@novell.com>
29899         * media.cpp: render clip paths on media elements.
29901 2007-10-07  Larry Ewing  <lewing@novell.com>
29903         * xaml.cpp:
29904         * rect.cpp:
29905         * point.cpp:
29906         * array.cpp: use g_utf8_next_char in some places to start making
29907         the parsers more utf8 safe.  Make rect/point_from_str more robust
29908         against separator characters
29910 2007-10-07  Chris Toshok  <toshok@ximian.com>
29912         * clock.cpp (Clock::Tick): make sure we're reversed before
29913         switching to Fill if the clock is at 0 (and make sure we're not
29914         reversed before switching to Fill on the other end of the
29915         timespan).  Some animations were skipping directly to fill without
29916         ever running.
29917         (ClockGroup::Tick): don't Tick a child clock if it's about to
29918         Stop.  the new tick might cause it to fill.. this needs work
29919         still.
29921 2007-10-06  Jb Evain  <jbevain@novell.com>
29923         * media.cpp (Image::Render): Deal with clipping.
29925 2007-10-05  Chris Toshok  <toshok@ximian.com>
29927         * animation.cpp (KeyFrameComparer): fix airlines (and probably a
29928         host of other keyframe usage besides).  The problem was that this
29929         function was treating its args as keyframe*'s, when in actuality
29930         they were keyframe**'s.  that explains the intermittent nature of
29931         the bug, as well as the faulty sorting I was experiencing earlier.
29933         * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
29935 2007-10-05  Chris Toshok  <toshok@ximian.com>
29937         * clock.cpp (TimeManager::Tick): I have no idea how this is
29938         possible, but the throttle code is *completely* screwing up the
29939         Airlines demo animations.
29941 2007-10-05  Jackson Harper  <jackson@ximian.com>
29943         * control.cpp: need to pass this down.  Fixes dragging controls in
29944         top banana.
29946 2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
29948         * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
29949         the paused case.
29950         (Stop): Here too.
29951         (SetValue): And here too after a Seek() (altho it won't work if
29952         the media is paused).
29954         * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
29955         update, which is true if any avcodec_decode_video() sets redraw to
29956         true.
29957         (DisplayFrame): New method largely based on JB's work to load the
29958         current video frame into the mplayer surface.
29960 2007-10-05  Jb Evain  <jbevain@novell.com>
29962         * media.cpp|h, playlist.cpp|h: Don't open the first entry
29963         when a playlist entry has been stopped before switching to
29964         the next one.
29966 2007-10-04  Chris Toshok  <toshok@ximian.com>
29968         * clock.cpp: fix a couple of compilation warnings, and tighten up
29969         the list_clocks output.
29971 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
29973         * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
29974         since it is not locale dependant.
29976         * rect.cpp (rect_from_str): Same.
29978         * point.cpp (point_from_str): Same.
29980         * xaml.cpp (get_point): Fixed to update *in properly on success.
29982 2007-10-05  Jb Evain  <jbevain@novell.com>
29984         * media.cpp: correctly advertise 'Opening' state of MediaElement.
29986 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
29988         * xaml.cpp: (more_points_available): Simplified by looping while
29989         isspace. Also, update our input pointer if we have to scan over
29990         lwsp.
29991         (get_point): Now returns bool based on whether it manages to
29992         extract a point or not.
29993         (geometry_from_str): Updated.
29995 2007-10-04  Jackson Harper  <jackson@ximian.com>
29997         * xaml.cpp: Points after the initial two line points should
29998         actually create new line segments, not a polyline, this fixes
29999         relative points on multiple lines.
30001 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
30003         * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
30004         hasn't completely been initialized.
30005         (Glyphs::SetIndices): Do not do scaling here, this seems to be
30006         font size dependant.
30008         * shape.cpp (DoDraw): Use 'delete []' to free dmul.
30010 2007-10-04  Jackson Harper  <jackson@ximian.com>
30012         * xaml.cpp: Handle repeated bezier segments properly.
30014 2007-10-04  Chris Toshok  <toshok@ximian.com>
30016         * clock.cpp: lots of little changes.  fixes clock16.xaml, and
30017         therefor the score animation in dr.popper goes away properly.
30018         also fixes a few other issues with FillBehavior (checked by our
30019         clock xaml tests.)
30021 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
30023         * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
30024         variable.
30025         (Layout): Use a local TextFont variable.
30026         (Render): Same.
30027         (text_init): Always call font_init() as Glyphs use it even when
30028         text=pango is specified.
30030 2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
30032         * shape.cpp|h: Shapes that uses their Width and Height must use
30033         them for brush size. Fix brush rendering when used with 
30034         UIElement.RenderTransform property.
30036 2007-10-03  Chris Toshok  <toshok@ximian.com>
30038         * text.cpp: make Glyphs usable even when text=pango.  "usable"
30039         means "don't crash" :)
30041 2007-10-03  Chris Toshok  <toshok@ximian.com>
30043         * uielement.h: rename UseAA() to EnableAntiAlias().  it's
30044         arguably a better name, and more importantly it's the name that
30045         media.cpp/h changed it too, which broke the AA hack used in
30046         dirty.cpp.
30048         * dirty.cpp (process_dirty_elements): rename UseAA() to
30049         EnableAntiAlias().
30051 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30053         * array.cpp: Move double array allocations back to new/delete.
30055 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30057         * font.cpp (EmSize): Removed, not needed.
30058         (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
30059         bit of memory that we aren't using.
30061         * text.cpp (TextBlock::SetFontSource): Implemented.
30062         (text_init): Default StyleSimulations to None.
30064 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30066         * brush.cpp|h: SL and Cairo defaults to different values (end 
30067         color versus start color) when a gradiant is restricted to a 
30068         single color (e.g. if the start and end points of a linear 
30069         gradient are identical).
30071 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30073         * text.cpp: Implemented the Glyphs element.
30075         * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
30076         with the the Glyphs element implemented in text.cpp.
30077         (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
30078         (GetGlyphInfoByIndex): New method.
30079         (CreatePattern): If the filename is specified, don't call
30080         FcFontMatch(), simply return the constructed pattern.
30082 2007-10-02  Chris Toshok  <toshok@ximian.com>
30084         * clock.h, clock.cpp: remove TimeManager::current_fps, it's
30085         unused.
30087 2007-10-02  Chris Toshok  <toshok@ximian.com>
30089         * runtime.cpp (Surface::UpdateFullScreen): just call
30090         gtk_window_fullscreen instead of setting decorations/above
30091         manually.  this puts us on top of the panel.
30093 2007-10-02  Chris Toshok  <toshok@ximian.com>
30095         * clock.h, clock.cpp: rip out the old stupid throttling code and
30096         replace it with an exponential moving average of the delays.
30098 2007-10-02  Chris Toshok  <toshok@ximian.com>
30100         * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
30101         use them to make test/xaml/clock8.xaml work.
30103 2007-10-02  Larry Ewing  <lewing@novell.com>
30105         * shape.cpp (Path::ComputeBounds): use the specified width/height
30106         if stretch is != StretchNone.  Fixes rendering issues with halo
30107         and several other sites.
30109 2007-10-02  Chris Toshok  <toshok@ximian.com>
30111         * animation.h, animation.cpp: override Stop() on AnimationClocks
30112         so we can reset the property value to the baseValue stored in our
30113         AnimationStorage.
30115         * clock.h, clock.cpp: fix the starting of stopped clockgroups when
30116         there are active children (fixes the storyboards running for 1
30117         tick then stopping).  Add more convoluted code in order to get the
30118         expected behavior when FillBehavior=Stop on a storyboard.
30120 2007-10-02  Chris Toshok  <toshok@ximian.com>
30122         * clock.h, clock.cpp: a few changes.  quit with all the delay
30123         computation in the throttling code, and just deal with fps until
30124         we're ready to switch to delays.  it simplifies everything a
30125         bunch.  Also, narrow the type for Clock::Get/SetParent to
30126         ClockGroup.  Add some rudimentary code for printing out the state
30127         of all clocks (use TimeManager::Instance()->ListClocks() or
30128         time_manager_list_clocks()).  Also, remove the TimeManager::Tick
30129         code which started clocks.  This commit changes the way
30130         storyboards are registered, so the only things in the
30131         TimeManager's list should be the per-surface ClockGroups, which
30132         are started in Storyboard::Begin (if they aren't already running.)
30134         * collection.cpp (VisualCollection::Add): this is a bug waiting to
30135         happen.  Call VisualUpdate (thereby setting the child's parent and
30136         initializing the transforms/opacity) before emitting Loaded on the
30137         child.
30139         * animation.h, animation.cpp: Storyboards now add their clocks to
30140         the per-surface ClockGroup.  This involves some groveling to find
30141         the surface, but it's nothing we haven't seen before.  There's no
30142         direct TimeManager calls here now - stopping the surface's
30143         ClockGroup will stop all animations running on it.
30145         * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
30146         storyboards attach to this, and this attaches to the TimeManager.
30147         
30148 2007-10-02  Jackson Harper  <jackson@ximian.com>
30150         * media.cpp: Some default values to avoid nullref exceptions.
30152 2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
30154         * xaml.cpp: Add support for 'F' in the PML parser to enable setting
30155         the FillMode of Geometry objects. Removed default value set as it is 
30156         identical to the default property value.
30158 2007-10-02  Jb Evain  <jbevain@novell.com>
30160         * playlist.cpp|h: implemented start time for playlist entries.
30162 2007-10-02  Jb Evain  <jbevain@novell.com>
30164         * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
30166 2007-10-02  Larry Ewing  <lewing@novell.com>
30168         * uielement.cpp (UIElement::Invalidate): Only invalidate if
30169         opacity is > 0.
30170         * dirty.cpp (process_dirty_elements): be sure to invalidate before
30171         and after the opacity change.
30173 2007-10-02  Jb Evain  <jbevain@novell.com>
30175         * playlist.cpp: deal with non lowercase file exts.
30177 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30179         * font.cpp: Reduced Glyph table memory usage.
30181 2007-10-01  Chris Toshok  <toshok@ximian.com>
30183         * dirty.cpp (process_dirty_elements): remove the special if checks
30184         which kept the ComputeBounds/Invalidate code from running on the
30185         toplevel surface.  Canvas::ComputeBounds() does the right thing
30186         for the toplevel surface, so we just trust it.  fixes invalidation
30187         of root canvases.
30189         * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
30190         (OnSubPropertyChanged): same.
30192 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30194         * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
30195         void (instead of the, now, unused bool);
30197 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30199         * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
30201 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30203         * shape.cpp|h: Remove Path::IsFilled since the property 
30204         PathFigure::IsFilledProperty doesn't exists anymore.
30206 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30208         * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
30209         wrapping.
30211         * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
30213 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30215         * runtime.cpp: Only show the server as the url in the fullscreen
30216         message.
30218 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30220         * panel.cpp: Call ComputeBounds before invalidating on Background 
30221         changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
30223 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30225         * fullscreen.h, fullscreen.xaml: Added.
30226         * text.h: Make GetActualHeight and GetActualWidth public.
30227         * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
30228           objects now: the fullscreen message and the toplevle canvas),
30229           SetSourceLocation and Show/HideFullScreenMessage.
30230         * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
30231           Surface::GetTopLevel.
30233 2007-09-30  Zoltan Varga  <vargaz@gmail.com>
30235         * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
30236         to managed code.
30238         * text.cpp (text_destroy): Avoid crash if default_foreground_brush
30239         is not set.
30241 2007-09-28  Chris Toshok  <toshok@ximian.com>
30243         * Makefile.am: remove the XRANDR conditional here.  it's #defined
30244         in config.h now.
30246 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30248         * font.cpp (CreatePattern): If a filename has been specified for
30249         loading a font, don't set family values. Also, call
30250         FcDefaultSubstitute() on the pattern before trying to find a
30251         match.
30253 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30255         Optimization hack that saves time by not recalculating the layout
30256         when the foreground brush changes (since we'd have exactly the
30257         same layout).
30259         * font.cpp (TextRun): Now takes the address of the brush than the
30260         brush itself, so that when brushes change on the Inline, we get
30261         the brush change for free.
30263         * text.cpp (LayoutSilverlight): Pass the addresses of the
30264         foreground brushes to TextRun ctor and don't bother with the
30265         default foreground brush here, save that for ::Paint-time.
30266         (LayoutPango): Same idea as LayoutSilverlight().
30267         (Paint): Get the default foreground and pass that off to the
30268         pango/silverlight text renderers.
30269         (OnPropertyChanged): Don't force a re-layout if the property that
30270         changed was the TextBlock::ForegroundProperty.
30271         (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
30273         * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
30274         argument so that we don't have to specify it in the creation of
30275         our layout attributes (this saving us a re-layout when a brush
30276         changes).
30277         (mango_attr_foreground_new): Now takes the address of the brush
30278         rather than the brush itself, so that when brushes change on the
30279         Inline, we get the brush change for free.
30281 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30283         * text.cpp (TextBlock): We cannot re-use the
30284         default_foreground_brush here because we cannot allow it to be
30285         altered in any way.
30287 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30289         * font.cpp (TextFont::IsScalable): New method.
30290         (TextFont::Path): Paths a glyph but does not stroke or fill. Only
30291         available if the font is scalable.
30292         (TextLayout::Render): Cache each segment's cairo_path_t so that
30293         future renders do not have to do it on a glyph-by-glyph basis
30294         (avoids possible glyph cache misses). May also save time by doing
30295         a single fill rather than a fill per glyph.
30297 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30299         * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
30300         argument.
30301         (RenderGlyphPath): Same.
30302         (UnderlinePosition): New method.
30303         (UnderlineThickness): New method.
30304         (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
30305         made a funny).
30307 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30309         * text.cpp (LayoutSilverlight): LineBreaks don't really care about
30310         TextDecorations or Foreground properties.
30312         * font.cpp (TextRun::~TextRun): unref the font.
30313         (TextSegment): now references the original TextRun instead of
30314         copying pointers/values.
30315         (TextLayout::Render): Updated for above change.
30317 2007-09-28  Zoltan Varga  <vargaz@gmail.com>
30319         * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
30320         x:Name attributes.
30321         (LoadCode): Change return type to bool to indicate a loading error.
30323 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
30325         * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
30326         (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
30327         false, then it signifies MediaEnded, no need to explicitly check.
30328         (MediaElement::SetSource): Delete the current source here.
30329         (MediaElement::~MediaElement): C++ `delete' operator doesn't
30330         handle freeing NULL pointers.
30331         (MediaElement::DownloaderComplete): No need to delete the source
30332         here, done in SetSource() instead.
30334         * font.cpp: Created my own GlyphMetrics struct which uses doubles
30335         instead of ints for more accurate layout/rendering calculations.
30336         (Layout): When comparing to max_width, add 1.0 to account for
30337         rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
30338         width/height values for the same reason.
30340 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
30342         * xaml.cpp: Free locally allocated Points inside get_point_array.
30344 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
30346         * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
30347         the path.
30349 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
30351         * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
30352         thickness == 0 optimization.
30354 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30356         * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
30357         Silverlight does).
30359         * text.cpp: Merged with custom text layout code - layout algorithm
30360         is chosen at runtime_init() via flags or environment variable.
30362 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30364         * runtime.cpp (runtime_init): Don't check pango version info,
30365         we're just gonna statically link in pango (and/or do
30366         configure-time checks if the user decides to link to a system
30367         pango). Implemented some preliminary environment variable parsing
30368         action to decide if the user wnts to use ffmpeg vs ms codecs,
30369         pango vs my "silverlight" text layout engine, etc.
30371 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30373         * runtime.cpp (runtime_init): Now takes a flags argument for
30374         enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
30375         then make sure pango is recent enough (if not, print a warning
30376         akin to the cairo warning).
30378 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
30380         * array.cpp: Fix issues on double parsing, including bug #328915 and
30381         test cases in /moon/test/xaml/points-torture.xaml
30383 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30385         * animation.cpp: Add a few null checks.
30387 2007-09-27  Larry Ewing  <lewing@novell.com>
30389         * media.cpp: Don't mark our download progress as 100% until we've
30390         been notified by the downloader that it is complete.  Some
30391         programs check download progress to decide when they can safely
30392         poke at the media element properties.
30393         * downloader.cpp: set the final downloader progress to 1.0 not 100.
30395 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
30397         * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
30398         line. Fix bug #328907.
30400 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30402         * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
30403           change InitializeFromXaml to take a XamlLoader argument.
30405 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30407         * xaml.cpp: More unrefs.
30409 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30411         * text.cpp: Unref a few newly created objects.
30412         * control.cpp: Remove an unnecessary ref.
30414 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
30416         * text.cpp (SetValue): Implement proper handling of the Text property.
30417         (GetValue): Ditto.
30418         (OnPropertyChanged): Force a relayout when the foreground property changes.
30419         (Layout): Remove the laying out of the contents of the Text property, since the
30420         text is now contained in the first inline.
30421         
30422 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30424         * font.cpp (Layout): Include the space char on the line before
30425         wrapping, this is noticable when TextDecorations="Underline" is
30426         enabled.
30427         (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
30428         (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
30429         (TextFont::Render): Implemented.
30431 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
30433         * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
30434         (and was removed elsewhere, except here);
30436 2007-09-26  Chris Toshok  <toshok@ximian.com>
30438         * clock.cpp (TimeManager::Tick): a few changes.  first and
30439         foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
30440         a buffer of 50ms on either side of the timeout before we consider
30441         the Tick either slow or fast.  Increase the number of out-of-line
30442         ticks we need and decrease the fps adjustment.
30444 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30446         * text.cpp (OnCollectionChanged): Needs to call Invalidate().
30448 2007-09-26  Chris Toshok  <toshok@ximian.com>
30450         * clock.cpp: initialize the min_timeout based on a good default
30451         max fps (60 in our case).  Also, calculate the fps adjustments in
30452         a nicer way.
30454         * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
30455         it's handled by TimeManager's default.
30457 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30459         * font.cpp: A bunch of fixes/changes to mimic Microsoft's
30460         Silverlight TextBlock layout logic.
30462 2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
30464         * Makefile.am: Added missing files for dist tarball
30466 2007-09-26  Chris Toshok  <toshok@ximian.com>
30468         * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
30469         we just adjust fps by a fixed amount (4fps) either up or down, if
30470         a certain number (5, by default) of ticks in a row take either
30471         less or more time to complete (respectively), than the current
30472         timeout.
30474 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
30476         * moon-path.c: Fix typos.
30477         * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
30479 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
30481         * shape.h|cpp: Remove Line (direct path manipulation) hack.
30483 2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30485         * xaml.cpp: Unref collections and matrix transforms we create.
30487 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
30489         * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
30490         context.
30492 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
30494         * text.cpp (TextBlock): Set an empty string as a default Text property.
30495         (InsideObject): Implement this for text blocks.
30497 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
30499         * font.cpp: Fix warning.
30501 2007-09-25  Larry Ewing  <lewing@novell.com>
30503         * brush.cpp|h: add image_brush_create_similar to simplify creating
30504         similar surfaces.  Use it where appropriate.
30506         * media.ccp: use image_brush_create_similar where possible. In
30507         MediaElement::Render draw with opacity directly rather than
30508         creating a temporary surface for every frame. Rework image opacity
30509         cache so that we don't have to recreate the surface every time. 
30511 2007-09-25  Jb Evain  <jbevain@novell.com>
30513         * media.cpp|h: let the MediaElement be the only one to trigger
30514         its own events, terminate its friendship with MediaBase.
30516 2007-09-25  Jb Evain  <jbevain@novell.com>
30518         * playlist.cpp|h: trigger a parsing error when no href attribute
30519         is found for base and ref elements.
30521 2007-09-25  Jb Evain  <jbevain@novell.com>
30523         * playlist.cpp|h, media.cpp: Auto play for playlists.
30525 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30527         * font.cpp (Render): Fixed some y1 offset logic that didn't amke
30528         any sense (and was wrong afaict anyway). We now render exactly
30529         like Microsoft Silverlight.
30531 2007-09-24  Jb Evain  <jbevain@novell.com>
30533         * playlist.cpp: close the previous source before playing
30534         the next one.
30536 2007-09-24  Jb Evain  <jbevain@novell.com>
30538         * mplayer.cpp: on Close, reset height and width to zero.
30540 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30542         * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
30543         either the NaturalWidth or NaturalHeight changes.
30545 2007-09-24  Jb Evain  <jbevain@novell.com>
30547         * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
30548         only a SingleMedia deals with the MediaPlay directly. A playlist
30549         being a collection of either other playlist or singlemedias,
30550         playing one at a time.
30552 2007-09-24  Jb Evain  <jbevain@novell.com>
30554         * media.cpp, playlist.cpp: let the Media Sources change
30555         the state of the MediaElement (Playing/Paused/Stopped).
30557 2007-09-24  Jb Evain  <jbevain@novell.com>
30559         * media.h: let the media source change the properties
30560         of the media element. Make MediaSource friend of MediaElement
30561         to do so.
30562         * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
30564 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30566         * font.cpp: Added kerning.
30568         * mplayer.cpp: Added mutex locking for the target_pts variable.
30570 2007-09-24  Jb Evain  <jbevain@novell.com>
30572         * playlist.cpp: Playlist::IsPlaylistFile: return false
30573         on null argument.
30575 2007-09-23  Jb Evain  <jbevain@novell.com>
30577         * playlist.cpp: A base element stores the base in
30578         a href attribute, not in its body.
30580 2007-09-22  Chris Toshok  <toshok@ximian.com>
30582         * Makefile.am (USE_XRANDR): define USE_XRANDR.
30584         * runtime.cpp (Surface::realized_callback): get the RANDR screen
30585         config info, and set the TimeManager's max refresh to match the
30586         screen's .
30588         * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
30589         method.
30591 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
30593         * xaml.h xaml.cpp: Add support for parsing x:Code elements and
30594         passing them to managed code.
30596 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
30598         * mplayer.cpp (audio_play): Slightly optimized the volume
30599         adjustment loop.
30601         * font.cpp (Layout): Keep track of the line ascend and pad our
30602         extents with an extra pixel on all sides to account for hinting.
30603         (Render): Starts rendering glyphs 1 pixel in. Also modified the
30604         logic such that we didn't have to treat path/bitmap glyphs
30605         differently.
30607 2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
30609         * font.cpp: Now handles scalable fonts by rendering their outline
30610         paths rather than rendering bitmaps.
30612         * moon-path.c (moon_path_move_to): Resize the path auto-magically
30613         if we don't have enough room. Same for all of the other
30614         line_to/curve_to/etc.
30616 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
30618         * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
30619         the old width extents).
30620         (Layout): When breaking a long line, the new line height should
30621         not be set to 0 (duh), it should be set to the font height.
30623 2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30625         * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
30626           the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
30627           managed code to set them. Keep track of mappings in native code, call
30628           into managed code only if a mapping is not found here. Keep a list of
30629           missing assemblies, allows managed code to request downloading of
30630           several assemblies before trying to parse xaml again. Added
30631           XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
30632           successful (and only then), requests a vm to be loaded, before calling
30633           into managed code to actually create the managed object.
30635 2007-09-20  Chris Toshok  <toshok@ximian.com>
30637         * type.cpp, type.cpp.in (types_init_register_events): register the
30638         LostFocus/GotFocus events.
30640         * uielement.h: add LostFocusEvent/GotFocusEvent.
30642         * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
30644 2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
30646         * text.cpp (InsideObject): Removed.
30648         * font.cpp (Layout): Add the horiBearingX value of the last glyph
30649         in each line to the width of said line.
30650         (RenderGlyphBitmap): Cache the surface and use it as a mask when
30651         filling so that the true source pattern shows thru.
30653 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
30655         * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
30656         render.
30657         (mango_renderer_show_layout): Instead of having pango render the
30658         text, do it ourselves using our cached paths from the previous
30659         call to mango_renderer_layout_path().
30660         (mango_renderer_layout_path): Clear our cache paths.
30662 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
30664         * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
30665         foreground changes.
30666         (OnSubPropertyChanged): Same.
30668         * font.cpp (GetFont): No longer need to pass the size to
30669         TextFont::Load().
30670         (TextFont::Load): No longer needs the size argument.
30671         (TextFont::.ctor): We just get the size from the pattern now.
30672         (TextFontDescription::CreatePattern): Call FcFontMatch() on our
30673         generated font pattern here instead of having our lower-level
30674         TextFont::.ctor do it.
30675         (TextFont::Ascender): Use the size metrics so that this always
30676         works properly (at least it seems to).
30677         (TextFont::Height): Same.
30678         (TextLayout::Layout): Changed line-height logic a bit for
30679         LineBreaks.
30681 2007-09-20  Chris Toshok  <toshok@ximian.com>
30683         * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
30684         type event hashes as well if we don't find it in ours.
30686 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
30688         * brush.cpp: Implemented MappingMode for LinearGradientBrush.
30689         Buttons from Dr Popper are now rendered correctly.
30691 2007-09-20  Chris Toshok  <toshok@ximian.com>
30693         * typegen.cs (GenerateTypeCpp): add a call to
30694         types_init_register_events.
30696         * type.h.in, type.cpp.in: add Type::RegisterEvent,
30697         Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
30699         * type.cpp.in: add types_init_register_events, which registers all
30700         the events we care about for all the types.  we do it here to
30701         guarantee that events have been registered by the time any
30702         instance code is run for any type.
30703         
30704         * dependencyobject.h, dependencyobject.cpp: remove the event
30705         registration from EventObject, it's moving to Type.  so the Type
30706         will contain the name to id hash, and the EventObject will only
30707         contain an array of GSLists, where the index into that array is
30708         the event's id.
30709         
30710         * clock.cpp (clock_init): lookup the static events here.
30712         * runtime.cpp (runtime_init): same.
30714         * animation.cpp (animation_init): same.
30716         * downloader.cpp (downloader_init): same.
30718         * uielement.cpp (uielement_init): same.
30720         * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
30721         src/type.h, src/runtime.h, src/downloader.h: events are static to
30722         the classes now, instead of being per-instance.
30724         * src/types.h src/types.cpp: regen.
30725         
30726 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
30728         * geometry.cpp: Avoid re-allocating path memory when possible.
30729         * moon-path.c|h: Added documentation and new moon_path_renew and 
30730         moon_path_clear functions to reduce memory re-allocations.
30731         * shape.cpp|h: Avoid re-allocating path memory when possible.
30733 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
30735         * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
30736         Bubbles from bubblemark.com are now rendered correctly.
30738 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
30740         * shape.cpp|h: Remove dead code.
30742 2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
30744         * font.cpp: More fixes to make stuff build/work (more or less).
30746         * text.patch: Patch to make text layout/rendering use my new code
30747         rather than pango.
30749 2007-09-19  Chris Toshok  <toshok@ximian.com>
30751         * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
30753 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
30755         * moon-path.c|h: New. Create simple or complex paths without a
30756         (expensive) cairo_context_t using an API similar to cairo.
30757         * geometry.cpp|h: Use moon_path functions. Added (still inactive)
30758         code to compute bounds for paths.
30759         * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
30760         for Polylines and Polygons. Still not perfect for large thickness 
30761         and steep angles but 8-10x faster and better (no artifact left) 
30762         than previous code, see new xaml animation tests).
30763         * rsvg.cpp|h: Adapt to use moon-path functions.
30764         * Makefile.am: Add moon-path.c and moon-path.h to the build.
30766 2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
30768         * font.cpp: More hackery.
30770 2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30772         * panel.cpp: Add a null check.
30773         * xaml.cpp: Created a list that contains most created elements in order to
30774           unref them once parsing is finished (we need to unref all created
30775           elements except the top one, but the parser callback functions don't
30776           know which is the top one, so we delay the unrefing until the end). If
30777           parsing is done manually (*_from_str, etc), just use unref.
30778         * text.h, text.cpp: Add text_destroy to properly destroy the default
30779           foreground brush on shutdown.
30780         * clock.cpp: When we allocate a clock, unref it after adding it to the
30781           group.
30782         * collection.h: Store the parent in the Node, since we can't call
30783           obj->GetParent () in a destructor (it will walk up the hierarchy using
30784           the type system, but since the parent can be in the destructor, the type
30785           system isn't reliable anymore).
30786         * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
30787           foreground brush, not to the element. Add a mango_renderer_get_type_safe
30788           that can reinitialize static variables (after a libmoon reload) from
30789           glib.
30790         * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
30791           values.
30792         * collection.cpp: Store the parent in the Node, since we can't call
30793           obj->GetParent () in a destructor (it will walk up the hierarchy using
30794           the type system, but since the parent can be in the destructor itself,
30795           the type system isn't reliable anymore).
30796         * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
30797         * media.cpp: Sprinkle a few unrefs here and there.
30798         * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
30799           Add a null check in the Storyboard destructor. Use Value::CreateUnref
30800           for default values.
30801         * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
30802           shutdown.
30804 2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
30806         Continued fixes to go along with Rolf's other TextBlock leak
30807         fixes.
30809         * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
30810         (mango_attr_foreground_destroy): Don't unref the fg.
30812         * text.cpp (default_foreground): Make return a static reference.
30813         (Layout): Don't ref the fg.
30815 2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
30817         * font.cpp: more progress on text layout.
30819 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30821         * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
30823 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30825         * xaml.cpp: Fix warning.
30827 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30829         [Removed mono dependency for 1.0 moonlight applications. 
30830         We now have a native [Plugin]XamlLoader that is the native counterpart of the 
30831         managed Loader object, the native loader handles xaml loading when the 
30832         mono runtime isn't loaded.]
30834         * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
30835           Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
30836           was necessary because the callback handler isn't given enough
30837           information (it needs to know the plugin, but this information is not
30838           passed on), and it now also avoids the potential problem of overwriting
30839           static callbacks when several plugins are created simultanously.
30840         * control.cpp, demo.cpp: Update according to API change.
30842 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30844         * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
30846 2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
30848         * font.cpp|h: New font/text rendering engine (e.g. replacement for
30849         pango). Nowhere near complete yet.
30851 2007-09-14  Miguel de Icaza  <miguel@novell.com>
30853         * media.cpp (Stop, Pause): Do not dereference source if it is not
30854         yet set (TopBanana does this).
30856 2007-09-13  Jb Evain  <jbevain@novell.com>
30858         * media.cpp|h, playlist.cpp|h: Work on playlist integration.
30860 2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
30862         * mplayer.cpp (StopThreads): When resetting current_pts and
30863         target_pts, use the audio (or video) initial_pts value rather than
30864         0 since they are meant to be absolute pts values, not
30865         relative. This fixes a bug in the halo3 site where pressing Stop
30866         would cause the current time string to become "59:55" when it
30867         should have been "00:00".
30869         * media.cpp (OnPropertyChanged): Only Invalidate() on
30870         PositionProperty changes if we have video content to render. Fixes
30871         bug #82474.
30873         * mplayer.cpp (HasVideo): New method that returns true if the
30874         media source has video content.
30876 2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
30878         * mplayer.cpp (Duration): Only use audio duration as the defacto
30879         duration if we've got a valid pcm handle.
30881 2007-09-10  Chris Toshok  <toshok@ximian.com>
30883         * animation.cpp (HookupAnimationsRecurse): make the message
30884         involving failure to hookup a property more verbose.  Looks like
30885         MS is treating a TranslateTransform as a ScaleTransform in popfly
30886         - that is, they're trying to animate ScaleX on a
30887         TranslateTransform (which is oddly enough named "scale".)
30889         * media.cpp: Emit ImageFailedEvent if we failed to load the image.
30890         Remove that damn TODO printf.
30892         * media.h: add ImageFailedEvent to Image, and change signature of
30893         CreateSurface so we can return false if there's an error.
30895         * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
30897         * error.h: make these classes instead of structs, and also make
30898         them copy/free the type specific strings.  it'll result in more
30899         allocations but it cleans up the code using them.
30901 2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
30903         * shape.cpp: Fixed Polygon "special" case when it only has to draw
30904         a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
30905         working) which is now 10x faster than calling ComputeBoundSlow (the
30906         working alternative). Started to reuse the same concept for Polyline
30907         and Polygon but the (#def-out) code doesn't yet handle line joins 
30908         correctly (so it still use the correct ComputeBoundSlow);
30910 2007-09-06  Chris Toshok  <toshok@ximian.com>
30912         * dirty.cpp (process_dirty_elements): some guards against unioning
30913         an empty rectangle.
30915 2007-09-06  Chris Toshok  <toshok@ximian.com>
30917         * runtime.cpp (Surface::Invalidate): only invalidate the actual
30918         rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
30919         be.
30921         * rect.h (Rect::Floor): drop fractional part of all values.
30923         * media.h,media.cpp: we cheat and turn off AA on MediaElements
30924         when they aren't rotated or skewed.
30926         * uielement.h, uielement.cpp: we need to keep track of 2
30927         dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
30928         dirty.cpp if the child uses AA, and one for children who have
30929         passed their invalidation rect up the tree (we don't grow this
30930         one).  Also, add the default UseAA method, which returns true, and
30931         the ChildInvalidated method, which mirrors Invalidate(Rect r) but
30932         uses the children_dirt_rect.
30934         * panel.h, panel.cpp (Panel::~Panel): clear our children
30935         collection.
30936         (Panel::FindStartingElement): the meat of the optimization hack -
30937         we determine if we can skip parts of the tree if the expose
30938         rectangle exists completely within the bounds of an opaque
30939         element, unrotated, unskewed element.
30940         
30941         * dirty.cpp (process_dirty_elements): handle
30942         item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
30943         the item's dirty_rect by 1 before combining them, if the item uses
30944         AA.
30946 2007-09-05  Jb Evain  <jbevain@novell.com>
30948         * playlist.cpp: the asx format is case insensitive, parse it
30949         accordingly.
30951 2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
30953         * animation.h: Make KeySpline::GetObjectType virtual.
30955 2007-09-05  Jb Evain  <jbevain@novell.com>
30957         * playlist.cpp, playlist.h: work on playlist parsing.
30959 2007-09-05  Jb Evain  <jbevain@novell.com>
30961         * xaml.h: export timespan_from_str.
30963 2007-09-05  Jb Evain  <jbevain@novell.com>
30965         * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
30967 2007-09-04  Chris Toshok  <toshok@ximian.com>
30969         * media.cpp (Image::Render): unref the backing pixbuf as soon as
30970         possible.
30971         (Image::CleanupSurface): guard against double unreffing the
30972         backing pixbuf.
30974 2007-09-04  Chris Toshok  <toshok@ximian.com>
30976         * xaml.cpp (xaml_set_property_from_str): delete the color.
30977         (dependency_object_set_attributes): same.
30979 2007-09-04  Chris Toshok  <toshok@ximian.com>
30981         * media.cpp (Image::CreateSurface): if we need to create a new
30982         surface, make sure to unref the old one.
30984         * geometry.cpp (PathGeometry::PathGeomtry): use
30985         Value::CreateUnrefPtr (bad name, imo, but eh)
30986         (PathFigure::PathFigure): same.
30988 2007-09-04  Jb Evain  <jbevain@novell.com>
30990         * playlist.h, playlist.cpp: Work on the overall design.
30992 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
30994         * brush.cpp (image_brush_create_pattern): Revert previous patch as
30995         it broke test suite.
30997 2007-09-04  Jb Evain  <jbevain@novell.com>
30999         * list.h, list.cpp: add a List::ForEach method.
31001 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31003         * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
31004         (based on lewings performance patch).
31006 2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
31008         * text.h|cpp: TextBlock actual_[height|width] are already cached 
31009         because they're expansive to calculate. Make sure we don't compute
31010         them until they're really required (e.g. when a lot of properties
31011         changes when loading an XAML file).
31013 2007-09-04  Chris Toshok  <toshok@ximian.com>
31015         * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
31016         keyframes in reverse order so the sort works.
31018 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31020         * list.cpp (Insert): Fixed.
31022         * runtime.cpp (render_cb): Added some "FPS" debug spew.
31024         * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
31025         timeout id, by returning false, it is removed for us.
31027 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
31029         * media.cpp: fix memory leaks and crashes when a download gets
31030         aborted.
31032 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31034         * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
31035         as that seems to be what ffmpeg uses internally. Also added a new
31036         'eof' state so that we can easily tell if we've reached the end of
31037         the media stream (eof is true and no packets queued).
31039 2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31041         * media.h, media.cpp: If we get a play request before the media is loaded,
31042           save the request and start playing when the media is loaded. Hopefully
31043           this is what MS is doing.
31045 2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
31047         * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
31048         than comparing the Length() to 0.
31050         * list.cpp: Added more tests.
31052 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
31054         * rect.cpp: Safer IsEmpty (handles negative values)
31055         * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
31056         empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
31057         shape is empty.
31059 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
31061         * media.cpp: Fix premul and remove confusing macro.
31063 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31065         * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
31066           canvas.cpp, namescope.cpp: Plug some leaks.
31067         * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
31068         * dependencyobject.cpp: free_attachee: unref the contained dob. Use
31069           base_unref () instead of accessing the pointer in a few places to allow
31070           for null pointers.
31071         * debug.cpp: get_stack_trace is now able to get meaningful data for managed
31072           parts of the stack trace as well.
31074 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31076         * list.cpp: List::Unlink: Link my neighbours to eachother.
31078 2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
31080         * rect.cpp: Fix union with empty rectangles (so x and y are not
31081         assigned to 0 resulting in large bounds). Fix IsEmpty.
31082         * shape.cpp: Fix possible division by 0, resulting in infinite 
31083         values (and much too large bounds)
31085 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31087         *.cpp: Updated for the slightly different List API (list nodes no
31088         longer have Next() or Prev() methods, just access the pointers
31089         directly).
31091         * animation.cpp: Made sorted_list a GPtrArray and updated to use
31092         g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
31093         sorted_list) accesses assumed nodes were of type KeyFrameNode,
31094         which they were not. Fixed.
31096         * xaml.cpp: Made XamlElementInstance.dtor virtual.
31098         * collection.h: Made the Collection::Node.dtor virtual.
31100         * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
31101         can no longer guarantee that List::Node->next will have the same
31102         address as the List::Node object and so the list implementation
31103         broke. This rewrite is a bit less fancy, but doesn't rely on that
31104         feature.
31106 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31108         * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
31109         doesn't change the current rectangle (but returns a new one).
31110         However everything seems to work, so they are probably not needed.
31112 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31114         * text.cpp (OnPropertyChanged): Need to Invalidate() too.
31116 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31118         * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
31119           now reference either the fullscreen drawing area or the normal drawing
31120           area. Refactored drawing area initialization and destruction into
31121           seperate methods. Modified ConnectEvent to be able to specify whether
31122           the drawing area should attach to realize/unrealize events (fullscreen
31123           drawing area shouldn't). Only emit ResizeEvent if we're not in
31124           fullscreen mode. Added normal_height/width, contains the size of the
31125           surface when not in fullscreen (as opposed to screen_height/width for
31126           fullscreen mode). Height/width now contains the actual size of the area
31127           where we draw, whether in fullscreen mode or not.
31129 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31131         * shape.cpp: #ifdef out an optimization that doesn't work with
31132         ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
31133         wouldn't render at all with it's fill brush). Added same shortcut 
31134         (as before) for Shape::ComputeBoundsSlow.
31136 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
31138         * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
31139         are known to be empty (UIElement::SHAPE_EMPTY).
31141 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31143         * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
31144           apparently a point is inside a shape unregarding to whether it's filled
31145           or not, unlike geometries.
31147 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31149         * shape.cpp: Better degenerate handling for round-rectangles and 
31150         for ellipses.
31152 2007-08-30  Chris Toshok  <toshok@ximian.com>
31154         * collection.h, collection.cpp: change the prototype of
31155         Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
31156         subclasses check the return value before doing their type specific
31157         handling of the child.  Fixes the crash from invalid xaml in
31158         alan's testcase.
31160         * animation.h, animation.cpp: track collection api change.
31162 2007-08-30  Chris Toshok  <toshok@ximian.com>
31164         * collection.cpp (Collection::Add): make the warning a lot more
31165         useful if the child isn't of the right type.
31167 2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31169         * xaml.cpp: Unref the namescope.
31170         * debug.h, debug.cpp: Added. Implemented get_stack_trace and
31171           print_stack_trace.
31172         * clock.cpp: Unref the _instance.
31173         * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
31174           debug purposes. It's able to log to console object creation,
31175           destruction, ref/unrefs with a stacktrace with C++ unmangled function
31176           names, file and line number. Keep a count of created and destroyed
31177           objects, and a list of objects still alive. Ref and unref attached
31178           objects, and free the attachees when we're deleted.
31179         * animation.h, animation.cpp: Add animation_destroy, and destroy the default
31180           dependency property for a few properties.
31181         * type.cpp, type.cpp.in: Initialize Type::types to NULL.
31182         * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
31183           types. Call animation_destroy on shutdown, and add some object tracking
31184           output to runtime_init and runtime_shutdown.
31185         * Makefile.am: Added debug.*.
31187 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31189         * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
31190         for rectangles.
31192 2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
31194         * mplayer.cpp (AdvanceFrame): If there is no video stream, return
31195         based on audio state. Also, if current_pts >= target_pts already,
31196         return true rather than false to pretend we advanced a frame (it's
31197         really not that important to our caller, all the value is used for
31198         is updating position).
31200 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31202         * shape.cpp: Handle negative values for Height and Width (not 
31203         drawn) and for Radius[X|Y] (absolute values).
31205 2007-08-30  Jb Evain  <jbevain@novell.com> 
31207         * media.h, media.cpp: introduce a new MediaSource class that a
31208         MediaElement uses, so we can have either a SingleMedia or a Playlist
31209         as a source.
31210         * playlist.cpp, playlist.h: added
31211         * Makefile.am: add the previous files.
31213 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31215         * shape.cpp: Fix small rectangle fills when no stroke brush is 
31216         specified.
31218 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
31220         * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
31221         bounds on TextProperty change explicitly, it should already be
31222         recalculated later in the function in the same place it gets
31223         reclauclated for other property changes.
31224         (ComputeBounds): Updated to work the same as the rest of the
31225         elements work.
31227 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
31229         * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
31230         thickness
31232 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
31234         * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
31235         the path after we get a copy of it. Remove the now unrequired 
31236         clipping inside the *::BuildPath for StretchUniformToFill.
31238 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
31240         * media.cpp (Render): Cache the pattern matrix.
31241         (DownloaderComplete): Remove the assert and simply handle that
31242         case by returning (which defers the call until OnLoaded).
31244 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31246         * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
31247           making things consistent.
31249 2007-08-29  Chris Toshok  <toshok@ximian.com>
31251         * merged delayed-rendering-branch branch to head.  ChangeLog is:
31252         
31253         2007-08-28  Chris Toshok  <toshok@ximian.com>
31255                 * control.cpp (GetTransformFor): change this to act as
31256                 Canvas::GetTransformFor does - we only put in the transform from
31257                 parent to child here - don't include the parent's transform as
31258                 well.  Fixes the airlines demo.
31260         2007-08-28  Chris Toshok  <toshok@ximian.com>
31262                 * dirty.cpp (process_dirty_elements): use a different method for
31263                 checking if against the toplevel canvas, and also use
31264                 UIElement::parent instead of DependencyObject::GetParent() to get
31265                 controls working a little better than before.
31267                 * control.h, control.cpp: remove UpdateTransform.  this is handled
31268                 by the dirty.cpp code now.
31270                 * dependencyobject.h, dependencyobject.cpp: copy over the
31271                 event_object_{add,remove}_event_handler change from the trunk so
31272                 we can continue to work with HEAD olive.
31274         2007-08-22  Chris Toshok  <toshok@ximian.com>
31276                 * uielement.cpp (Invalidate): don't actually invalidate the
31277                 element unless it's visible.
31278                 (OnPropertyChanged): the above change requires us to invalidate
31279                 the element before setting the flags (in the case where we're
31280                 hiding an element).
31282         2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
31284                 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
31285                 unless unspecified, only then should we use video width/height.
31287         2007-08-21  Chris Toshok  <toshok@ximian.com>
31289                 * uielement.cpp (DoRender): short-circuit rendering of uielements
31290                 when their opacity is 0.
31292                 * dirty.cpp (process_dirty_elements): handle controls.
31294         2007-08-21  Chris Toshok  <toshok@ximian.com>
31296                 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
31297                 (cairo_*_extents) codepath for computing bounds.  Use this path
31298                 for polygons, polylines, and paths.  Implement a Line-specific
31299                 fast ComputeBounds.
31301         2007-08-20  Chris Toshok  <toshok@ximian.com>
31303                 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
31304                 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
31306         2007-08-20  Chris Toshok  <toshok@ximian.com>
31308                 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
31310                 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
31311                 call, and Rect::GrowBy
31313                 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
31314                 call.
31316         2007-08-20  Chris Toshok  <toshok@ximian.com>
31318                 * shape.h, shape.cpp: move the ellipse bound computing to shape
31319                 instead.
31321 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31323         * clock.h: Implement TimeManager::GetObjectType.
31324         * dependencyobject.h, dependencyobject.cpp: Move all type management down to
31325           Base (GetObjectType, Is, GetType, GetTypeName), and implement
31326           GetObjectType in the classes that don't do it already. Remove
31327           BASE_FLOATS, simplifying ref counting.
31328         * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
31329           that don't already inherit from DependencyObject.
31330         * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
31331           raises events), and implement GetObjectType.
31333 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
31335         * shape.cpp: Fix StretchUniformToFill
31337 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
31339         * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
31340         (new since refresh?) need to be multiplied with the stroke's 
31341         thickness
31343 2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
31345         * text.cpp (Render): Fixed the "no text to render" optimization:
31346         don't check TextBlock::TextProperty to see if we have any text to
31347         render, instead check TextBlock::layout (which will have any text
31348         from inlines as well).
31349         (OnPropertyChanged): If the TextProperty changes, recalculate the
31350         layout and bounds.
31352 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
31354         * geometry.h: Add a Path* parameter to Draw as we need to know some 
31355         stuff (e.g. stroke thickness) in order to detect degenerate cases.
31356         * geometry.cpp: Handle degenerate case for RectangleGeometry.
31357         * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
31358         element (NULL in the case of clipping).
31359         * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
31360         class. Add GetFillRule method. Handle most cases where a large stroke
31361         thickness change the SL drawing behaviour (wrt Cairo behaviour)
31362         * uielement.h: Add flags for empty/normal/degenerate shapes
31364 2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31366         * panel.cpp: InsideObject: The point is only inside us if we have a
31367           background, otherwise we act like if we were transparent (which is what
31368           we are if we aren't painting anything inside us).
31369         * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
31370           it's closer to what it actually does.
31371         * shape.cpp: Changed implementation of Shape::CanFill to return true only if
31372           we're actually filled, and rename CanFill to IsFilled so that it's
31373           closer to what it actually does. 
31375 2007-08-27  Jackson Harper  <jackson@ximian.com>
31377         * dependencyobject.cpp|h: Don't return Collections when getting
31378         parents.
31380 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
31382         * mplayer.cpp (Play): Always add a timeout, even for audio-only
31383         media, so that the callback can check if the media has ended and
31384         emit the MediaEnded event.
31386         * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
31388         * mplayer.cpp (MediaEnded): New convenience function.
31390 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
31392         * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
31393         as this clear any path data in the context (see
31394         test-path-group.xaml)
31396 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
31398         * mplayer.cpp (audio_play): Implement software balance/volume here
31399         rather than using the system's mixer (as that changes the
31400         balance/volume for all applications which is a bad thing). Fixes
31401         bug #82602.
31403 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31405         * panel.cpp: InsideObject: only skip checking the children if the
31406           point is not in the clipped area.
31408         * uielement.h, uielement.cpp: Added InsideClip, and moved the
31409           corresponding code from InsideObject to InsideClip.
31411 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
31413         * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
31414         tests/xaml/test-path-smoothquadraticbezier.xaml
31416 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31418         * uielement.h, uielement.cpp: Implement InsideObject here too, the same
31419           implementation as Shape has (for our Clip property).
31420         * frameworkelement.cpp: InsideObject: call new base implementation as well.
31421         * panel.cpp: InsideObject: don't check our children, the mouse may be over
31422           them, but they're not visible for some reason (the parent object might
31423           be clipped, etc).
31425 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31427         * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
31428           motion event even though the mouse isn't over us.
31429         * runtime.h: Add a public Surface::GetCapturedElement.
31431 2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
31433         * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
31434         video frames will update if we seek backwards.
31436         * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
31438         * media.cpp (UpdateProgress): Use the downloader progress value as
31439         the buffering progress value as well (since we don't yet stream).
31440         (DownloaderComplete): Call UpdateProgres() here so that we can
31441         flush the 100% progress value.
31443         * downloader.cpp (Write): Update the progress first, so that the
31444         writer callback can query the actual progress (all data read up to
31445         and /including/ this point in time).
31446         (NotifyFinished): Set progress to 100% and emit an event.
31448 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31450         * value.h[.in]: Added AsNPObj.
31451         * type.cpp[.in]: Initialize Type::NPOBJ correctly.
31453 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31455         * media.cpp: (DownloaderCompleted): The initial state of media
31456         elements that aren't autoplayed is 'Paused'.
31458 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31460         * media.cpp (MediaElement): Initialize 'loaded' to false.
31461         (SetSource): Don't call DownloaderComplete() if we haven't been
31462         loaded yet.
31463         (GetValue): Convert to position from ms to TimeSpan ticks.
31464         (OnLoaded): Set loaded to true and, if we have a downloader which
31465         has completed the download, call DownloaderComplete() which will
31466         then open the media file and autoplay if appropriate.
31467         (OnPropertyChanged): Protect against creating a downloader for an
31468         empty string uri.
31470 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31472         * media.cpp (DownloaderComplete): If we fail to open, emit the
31473         MediaFailedEvent and set some default values.
31474         (OnPropertyChanged): Don't StopLoader() here, do that all in
31475         SetSource (since SetSource needs to do it anyway).
31476         (SetSource): Call StopLoader() here and close the MediaPlayer,
31477         etc.
31479 2007-08-23  Jackson Harper  <jackson@ximian.com>
31481         * runtime.cpp|h: Make Resize use our event system (so the plugin
31482         can use it).
31483         * dependencyobject.cpp|h: Rename the add/remove handler functions
31484         to not require dependencyobjects.
31486 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31488         * media.cpp (OnPropertyChanged): Don't autoplay here.
31489         (advance_frame): Do ms->TimeSpan conversion here, too.
31490         (DownloaderComplete): Instead of calling ::Pause(), just set the
31491         pause state since the MediaPlayer already starts out in paused
31492         state.
31494 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31496         * clock.h: Add defines and methods to convert between timespans and
31497         floats.
31498         * media.cpp: Create a default (empty) Markers collection. When setting
31499         MediaPlayer time values, convert between ticks (in TimeSpans) and 
31500         milliseconds (which is what MediaPlayer expects). Emit MediaOpened
31501         when we're finished downloading a media, and if we're not autoplaying
31502         it, we're pausing it. Update uses of Value (gint64) constructors.
31503         * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
31504         Value (gint64, Type::Kind) constructor to avoid mixups between
31505         INT64 and TIMESPAN values. Check for null before unref'ing a 
31506         dependency object.
31507         * xaml.cpp: Update uses of Value (gint64) constructors.
31508         
31509 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31511         * type.[cpp|h].in: Add const's here that were only added manually
31512         to the generated files.
31514 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31516         * mplayer.cpp: Implemented volume/balance
31518 2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
31520         * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
31521         code in Polygon::Draw.
31523 2007-08-22  Chris Toshok  <toshok@ximian.com>
31525         * clock.cpp (Tick): guard against division by zero.  gets
31526         "monotone" displaying.
31528 2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
31530         * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
31531         from Rectangle and Ellipse. Monotone requires that on Path and I can't
31532         recall the reason I made this (while all the test cases I made still
31533         work that way).
31535 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
31537         * mplayer.cpp (MediaPlayer): Init mixer variables.
31539 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
31541         * media.cpp (advance_frame): Don't bother invalidating here, we'll
31542         do that in OnPropertyChanged() for the PositionProperty.
31543         (OnPropertyChanged): Invalidate if Position has changed and
31544         opacity > 0.0f (and we actually have video).
31545         (ComputeBounds): Use the FrameworkElement width/height if set.
31546         (GetTransformOrigin): Same.
31548 2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
31550         * mplayer.cpp (Open): Merged both Open() implementations into a
31551         single one. We no longer use Open() without passing a uri (since
31552         Stop() has been implemented in a better way).
31553         (AdvanceFrame): Keep track of our current pts so that we won't get
31554         ahead of the audio if called too often.
31556 2007-08-20  Chris Toshok  <toshok@ximian.com>
31558         * rect.cpp (bounding_rect_for_transformed_rect): oops, got
31559         MAX2/MIN2 mixed up.
31561 2007-08-20  Chris Toshok  <toshok@ximian.com>
31563         * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
31564         name, I know, but we need this functionality.  it's not enough to
31565         use UL and LR corners of the rectangle when computing the bounding
31566         rect for a transformed rectangle.  we have to test all 4 points.
31568         * panel.cpp (ComputeBounds): use
31569         bounding_rect_for_transformed_rect.
31571 2007-08-17  Chris Toshok  <toshok@ximian.com>
31573         * dependencyobject.cpp (strcase_equal, strcase_hash): new case
31574         insensitive hash functions.
31575         (RegisterFull): the property hash tables (per type, used for
31576         GetDependencyProperty) need to be case insensitive.
31578 2007-08-17  Chris Toshok  <toshok@ximian.com>
31580         * xaml.cpp: remove Hidden from the visibility_map.
31581         (enum_from_str): if we don't see a name we recognize, try to parse
31582         it as a number.  This could maybe be someplace else.
31584         * enums.h: remove VisibilityHidden
31586         * uielement.h, uielement.cpp: remove
31587         VisibilityHidden/LAYOUT_VISIBLE
31589         * control.h: remove GetLayoutVisible.
31591         * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
31592         item->GetVisible, since there's no need to distinguish between the
31593         two anymore.
31595 2007-08-17  Jackson Harper  <jackson@ximian.com>
31597         * clock.h: Add ToSeconds utility functions.
31599 2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
31601         * list.cpp (InsertSorted): For the stable evrsion, work backwards
31602         instead of forwards (improves performance in the typical case,
31603         altho we aren't gonna sue this feature anymore - z-sorted lists
31604         will now be GPtrArrays).
31606         * garray-ext.cpp|h: New src file containing an extension to
31607         GPtrArray for inserting an item into a presorted array.
31609         * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
31610         updated all usages of it.
31612         * panel.cpp (Render): Updated now that z_sorted is an array
31613         instead of a linked list.
31615 2007-08-16  Jackson Harper  <jackson@ximian.com>
31617         * xaml.cpp: Transforms can be set as attributes, they are just a
31618         matrix in string form, that become a MatrixTransform on the
31619         object.
31620         - Made the debug a little nicer
31622 2007-08-15  Jackson Harper  <jackson@ximian.com>
31624         * xaml.cpp: Since the callback setting is now a once per a domain
31625         thing, we don't want to check if they are already set. The 'are
31626         they already set' check only worked when we were setting them at
31627         the beginning of each parsing attempt.  With our current setup it
31628         was causing everything to get loaded in the same domain.
31630 2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
31632         * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
31633         segfault if there are no packets in the queue.
31635 2007-08-13  Chris Toshok  <toshok@ximian.com>
31637         * animation.cpp (*KeyFrame::InterpolateValue): for all the
31638         keyframes, if we don't have a Value defined, don't bother
31639         interpolating anything, just return baseValue.
31641 2007-08-13  Chris Toshok  <toshok@ximian.com>
31643         * collection.cpp: fix merging/unmerging of child namescopes.
31645         * namescope.h, namescope.cpp: add a flag (merged) and a list of
31646         child merged namescopes which are searched any time this namescope
31647         is searched.  Reimplement merge as list->Append, and unmerge as
31648         list->Remove.
31650         * dependencyobject.h: add ClearValue, and make GetParent
31651         inlineable.
31653         * dependencyobject.cpp: add impl for ClearValue, and remove
31654         GetParent.  Also, when finding a name we only check non-merged
31655         namescopes.  The merged ones in the hieararchy will be checked as
31656         the children of the non-merged ones.  Given that the set of names
31657         in merged scopes can't overlap, I'm not strictly sure this is
31658         necessary, except to reproduce Silverlight's faulty lookups after
31659         subtree removal.
31661 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
31663         * collection.cpp (Clear): Unregister the object names.
31665         * dependencyobject.h (GetName): uhh... just return the value, lets
31666         not go returning "(null)" in string form.
31668 2007-08-10  Chris Toshok  <toshok@ximian.com>
31670         * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
31671         to the silverlight Key and call s->toplevel->HandleKeyDown.
31672         (key_release_callback): same.
31673         (gdk_keyval_to_key): new function, to map between gdk and
31674         silverlight.
31675         
31676         * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
31677         just package up the args into a structure and Emit the event.
31679         * enums.h: add the Key enum from the silverlight docs.
31681 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
31683         * dependencyobject.cpp (resolve_property_path): Keep track of the
31684         last '.' so that when we go to get the DependencyProperty, we can
31685         pass the property name component rather than the full path of the
31686         property name. Fixes the color fades in Monotone.
31688 2007-08-09  Chris Toshok  <toshok@ximian.com>
31690         * animation.h, animation.cpp: if any keyframe's keytime changes,
31691         we need to re-resolve the collection.
31693 2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
31695         * mplayer.cpp (Play): Only start up the io/audio threads if we
31696         aren't simply paused (e.g. if they are already alive).
31697         (IsPlaying): Return true only if playing && !paused.
31698         (audio_loop): Changed the locking logic to lock outside of the
31699         loop rather than inside. We now only release the lock inside the
31700         loop if/when the paused state changes.
31702 2007-08-08  Chris Toshok  <toshok@ximian.com>
31704         * animation.h: sprinkle Resolve() methods and resolved flags
31705         around.
31707         * animation.cpp (Storyboard::HookupAnimationsRecurse): call
31708         Resolve() on the animation as we recurse.
31709         (KeyFrameNodeComparer): compare using the keyframe's resolved
31710         keytime.
31711         (KeyFrameNodeFinder): nuke.
31712         (KeyFrameCollection::Add): just mark the collection as needing to
31713         be resolved.  don't muck with the sorted list here.
31714         (KeyFrameCollection::Insert): same.
31715         (KeyFrameCollection::Remove): same.
31716         (KeyFrameCollection::Clear): also mark the collection as
31717         unresolved.
31718         (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
31719         (KeyFrameAnimation_ResolveKeyFrames): implement most of the
31720         algorithm posted at
31721         http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
31722         keytimes of different types.  this is all untested, unfortunately,
31723         as I can't get non-TimeSpan keytimes to work on SL.
31724         (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
31725         keytime.
31726         (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
31727         the key frames before using sorted_list.
31728         (*AnimationUsingKeyFrames::Resolve): override the empty
31729         default, and call KeyFrameAnimation_ResolveKeyFrames.
31731 2007-08-08  Chris Toshok  <toshok@ximian.com>
31733         * clock.cpp (Begin): make sure we handle clocks that seek in the
31734         first tick.
31736 2007-08-08  Chris Toshok  <toshok@ximian.com>
31738         * canvas.cpp (Canvas::Canvas): create a temporary namescope
31739         whenever we create a canvas.  We need this for animations that are
31740         started before the canvas is attached to the tree, or in any case
31741         where FindName is called on code associated with a subtree before
31742         it's added to the surface.
31744         * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
31745         Storyboard.TargetName can be assigned to the parent storyboard as
31746         well as the animation.  Loop up the clock hierarchy when looking
31747         for the targetname.
31748         
31749 2007-08-07  Chris Toshok  <toshok@ximian.com>
31751         * animation.cpp, animation.h
31752         (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
31753         iterate over all the keyframes looking for the last one - just
31754         look at the last one in the sorted list.
31756 2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
31758         * media.cpp (SetValue): Only crop position values if we're not
31759         updating state from the media player (we're allowed to set values
31760         outside of the duration range from the media player). Also, do our
31761         seeking here.
31762         (OnPropertyChanged): Don't do our seeking here because we can't
31763         get the actual seek position as GetValue()'s override will
31764         re-query the media player for its actual position.
31766         * mplayer.cpp (Open): Don't create the threads here anymore,
31767         create them in Play() instead. Also calculate ahead of time the
31768         new audio->pts_per_frame value which allows the video to keep even
31769         better sync with the audio (we used to base this on actual time
31770         spent playing the audio frame rather which could sometimes be off
31771         a smidgen).
31772         (AdvanceFrame): If seek_pts is non-zero, then we need to base
31773         target_pts on it rather than video->initial_pts (assuming we have
31774         no audio to sync to).
31775         (Play): Set playing = true and create the audio/io threads.
31776         (Close): A lot of the logic has been moved into a new method,
31777         StopThreads().
31778         (StopThreads): Stop the threads and reset minimal state.
31779         (Stop): Call StopThreads() and seek back to the beginning of the
31780         av stream.
31781         (Seek): Implemented.
31782         (Position): Back to subtracting the initial_pts so that we always
31783         have a range of 0:duration. If seek_pts is set and >target_pts,
31784         use that rather than target_pts so even if we are in a stopped
31785         state, querying the position will return expected results.
31786         (audio_play): Return audio->pts_per_frame rather than the actual
31787         time difference.
31789 2007-08-06  Jackson Harper  <jackson@ximian.com>
31791         * xaml.cpp: add VisualCollections.
31793 2007-08-06  Chris Toshok  <toshok@ximian.com>
31795         * clock.cpp, clock.h: this might be completely wrong and break
31796         other demos... but childless clockgroups Stop when they hit their
31797         duration, they don't SkipToFill.  fixes the silverlightclr balls
31798         demo.
31800 2007-08-06  Larry Ewing  <lewing@novell.com>
31802         * dependencyobject.h:
31803         * dependencyobject.cpp:
31804         * media.cpp:
31805         * type.h: 
31806         * type.cpp: add const to the various string apis.
31808 2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
31810         * mplayer.cpp: Fixes to make it work with media files w/ no audio
31811         (or where we are unable to play the audio).
31813 2007-08-04  Chris Toshok  <toshok@ximian.com>
31815         * brush.h, brush.cpp: add VisualBrush.
31817         * xaml.cpp (xaml_init): hookup VisualBrush parsing.
31819         * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
31821 2007-08-04  Chris Toshok  <toshok@ximian.com>
31823         * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
31824         to work properly, panel needs to call
31825         FrameworkElement::Invalidate, not parent->ChildInvalidated
31826         directly.
31828         * uielement.h, uielement.cpp: add an Invalidated event for use by
31829         the visual brush.
31830         
31831 2007-08-03  Chris Toshok  <toshok@ximian.com>
31833         * collection.cpp (Collection::Add, Collection::Insert): reinstate
31834         jackson's merging code, but only do it if @data's namescope is
31835         temporary.
31837         * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
31839         * xaml.cpp (xaml_create_from_str): set the namescope to be
31840         temporary if create_namescope is false.
31841         (xaml_create_from_file): same.
31843 2007-08-03  Chris Toshok  <toshok@ximian.com>
31845         * panel.h, panel.cpp: add an optimization for the 2 updates that
31846         travel down the tree (UpdateTotalOpacity and UpdateTransform).
31847         Since we're already invalidating the panel's bounds (in fact we do
31848         it before traversing), we can ignore the invalidates which come
31849         back up the tree from the children.
31851         * media.cpp, media.h: make NaturalDuration a Duration.  this gets
31852         the last of roeder's demos sorta working.
31854 2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
31856         * mplayer.cpp: Whenever we change the 'paused' state, signal to
31857         the other thread(s) that it has changed so that they can go on
31858         with their lives immediately rather than waiting for the kernel to
31859         context switch.
31861 2007-08-02  Chris Toshok  <toshok@ximian.com>
31863         * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
31864         you get your panties in a twist, check this out.  If you have a
31865         control and set both its Canvas.LeftProperty and that of its root
31866         object (the return value of InitializeFromXaml), the effects are
31867         *additive*, yet GetValue on each object returns exactly what you'd
31868         expect - the value you set on it.  The only reasonable explanation
31869         for this is that Control has Canvas's layout algorithm c&p'ed into
31870         it.
31872 2007-08-02  Chris Toshok  <toshok@ximian.com>
31874         * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
31875         functions to returning DependencyObjects instead of UIElements.
31876         in javascript you can create arbitrary xaml hierarchies (transform
31877         groups, brushes, etc).
31879         * control.cpp: need a cast here due to the above change.
31881 2007-08-02  Chris Toshok  <toshok@ximian.com>
31883         * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
31884         stuff the gtk_widget_queue_draw_area call there.
31886         * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
31887         panel.cpp, control.h, control.cpp: change the way
31888         UIElement::Invalidate works.  It used to call GetSurface() which
31889         would recurse up the tree to the root, and return the Surface*
31890         back down.  It would then call gtk_widget_queue_draw_area there.
31891         This left little room for optimization.  Switch everything over to
31892         using a new method implemented by all container classes,
31893         ChildInvalidated.  Basically Invalidate's recurse up to the root
31894         as before, but the actual gtk call happens at the root (well, 1
31895         level above it.  at the Surface itself).  In the future we can
31896         freeze Invalidates in container elements when they do things like
31897         update their transform so we'll just send 1 Invalidate up the
31898         tree, not N Invalidates for N children.
31899         
31900 2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
31902         * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
31903         properties.
31905         * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
31906         (IsPaused): New method.
31908         * media.cpp (MediaElement::GetValue): If the Position is being
31909         requested, query the MediaPlayer.
31910         (MediaElement::SetValue): Make sure the PositionProperty value is
31911         within bounds and force it to be if not.
31912         (MediaElement::Stop): Do nothing if we aren't playing/paused.
31913         (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
31914         position changed.
31916 2007-08-02  Chris Toshok  <toshok@ximian.com>
31918         * uielement.h, uielement.cpp: propagate opacity changes the way we
31919         do transform changes.  Store the total opacity of an item in the
31920         item, as we do with absolute_xform.  This keeps us from doing a
31921         walk up to the root of the hierarchy every time we have to draw an
31922         element (which we we were doing before in
31923         UIElement::GetTotalOpacity.)
31925         * panel.cpp, panel.h: when we update our total opacity, loop over
31926         the children telling them to update as well.
31928         * collection.cpp: propagate the panel's total opacity downward
31929         into the newly added subtree.
31931 2007-08-02  Chris Toshok  <toshok@ximian.com>
31933         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
31934         GetSurface/SetSurface.
31936 2007-08-02  Chris Toshok  <toshok@ximian.com>
31938         * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
31939         handle the property changing.
31941         * control.h, control.cpp: rip out all the proxying behavior.
31942         Control now works as a very specialized container.  Imagine if
31943         Panel had only 1 child, and no generalized way of manipulating it
31944         (other than initializing it from a xaml fragment), and you have
31945         Control.
31947 2007-08-01  Larry Ewing  <lewing@novell.com>
31949         * xaml.cpp: don't ever make the previous point relative.
31951 2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
31953         * text.h: Removed deprecated enum values for FontWeights
31955         * media.cpp, mplayer.cpp: Updated to add features newly added with
31956         the July 2007 release of Silverlight 1.1
31958 2007-07-31  Chris Toshok  <toshok@ximian.com>
31960         * runtime.cpp (Attach): attach a namescope to the toplevel canvas
31961         if there isn't one when it's attached.
31963 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
31965         * media.cpp: NaturalDuration is actually a TimeSpan, not a
31966         Duration.
31968 2007-07-31  Chris Toshok  <toshok@ximian.com>
31970         * media.h, media.cpp: move the MediaBase events to MediaElement.
31972 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
31974         * text.h: Added StyleSimulations enum values.
31976         * xaml.cpp: Updated the StyleSimulations enum mapping.
31978 2007-07-31  Chris Toshok  <toshok@ximian.com>
31980         * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
31981         enum StyleSimulations.
31983         * xaml.cpp: add stylesimulations enum map.
31985 2007-07-30  Chris Toshok  <toshok@ximian.com>
31987         * uielement.cpp, uielement.h: add the Tag property.
31989 2007-07-30  Chris Toshok  <toshok@ximian.com>
31991         * animation.h, animation.cpp: add the three KeyFrameCollection
31992         subclass types, and switch all references to "KeyFrameCollection"
31993         to the more specific types.
31995         * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
31996         with Color/Double/PointKeyFrameCollections as subclasses.
31998         * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
31999         type changes.
32000         
32001 2007-07-30  Larry Ewing  <lewing@novell.com>
32003         * color.cpp: make sure that we size expand 3 digit color
32004         specifications properly.
32006 2007-07-30  Chris Toshok  <toshok@ximian.com>
32008         * uielement.h, uielement.cpp: remove InsideObject from here, and
32009         move its warning to Visual::InsideObject instead.
32011         * visual.h, visual.cpp: add visual.cpp, and move implementation of
32012         InsideObject there.
32014         * Makefile.am (libmoon_la_SOURCES): add visual.cpp
32016 2007-07-30  Larry Ewing  <lewing@novell.com>
32018         * xaml.cpp: correct smooth path segments to use the correct value for
32019         cp1 and don't try to make it relative because all the sources are
32020         absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
32021         
32022 2007-07-30  Chris Toshok  <toshok@ximian.com>
32024         * clock.h, clock.cpp: add very naive, probably broken first pass
32025         at Clock::Seek.
32027 2007-07-30  Chris Toshok  <toshok@ximian.com>
32029         * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
32031 2007-07-30  Chris Toshok  <toshok@ximian.com>
32033         * brush.h, brush.cpp: track breaking change of the
32034         Brush.Transform/RelativeTransform properties - they're speced to
32035         be Transforms, not TransformGroups.
32037 2007-07-29  Chris Toshok  <toshok@ximian.com>
32039         * collection.h, collection.cpp: change "ResourceCollection" to
32040         "ResourceDictionary".
32042         * uielement.cpp: same.
32044         * type.cpp, type.h, value.cpp, value.h: same.
32046         * xaml.cpp: same.
32048 2007-07-27  Chris Toshok  <toshok@ximian.com>
32050         * xaml.cpp (xaml_set_property_from_str): look up the enum map from
32051         the property name, not the value.
32053 2007-07-27  Chris Toshok  <toshok@ximian.com>
32055         * transform.h, transform.cpp: cache the transformation matrix once
32056         we recompute it.  This gives us the responsiveness of delayed
32057         updating without the cost of calculating the matrix once per
32058         object associated with it.  a property change just sets the
32059         "need_update" flag, which causes a recompute on the next
32060         GetTransform call.
32062 2007-07-27  Larry Ewing  <lewing@novell.com>
32064         * uielement.cpp: implement initial support for OpacityMask.
32066 2007-07-26  Miguel de Icaza  <miguel@novell.com>
32068         This implements support for relative MediaElement sources and
32069         makes all of them go through the downloader, like we do for
32070         images.
32071         
32072         * media.cpp (MediaElement): Do an implementation of SetSource
32073         similar to the one in Image.   Although there is some code that
32074         could be shared, the problem is that some parameters get in the
32075         way.   
32077         (MediaElement::DownloaderComplete): Move the playback here. 
32078         
32079         (StopLoader): Utility routine, factor this out also on the Image
32080         case, and hook this up to the destructor of Image and
32081         MediaElement.
32082         
32084 2007-07-25  Chris Toshok  <toshok@ximian.com>
32086         * media.h, media.cpp: add the MediaElement events,and emit
32087         DownloadProgressChanged and CurrentStateChanged.
32089 2007-07-25  Chris Toshok  <toshok@ximian.com>
32091         * media.h, media.cpp: register the 3 MediaBase events.  now we
32092         need to figure out where to emit them.
32094 2007-07-25  Jackson Harper  <jackson@ximian.com>
32096         * value.cpp: Assign the kind for NPOBJs.
32098 2007-07-25  Miguel de Icaza  <miguel@novell.com>
32100         * openfile.cpp (open_file_dialog_show): Change this method to
32101         return an array with all the selected files.   
32103 2007-07-24  Chris Toshok  <toshok@ximian.com>
32105         * runtime.h, runtime.cpp: permit setting of the the surface's
32106         background color, which is used to fill the widget before we
32107         render the toplevel canvas.  only do this, though, if the canvas
32108         is not transparent.
32110 2007-07-24  Chris Toshok  <toshok@ximian.com>
32112         * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
32113         of making the assignment.
32115         * canvas.h, canvas.cpp: make surface private, and add SetSurface
32116         for runtime.cpp to use.
32118 2007-07-24  Chris Toshok  <toshok@ximian.com>
32120         * brush.h, brush.cpp: make ImageBrush::SetSource take a const
32121         char*.
32123 2007-07-24  Jackson Harper  <jackson@ximian.com>
32125         * type.h.in: Add the NPOBJ type.
32126         * value.h.in: Add the npobj value, it's just stored as a pointer
32127         so that we don't become dependent on mozilla.
32128         * value.cpp|h,type.h: sync.
32130 2007-07-24  Jackson Harper  <jackson@ximian.com>
32132         * typegen.cs: Kind.cs lives in agmono now.
32135 2007-07-24  Chris Toshok  <toshok@ximian.com>
32137         * media.h, media.cpp: const-ify the PartName argument of the
32138         SetSource methods.  also, ref the new downloader before unreffing
32139         the old one in Image::SetSource.  they could be the same object.
32141 2007-07-24  Chris Toshok  <toshok@ximian.com>
32143         * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
32144         is NULL, return early.
32146 2007-07-23  Chris Toshok  <toshok@ximian.com>
32148         * Makefile.am (libmooninclude_headers): add some missing headers.
32150         * error.h: split out the error classes here.
32152         * libmoon.h: include error.h
32154         * xaml.h: remove the error classes from here.
32156         * xaml.cpp: include error.h
32158 2007-07-23  Miguel de Icaza  <miguel@novell.com>
32160         * runtime.cpp: Removed the timer code from here, move to plugin.
32162 2007-07-20  Chris Toshok  <toshok@ximian.com>
32164         * xaml.cpp (custom_add_child): this method is what's called when
32165         we add a child to an element of a custom namespace.  Trouble is,
32166         it might be a panel subclass.  If it is, and the child is a
32167         UIElement subclass, go ahead and add the child using
32168         panel_child_add.  This gets the Loaded events working properly in
32169         the chess demo (the trouble was that the custom children weren't
32170         even added to the tree, so their OnLoaded methods weren't being
32171         called)
32173 2007-07-20  Miguel de Icaza  <miguel@novell.com>
32175         * collection.cpp: Add support for RemoveAt. 
32177         * runtime.cpp (html_timer_timeout_add): Added helper routine to
32178         setup Html timeouts.
32180 2007-07-20  Chris Toshok  <toshok@ximian.com>
32182         * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
32183         from Canvas to Panel.  I consider this cleaning up the source, as
32184         it's entirely possible to write Panel subclasses that aren't
32185         Canvas subclasses, but if you did that you'd have no
32186         rendering/event handling.
32188         Now pretty much all logic that involves iterating over the list of
32189         children is in Panel.  This also greatly simplifies Canvas.  It is
32190         now just a Panel with 2 interesting things about it: 1) it
32191         provides 2 attached properties to lay out its children, and 2) it
32192         allows the surface to dictate its bounds if it's the toplevel
32193         element.
32195 2007-07-20  Chris Toshok  <toshok@ximian.com>
32197         * downloader.cpp (Open): set the uri of the downloader.
32199 2007-07-20  Chris Toshok  <toshok@ximian.com>
32201         * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
32202         so the potentially large number of objects which don't register
32203         events don't allocate them.
32205 2007-07-20  Chris Toshok  <toshok@ximian.com>
32207         * clock.h, clock.cpp: lock around access to the tick_call list, so
32208         tick calls can be added from other threads.
32210 2007-07-16  Miguel de Icaza  <miguel@novell.com>
32212         * media.cpp (SetSource): Also handle Completed.
32214         * downloader.cpp (Send): If a send operation is performed on an
32215         object that has completed its operation, immediately emit the
32216         finished event or error event.
32218         (Open): During open invalidate the state, to
32219         ensure that new downloads are properly triggered. 
32221 2007-07-16  Chris Toshok  <toshok@ximian.com>
32223         * frameworkelement.h, frameworkelement.cpp: we need
32224         framework_element_new so managed subclasses of FrameworkElement
32225         are possible.
32227         * uielement.h, uielement.cpp: same for this type.
32229 2007-07-13  Chris Toshok  <toshok@ximian.com>
32231         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32232         normally we'd only update the bounds of this element on a
32233         width/height change, but if the render transform is someplace
32234         other than (0,0), the transform needs to be updated as well.
32236 2007-07-12  Chris Toshok  <toshok@ximian.com>
32238         * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
32239         capturing.  This should be on Visual and not UIElement, but we
32240         don't dispatch events that way.
32242 2007-07-12  Chris Toshok  <toshok@ximian.com>
32244         * downloader.h, downloader.cpp: make the Downloader object a bit
32245         more C++ friendly, and make all the private data private.
32247         Also, take this opportunity to switch to using RegisterEvent/Emit
32248         to generate events, instead of the custom listeners.  This will
32249         let JS hook up to the events.
32251         * media.h, media.cpp: track the downloader changes.
32253 2007-07-11  Jackson Harper  <jackson@ximian.com>
32255         * collection.cpp: Comment out the namescope merging stuff for now,
32256         it causes some regressions.
32258 2007-07-12  Jackson Harper  <jackson@ximian.com>
32260         * xaml.cpp: Restart the whole attribute parsing loop when the
32261         reparse flag is set, otherwise the first attribute will be
32262         skipped.
32264 2007-07-11  Chris Toshok  <toshok@ximian.com>
32266         * uielement.cpp (UIElement::UIElement): the event names need to
32267         match those used by microsoft.  makes it easier to handle the
32268         event hooking up in the plugin, where the event names are used.
32270 2007-07-11  Chris Toshok  <toshok@ximian.com>
32272         * xaml.cpp (xaml_set_property_from_str): the plugin does its own
32273         resolution of properties now, so it doesn't need to pass the
32274         property name.  Change this to take the DependencyProperty*
32275         instead.
32277         * xaml.h: change prototype for xaml_set_property_from_str.
32279 2007-07-11  Jackson Harper  <jackson@ximian.com>
32281         * collection.cpp: When new objects are added to a collection, try
32282         to merge them into the containers namescope.
32284 2007-07-11  Jackson Harper  <jackson@ximian.com>
32286         * xaml.cpp: We need to stop parsing if there is an error while
32287         resolving a custom namespace type.
32289 2007-07-10  Chris Toshok  <toshok@ximian.com>
32291         * dependencyobject.cpp (resolve_property_path): we need to reset
32292         "expression_found" when we hit a '.' so that we'll lookup what
32293         comes after it.
32295 2007-07-10  Chris Toshok  <toshok@ximian.com>
32296         
32297         * dependencyobject.cpp (resolve_property_path): we need to be able
32298         to handle more than just single digit indexers.  use strtol and
32299         recompute 'i' afterward.
32301         * canvas.cpp (Canvas::InsideObject): revert the change that helped
32302         dr.popper because it breaks lunareclipse.
32304 2007-07-09  Chris Toshok  <toshok@ximian.com>
32306         * demo.cpp: don't pass the parser callbacks to the individual xaml
32307         functions.
32309         * control.h, control.cpp: don't pass the parser callbacks to
32310         initialize_from_xaml.
32312         * xaml.h, xaml.cpp: remove the parser callbacks from the
32313         individual parsing methods, and add xaml_set_parser_callbacks.
32315 2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
32317         * mplayer.cpp (audio_loop): If we break out of the loop because
32318         the media player was stopped, don't forget to unlock the pause
32319         mutex.
32320         (Close): Don't free the uri here.
32321         (~MediaPlayer): Free it ehre, though.
32323 2007-07-09  Chris Toshok  <toshok@ximian.com>
32325         * uielement.h, uielement.cpp: we need to register the
32326         KeyUp/KeyDown events (even if we aren't emitting them) to keep
32327         from getting a warning when running aglayoutdemo.
32329         * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
32330         method (and remove all error handling, which should likely go back
32331         in) and replace the previous implementation.  It was failing to
32332         parse timespans like this: 0:0:0.20000000 because it was treating
32333         it as if I wanted "20000000" tenths of a second, instead of 2.
32334         This makes the 'pop' animation in dr.popper actually show up.
32335         
32336 2007-07-09  Chris Toshok  <toshok@ximian.com>
32338         * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
32339         calls.
32340         (Storyboard::Begin): This is a dubious change.  Remove the check
32341         to see if we weren't already Active.  This fixes the calendar view
32342         in airlines, since there's a window where the start animation is
32343         startable when we enter a day, but the end animation isn't (since
32344         it's still active) when we leave.  So we're left with a selected
32345         day.
32347         * clock.cpp: instead of Stopping clocks that come to the end of
32348         their active period, move to the Filling state.  ClockGroups with
32349         automatic duration and no Active children still stop correctly.
32351 2007-07-08  Chris Toshok  <toshok@ximian.com>
32353         * many-files (again!): another, smaller change to the event stuff.
32354         stop using strings for everything that we can.  Register events at
32355         object construction time, and use those id's for everything else.
32356         The string interface is still around because of
32357         EventTrigger::Set/RemoveTarget, as well as the managed code.
32359         One further change that's needed - the id's are per-instance now,
32360         which is stupid.  they should be static.
32362         This further cuts down the work (in terms of hash functions) that
32363         needs to be performed in order to dispatch an event.
32364         
32365 2007-07-08  Chris Toshok  <toshok@ximian.com>
32367         * many-files: fairly big change.  Stick the EventObject class
32368         between Base and DependencyObject in the hierarchy, and get rid of
32369         DependencyObject's "events" field.  Get rid of all the registered
32370         events on surface, and emit them directly from the elements where
32371         they occur.  This allows us to remove the Surface* parameter to
32372         all the event methods.  Also, change the EventHandler signature to
32373         include the sender of the event as well as a "calldata" pointer,
32374         which is where we stuff the unmanaged MouseEventArgs (and later
32375         will the KeyboardEventArgs).
32377         Next step is to add RegisterEvent in EventObject and use that
32378         integer id everywhere instead of the string name when we Emit
32379         events.
32381 2007-07-07  Chris Toshok  <toshok@ximian.com>
32383         * dependencyobject.h: add GetName() instance method.
32385         * dependencyobject.cpp (dependency_object_get_name): and call it
32386         here.
32388         * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
32389         implementation here since FrameworkElement just goes by
32390         Width/Height.
32392         * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
32393         same element" optimization.  it's stupid and doesn't work. what
32394         was i thinking?
32395         (Canvas::ComputeBounds): simplify this by using
32396         item->GetLayoutVisible instead of item->GetValue.
32397         (Canvas::Render): enable the rendering optimization where we only
32398         bother rendering elements whose bounds intersect those of the
32399         rectangle we're repainting.  This seriously speeds up airlines.
32401         * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
32402         another flag.  now the three VisibilityProperty states are
32403         represented by two flags.
32405         Also, remove the implementation of GetSizeForBrush (not all
32406         UIElements are stroked) and warn callers.
32408         * control.cpp: Attach to the real object, and report back its
32409         property changes to our parents.  Also, control_initialize_from_xaml
32410         should call Control::InitializeFromXaml.
32412         * control.h: override the 3 Get*Visible methods from UIElement,
32413         and return our real_object's state.
32415         
32417 2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
32419         * demo.cpp (FileDownloadState::Send): Only notify complete if uri
32420         != NULL (if uri is NULL, then it means it couldn't be opened).
32421         (FileDownloadState::Open): notify error if we can't open the file.
32423         * mplayer.cpp: Fix to make sure we have
32424         AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
32425         before calling decode to prevent an ffmpeg warning.
32427 2007-07-07  Chris Toshok  <toshok@ximian.com>
32429         * brush.cpp: make sure to use GetSizeForBrush for everything
32430         instead of cairo_stroke_extents, which won't work for non-stroked
32431         elements like canvases.  Also, notify changes to the
32432         GradientStopCollection up the hierarchy properly.
32434         * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
32435         implementation for FrameworkElement so Canvases (and other
32436         uielement subclasses) can have brushes assigned to them (canvas
32437         uses it for its background.)
32439         * canvas.cpp (Canvas::Render): remove the unused label.
32441 2007-07-06  Miguel de Icaza  <miguel@novell.com>
32443         * media.cpp: Do not pass the filename as the result now on the
32444         calls.   Code must use the downloader_get_response_text or
32445         downloader_get_response_file to get the contents from the download
32446         (as the request will include the part name).
32448         * downloader.cpp: Add a cache for zip file parts.
32450         * media.h (Image): track the part name that was requested on the
32451         call to SetSource.
32453 2007-07-06  Chris Toshok  <toshok@ximian.com>
32455         * canvas.cpp (Canvas::ComputeBounds): if the width/height
32456         framework element properties haven't been set (their default is
32457         0.0), then don't union it with the rest of our bounds.
32459 2007-07-06  Chris Toshok  <toshok@ximian.com>
32461         * runtime.h, runtime.cpp: continue the marginalization of
32462         Surface-as-general-data-dumping-ground by passing the cairo
32463         context to all the event handlers that need it (all but Leave, but
32464         should we make this distinction?).
32465         
32466         Make tons of stuff private that doesn't need exposing.  Add
32467         accessors for the easier things, and leave the callbacks public
32468         for now.  Also clean up the partially C/partially c++
32469         implementation in runtime.cpp.  Now the C api is a thin wrapper
32470         around instance method calls, and all the gtk/clock event
32471         callbacks are static methods so they can still access the private
32472         data.
32474         * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
32475         uielement.cpp: fallout from the event signature changes - add
32476         cairo_t* to a lot of places, basically.
32478         * demo.cpp: no need to use the C api for Surface here.  just use
32479         the c++ one.
32481 2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
32483         * media.cpp (OnPropertyChanged): Oops, be consistant with other
32484         implementations - only chain up if it wasn't a property owned by
32485         us.
32487         * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
32488         to save object size.
32490         * media.cpp (OnPropertyChanged): Fixed to always notify property
32491         listeners and chain up to our parent impl.
32493 2007-07-06  Miguel de Icaza  <miguel@novell.com>
32495         * downloader.cpp: Implement the zip file support for the
32496         downloader using miniZip, from:
32498                 http://www.winimage.com/zLibDll/minizip.html
32500         The implementation is in C++, so there are no needs to delegate
32501         this to the managed side as previously planned. 
32503         There are two APIs: one returns a filename, the other returns the
32504         file loaded into memory, with the size of the memory blob.
32506 2007-07-06  Chris Toshok  <toshok@ximian.com>
32508         * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
32509         track of the visibility (boolean, not three-state) and hit test
32510         visibility state in our flags.  implement GetVisible() and
32511         GetHitTestVisible() using the flags.
32513         * canvas.cpp (Canvas::CheckOver): use GetVisible and
32514         GetHitTestVisible to avoid property lookups when dispatching
32515         events.
32517 2007-07-06  Chris Toshok  <toshok@ximian.com>
32519         * runtime.cpp (measuring_context_create): we keep a singleton
32520         measuring context now.
32521         (measuring_context_destroy): do nothing here.  it's freed in
32522         runtime_shutdown.
32523         (runtime_shutdown): free up our measuring context.
32525         * canvas.cpp, canvas.h, control.cpp, control.h,
32526         frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
32527         text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
32528         InsideObject to take the cairo_t* instead of the Surface.
32529         
32530 2007-07-06  Chris Toshok  <toshok@ximian.com>
32532         * runtime.cpp (Surface::SetCursor): new method, used in the event
32533         code to update the cursor as we enter/leave elements.
32535         * runtime.h: add method, cursor_instance field, and move the body
32536         of the Surface ctor (and initializations) to the .cpp file.
32537         
32538         * xaml.cpp: fix name of Cursor property enum mapping.
32540         * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
32541         control.cpp: add MouseCursor* arg to HandleMotion so we can report
32542         back cursor changes on elements.
32544         Also, in canvas.cpp, implement IsHitTestVisible checking in
32545         CheckOver.
32547         * enums.h: add the MouseCursor enum.
32548         
32549 2007-07-05  Chris Toshok  <toshok@ximian.com>
32551         * Makefile.am (libmooninclude_headers): remove cutil.h
32552         (libmoon_la_SOURCES): remove cutil.cpp
32554         * cutil.h, cutil.cpp: remove.  no longer necessary.
32556         * text.cpp (TextBlock::ComputeBounds): load the identity matrix
32557         before stroke/fill_extents to work around a cairo bug that was
32558         giving us enormous bounds on rotated elements.  also, -1 from x/y
32559         and +2 to width/height of our bounds.
32561         * media.cpp (MediaElement::ComputeBounds): load the identity
32562         matrix before stroke/fill_extents to work around a cairo bug that
32563         was giving us enormous bounds on rotated elements.  also, -1 from
32564         x/y and +2 to width/height of our bounds.
32565         (Image::ComputeBounds): same.
32567         * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
32568         no stroke, we drew it, and do_op was true.
32569         (Shape::ComputeBounds): load the identity matrix before
32570         stroke/fill_extents to work around a cairo bug that was giving us
32571         enormous bounds on rotated elements.  also, -1 from x/y and +2 to
32572         width/height of our bounds.
32574         * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
32575         subproperty changes on RenderTransformOrigin, since it's a point
32576         and not a dependency object.
32578 2007-07-05  Chris Toshok  <toshok@ximian.com>
32580         * runtime.cpp, runtime.h: store the last mouse position of events
32581         so that we can continue to update after the clock tick (and
32582         provide motion/enter/leave events to elements that might have
32583         moved under the pointer).
32585         The "update-input" event isn't presently emitted (see clock.cpp)
32586         because it results in this code calling HandleMotion on every
32587         tick, which ends up emitting the C# event (which is wrong).
32589         * clock.h, clock.cpp: add a (presently unused) phase to the clock
32590         tick to update the current mouse over after we've updated our
32591         clocks (and therefore possibly updated the transforms on
32592         elements).
32594 2007-07-05  Chris Toshok  <toshok@ximian.com>
32596         * dependencyobject.cpp (dependency_object_get_name): change this
32597         to return the x:Name value if there is one (and "(null)" if not).
32598         (dependency_object_get_type_name): and make this function do the
32599         job originally done by _get_name.
32601         * dependencyobject.h: add dependency_object_get_type_name
32602         prototype.
32604 2007-07-05  Chris Toshok  <toshok@ximian.com>
32606         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
32607         mouse event code so that the Handle* calls return void, like the
32608         Enter/Leave calls do.  Also, all checks for "inside"-ness happen
32609         in the canvas/parent object.  Also factored out the loop over
32610         children to "FindMouseOver", with the checks happening in
32611         "CheckOver".
32613         This needs more testing to make sure that we're still emitting
32614         events in the right order/amount as silverlight.
32616         In uielement.cpp, also add support for showing the bounding
32617         rectangle.
32619         * control.h, control.cpp: track event refactoring.
32621         * frameworkelement.cpp (FrameworkElement::InsideObject): remove
32622         the bounding rect check.  that's handled in the parent object now.
32624 2007-07-04  Chris Toshok  <toshok@ximian.com>
32626         * media.cpp, media.h: rework our caching for images.  we now
32627         properly refcount things, don't leak the filename (or the
32628         surface), share 1 xlib surface amongst all Image's, and don't
32629         crash.  improvements all around!
32631 2007-07-04  Miguel de Icaza  <miguel@novell.com>
32633         * value.cpp (Value): Add a couple of extra cases I had missed
32634         where we should be using g_new instead of new as FreeValue always
32635         uses g_free.
32637 2007-07-03  Jackson Harper  <jackson@ximian.com>
32639         * xaml.cpp: Add the stylus types and some missing collections,
32640         this brings us up to sync with everything implemented in
32641         moonlight.
32643 2007-07-03  Chris Toshok  <toshok@ximian.com>
32645         * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
32646         filled), we need to call cairo_new_path.
32648 2007-07-03  Jackson Harper  <jackson@ximian.com>
32650         * xaml.cpp: Some post parsing memory cleanup and a little extra
32651         debug code.
32653 2007-07-03  Chris Toshok  <toshok@ximian.com>
32655         * text.h: add prototype for text_block_set_font_source.
32657 2007-07-03  Chris Toshok  <toshok@ximian.com>
32659         * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
32660         brush property changes.  Property chain up to
32661         Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
32662         (Shape::ComputeBounds): we need to do the fill, so pass true as
32663         consider_fill to DoDraw.  otherwise a stroke-less filled shape
32664         gets bounds with w == h == 0.0.
32666 2007-07-03  Chris Toshok  <toshok@ximian.com>
32668         * collection.cpp (VisualCollection::Clear): force the invalidate
32669         when we update our bounds.  Also, don't do anything if the length
32670         of the collection is 0.
32672 2007-07-03  Chris Toshok  <toshok@ximian.com>
32674         * canvas.cpp (Canvas::ComputeBounds): we need to always include
32675         our FrameworkElement::Width/Height in our bounds computation,
32676         instead of only consulting them if we have no children.
32678 2007-07-03  Chris Toshok  <toshok@ximian.com>
32680         * media.cpp, media.h: add an image surface cache.  we don't cache
32681         the xlib surface unfortunately, so there's still a slowdown from
32682         generating 1 per Image for shared pixbufs.
32683         
32684 2007-07-03  Miguel de Icaza  <miguel@novell.com>
32686         * collection.cpp: Add support for reporting errors if the iterator
32687         gets out of sync with the collection.
32689         * demo.cpp: Updated to the new downloader interface.
32691         * downloader.cpp: Eliminates the in-memory buffer during
32692         download. 
32694         We still do the progressive updates as those are necessary for the
32695         progress indicators, and if we ever need to hook up during
32696         progressive downloads again.   
32698         But now downloads on completion must notify the downloader of the
32699         local file where the download contents have been placed (necesary
32700         for implementing the Zip-file support).
32702         (Downloader): eliminate our in-memory buffer byte_array_contents 
32704         (downloader_notify): takes a new extra argument, overloaded
32705         depended on the operation.
32706         
32707         (get_response_text): currently not implemented, it needs to be
32708         implemented by a callback into managed code so we can use ZipLib
32709         (unless we can find a suitable unmanaged version).
32711         * media.cpp: Remove the stale code for progressive image
32712         downloads. 
32713 2007-07-02  Miguel de Icaza  <miguel@novell.com>
32715         * media.cpp (SetSource): If we had a previous downloader, unref
32716         it.  
32718 2007-07-02  Chris Toshok  <toshok@ximian.com>
32720         * collection.cpp (VisualCollection::Remove): punt on the optimized
32721         behavior for now.  invalidating just the item should work if the
32722         item's bounds are correct, but for some reason the map path
32723         segments in the airline demo aren't redrawing properly.  So, for
32724         now we just invalidate the parent container when an item is
32725         removed.
32727         * control.h, control.cpp: override GetValue to report back values
32728         from our real_object if there is one, from us otherwise.  and
32729         override SetValue to set values both on us and the real_object if
32730         there is one.
32732         Also, do nothing in our ComputeBounds call.  Our GetBounds always
32733         returns the right thing (the bounds of the real_object), so
32734         there's no need to do any computation.
32736         lastly, remove the OnChildPropertyChanged. This is only invoked
32737         for attached properties, so we shouldn't ever be called.
32739 2007-07-02  Chris Toshok  <toshok@ximian.com>
32741         * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
32742         updatebounds/invalidate here.  UpdateTransform will take care of
32743         that for us.
32745 2007-07-02  Chris Toshok  <toshok@ximian.com>
32747         * shape.cpp (Shape::OnPropertyChanged): turns out we need to
32748         update our bounds on the FillProperty changing as well, for shapes
32749         that aren't stroked.
32751 2007-07-02  Miguel de Icaza  <miguel@ximian.com>
32753         * collection.cpp: Guard for cases where we are not attached to
32754         anything (closure is set to NULL).
32756 2007-07-02  Chris Toshok  <toshok@ximian.com>
32758         * collection.cpp (collection_iterator_move_next): rework the logic
32759         here so we don't do the "current = next" assignment if
32760         iterator->first is true.
32761         (VisualCollection::Add): fix g++ warning.
32762         (TriggerCollection::SetVal): return the old element.
32764 2007-07-02  Jackson Harper  <jackson@ximian.com>
32766         * xaml.cpp: Convert char data into Runs and set them on
32767         TextBlocks, also flush the char data when starting elements, so
32768         things like: <TextBlock>line one<LineBreak />line two</TextBlock>
32769         work properly. <TextBlock><TextBlock.Inlines>text... is illegal
32770         though.
32772 2007-07-02  Miguel de Icaza  <miguel@novell.com>
32774         * value.cpp: Use g_malloc/g_free as the managed code is not able
32775         to use C++ new operator, so we have a potential error when we
32776         mismatch g_new with new and g_free with delete. 
32778         Reported by Valgrind.
32780         * uielement.cpp: Add new helper method needed by Alan.
32782 2007-07-01  Chris Toshok  <toshok@ximian.com>
32784         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32785         notify attachees here.
32787         * text.cpp (TextBlock::OnPropertyChanged): need to notify on
32788         Actual Width/Height property changes, even if we don't recalc
32789         anything.
32791 2007-07-01  Chris Toshok  <toshok@ximian.com>
32793         * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
32794         guidelines here.  need to chain up to FrameworkElement.  fixes
32795         airline demo.
32797 2007-07-01  Chris Toshok  <toshok@ximian.com>
32799         * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
32800         (Polygon::OnPropertyChanged): same.
32801         (Path::OnPropertyChanged): same.
32802         (Shape::OnPropertyChanged): same.
32803         (Rectangle::OnPropertyChanged): same.
32805         * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
32806         pattern.
32807         (PathGeometry::OnPropertyChanged): same.
32808         (PathFigure::OnPropertyChanged): same.
32810         * brush.cpp (Brush::OnPropertyChanged): use the recommended
32811         pattern.
32812         (SolidColorBrush::OnPropertyChanged): same.
32813         (GradientBrush::OnPropertyChanged): same.
32814         (LinearGradientBrush::OnPropertyChanged): same.
32815         (RadialGradientBrush::OnPropertyChanged): new method.
32818         * brush.h: add RadialGradientBrush::OnPropertyChanged.
32820         * animation.cpp (animation_init): mark the storyboard TargetName
32821         and TargetProperty properties as attached.
32823         * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
32824         for chaining.
32825         (Run::OnPropertyChanged): same.
32826         (Inline::OnSubPropertyChanged): add to handle the inline's
32827         foreground brush changing.
32829         * text.h: add Inline::OnSubPropertyChanged.
32831         * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
32832         background brush, and invalidate whenever it changes.
32834 2007-06-30  Chris Toshok  <toshok@ximian.com>
32836         * shape.cpp (Shape::OnPropertyChanged): when need to update our
32837         bounding rectangle when a number of the stroke properties change.
32838         Also update them when the stroke itself is changed.
32840 2007-06-29  Chris Toshok  <toshok@ximian.com>
32842         * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
32843         we need it for the foreground property.  Make this explicit.
32844         also, add an OnSubPropertyChanged method for Glyphs, to handle the
32845         FillProperty.
32847 2007-06-29  Chris Toshok  <toshok@ximian.com>
32849         * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
32850         that invalidate if the flag is true.
32852 2007-06-29  Chris Toshok  <toshok@ximian.com>
32854         * text.cpp: Do CalcActualWidtHeight on any property that might
32855         cause a change.  This is going to be a performance hit, but we
32856         need to take this step backward to get things working with the new
32857         ComputeBounds stuff.  we'll need to reoptimize this so that it
32858         still works.  Make sure to listen to OnCollectionChanged so we'll
32859         update our bounds (and recompute our actual width/height) on
32860         Inlines collection changes.
32862         * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
32863         OnCollectionChanged.
32864         
32865 2007-06-29  Chris Toshok  <toshok@ximian.com>
32867         * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
32868         can actually read it, and notify attachees of our property
32869         changes.  this makes ZIndex setting resort the parent panels list.
32871         * uielement.h: add an arg to UpdateBounds (a bool that defaults to
32872         false) to force an invalidation of the new bounds.
32874 2007-06-29  Chris Toshok  <toshok@ximian.com>
32876         * panel.h, panel.cpp: okay, i'm stupid.  it's not
32877         OnChildPropertyChanged either.  it's OnCollectionChanged.  we
32878         seriously need to clean this stuff up.
32880 2007-06-29  Chris Toshok  <toshok@ximian.com>
32882         * panel.h, panel.cpp: child ZIndex property changes are reflected
32883         via OnChildPropertyChanged, not OnSubPropertyChanged.
32885 2007-06-28  Chris Toshok  <toshok@ximian.com>
32887         * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
32889         * collection.cpp (VisualCollectoin::Clear): update the panel's
32890         bounds after the clear so we redraw everything.
32892 2007-06-27  Chris Toshok  <toshok@ximian.com>
32894         * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
32895         instead.  Also, rename getbounds to ComputeBounds(), and add a new
32896         GetBounds which returns the bounding rectangle.
32898         * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
32899         Simplify it a bit by using Rect's instead of the 4 doubles.  Note
32900         that the calls to item->GetBounds do *not* cause item's bounds to
32901         be computed.
32902         (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
32903         child when its Left/Top properties change.
32904         (Canvas::HandleMotion): use Rect.PointInside to clean up the
32905         check.
32906         (Canvas::HandleButton): same.
32907         (Canvas::Render): remove the local "item_rect" and just use the
32908         item's bounds.
32910         * uielement.cpp (UIElement::UpdateBounds): remember the old
32911         bounds, compute the new bounds, and (if they're different)
32912         invalidate both and chain up to the parent's UpdateBounds method.
32913         (UIElement::UIElement): init the bounds.
32914         (UIElement::OnPropertyChanged): when switch away from a lot of the
32915         FullInvalidate calls.  If the clip or OpacityMask is changed, just
32916         Invalidate.  If the RenderTransform or RenderTransformOrigin is
32917         changed, called UpdateTransform.
32918         (UIElement::UpdateTransform): all UpdateBounds, since it's
32919         uncommon that our transform will change without our bounds
32920         changing..
32921         (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
32922         but again switch away from FullInvalidate to other more targeted
32923         methods.  If the transform properties change, call
32924         UpdateTransform, for clip and OpacityMask just call Invalidate.
32925         (UIElement::Invalidate): add a Rect taking one that just
32926         invalidates the rect, and make the default variety call it with
32927         bounds as the arg.
32928         (UIElement::ComputeBounds): rename GetBounds().
32930         * shape.cpp (ComputeBounds): don't use GetSurface.  use a
32931         measuring cairo context.
32932         (Shape::OnPropertyChanged): if the Stretch property changed,
32933         UpdateBounds.  also, change from FullInvalidate to just Invalidate
32934         for everything.  Remove the UpdateTransform call as that gets
32935         handled by UIElement::OnPropetyChanged.
32936         (Rectangle::OnPropertyChanged): we only need to invalidate on a
32937         property change.
32938         (Polygon::OnPropertyChanged): if the Points property changes we
32939         need to UpdateBounds and force an Invalidate.  otherwise, just
32940         Invalidate.  no need for FullInvalidate always.
32941         (Polygon::OnCollectionChanged): new method.
32942         UpdateBounds+Invalidate to catch changes to the points collection.
32943         (Polyline::OnPropertyChanged): analogous changes as were made to
32944         Polygon::OnPropertyChanged.
32945         (Polyline::OnCollectionChanged): same as
32946         Polygon::OnCollectionChanged.
32948         * text.cpp (TextBlock::TextBlock): move the SetValue call to the
32949         end, past all the initialization of things that might be needed in
32950         ComputeBounds, which gets called.
32951         (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
32952         cairo context.
32953         (TextBlock::CalcActualWidthHeight): use a measuring context here.
32954         (TextBlock::OnPropertyChanged): remove unnecessary call to
32955         FrameworkElement::OnPropertyChanged from the end of the method.
32956         (Glyphs::ComputeBounds): return Rect (0,0,0,0).
32958         * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
32959         use a measuring context.
32960         (Image::ComputeBounds): same.
32961         (OnPropertyChanged): just Invalidate here, no need for
32962         FullInvalidate.
32963         (DownloaderEvent): just Invalidate here, not FullInvalidate.
32965         * frameworkelement.cpp (FrameworkElement::InsideObject): use
32966         Rect.PointInside.
32968         * control.cpp (Control::GetBounds): use a Rect here.
32969         (Control::ComputeBounds): forward on to the real_object.
32971         * collection.cpp (VisualCollection::VisualUpdate): when adding an
32972         element, we need to force its invalidation, but not the parent's.
32973         we just update the parent's bounds and UpdateBounds will do the
32974         invalidating if it needs to.
32976         * runtime.cpp (surface_attach): we don't need to do a full
32977         invalidate.  just update the bounds of the toplevel (which sets
32978         the width and height to the widget's) and force an invalidate
32979         (just in case the user set the width/height to exactly the same
32980         thing before attaching).
32981         (surface_size_allocate): same thing here - no need for
32982         FullInvalidate.  Just update the bounds.
32983         (measuring_context_create): create a tiny surface and a cairo_t
32984         for use in measuring things.
32985         (measuring_context_destroy): destroy the surface and cairo_t.
32987         * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
32988         ComputeBounds.
32989         
32990 2007-06-28  Miguel de Icaza  <miguel@novell.com>
32992         * runtime.cpp (expose_event_callback): Introduce a new
32993         "transparent" field in the Surface.   If set, we clear the
32994         region with a transparent region.
32996 2007-06-27  Miguel de Icaza  <miguel@novell.com>
32998         * runtime.cpp: Event handlers will work with or without GdkWindows
32999         on the GtkWindows in preparation to support Larry later.
33001         Paint the surface with alpha transparency for now, this breaks the
33002         F-Spot embedding but will be fixed later when we can paint at an
33003         offset, wonder if this will affect performance for now.
33005         Call gtk_event_box_set_visible_window () with TRUE, so that we
33006         have a window, for now we require this to get the events working
33007         properly. 
33008         
33009         * canvas.cpp: Drop the translate transform on the topmost canvas
33010         as that was breaking all the code that depended on the inverse
33011         matrix transform to work for doing coordinate mapping based on the
33012         absolute_xform. 
33014         Instead we need to draw the cairo context at the given offset
33015         in the repaint routine.  This is left as an excercise for Larry. 
33017         Tests to validate that the mouse input is working:
33019                 * test/demo.exe: enter/leave
33020                 * surface demo
33021                 * silverlight airlines
33022                 * LunarEclipse designer.
33023         
33024         * value.cpp (FreeValue): New method that does the actual releasing
33025         of the value.   We do this here so the managed code can release
33026         things in the same way.
33028         (value_free_value): helper method.
33030 2007-06-27  Chris Toshok  <toshok@ximian.com>
33032         * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
33033         calls to RaiseAccumulatedEvents.
33035 2007-06-27  Chris Toshok  <toshok@ximian.com>
33037         * clock.cpp (get_now): turns out we really do want this extra *10
33038         in there, so that it matches up with mono's TimeSpan.Tick values.
33040 2007-06-27  Chris Toshok  <toshok@ximian.com>
33042         * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
33043         take part in bounds computation.
33044         (Canvas::HandleButton): !Visible elements don't take part in hit
33045         testing.
33046         (Canvas::HandleMotion): same here.
33048 2007-06-27  Jackson Harper  <jackson@ximian.com>
33050         * xaml.cpp: Use Type to lookup the property owner, because it
33051         might be a "ghost" type that the xaml parser can't lookup.
33053 2007-06-27  Miguel de Icaza  <miguel@novell.com>
33055         * control.cpp: When handling events, we also need to pass the
33056         event notification to the control, not only to the "real_object"
33057         that we are proxying for.   This is what cause the calendar to
33058         malfunction. 
33060         * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
33061         the canvas, instead use the point at (0,0) and the width, height
33062         with its absolute transformation.
33064         Otherwise canvases with children would end up with
33065         (0,0,0,0) and when compounded would extend the bounding box of
33066         containing ones to include this region even when not needed.
33068 2007-06-26  Chris Toshok  <toshok@ximian.com>
33070         * uielement.h: add virtual GetSurface() method.
33072         * uielement.cpp: implement UIElement::GetSurface to just chain up
33073         to the parent element if we have one, and return NULL otherwise.
33074         Also, make item_get_surface call this method.  removes the
33075         dependency on canvas.h from this file.
33077         * canvas.h: we override UIElement::GetSurface ()
33079         * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
33080         return our surface.  otherwise call our base class's GetSurface.
33082         * media.h: rename Image::GetSurface here to GetCairoSurface to
33083         avoid name collision.
33085         * brush.cpp, media.cpp: track media.h change.
33087 2007-06-26  Miguel de Icaza  <miguel@novell.com>
33089         * collection.h: Change of course.   The actual public interface
33090         implements IList<T> and ICollection<T> not IList nor ICollection
33091         which means that Add does not need to return an index, and Remove
33092         must return whether it actually removed the object.
33093         
33094         * collection.h (Add): Make this method return the index of the
33095         object just created, so we can implement int IList.Add(...).
33097         Removed all the empty Add/Remove methods from collections that
33098         were not doing anything interesting with them, the remaining
33099         chunks of old hacks.
33100         
33101         * (SetVal): This method is used to replace a value at a given
33102         index with another one.   For the C# IList.this [int] indexer.
33104 2007-06-26  Chris Toshok  <toshok@ximian.com>
33106         * clock.cpp: make a copy of the child clocks lists before
33107         traversing them calling callbacks that could result in the lists
33108         being modified.
33110 2007-06-26  Chris Toshok  <toshok@ximian.com>
33112         * dependencyobject.h: add OnCollectionChanged to allow
33113         propertychange notifications from elements in collections to
33114         bubble up to their parent.
33116         * collection.h: make the closure a DependencyObject*, just to be
33117         explicit.  also, add OnSubPropertyChanged to Collection so we can
33118         generate OnCollectionChanged notifications.
33120         * collection.cpp: hook things up on elements in collections, and
33121         generate proper notifications from the collection to its closure.
33123         * enums.h: add CollectionChangeType for use in
33124         OnCollectionChanged.
33126         * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
33127         collection notification stuff to bubble changes up the hierarchy.
33128         
33129 2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
33131         * list.cpp (Replace): Added.
33133         * dependencyobject.cpp (dependency_object_get_value_no_default):
33134         New binding function.
33135         (dependency_object_get_object_type): Renamed from get_kind() which
33136         didn't mirror the native API at all.
33138 2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
33140         * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
33141         * shape.cpp: Remove debugging output.
33143 2007-06-26  Chris Toshok  <toshok@ximian.com>
33145         * uielement.h: change render/dorender to take a cairo_t* instead
33146         of a Surface*.
33148         * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
33149         uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
33150         media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
33151         above change.
33152         
33153 2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
33155         * brush.cpp (LinearGradientBrush::SetupBrush): Use
33156         uielement->get_size_for_brush() because the framework width/height
33157         might be 0.
33159         * text.cpp: Implement text wrapping and clipping to Width/Height
33160         bounds if specified.
33162 2007-06-25  Miguel de Icaza  <miguel@novell.com>
33164         * runtime.cpp: Cope with the fact that we are now windowless and
33165         we will be sharing the parent's window.   Fixes mouse events.
33167         * collection.cpp (collection_get_value_at, collection_count): Add
33168         new methods.
33170 2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
33172         Mango-licious.
33174         * text.cpp: Rewritten to use the new MangoRenderer and
33175         MangoAttrForeground classes.
33177         * mango.cpp: New source file implementing a PangoRenderer and
33178         providing a new PangoAttribute for brushes.
33180 2007-06-25  Chris Toshok  <toshok@ximian.com>
33182         * runtime.h: add decl for Panel::OnSubPropertyChanged.
33184         * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
33185         zIndex by invalidating the item's rectangle.
33186         (UIElement::OnSubPropertyChanged): add braces around all the if
33187         blocks for consistency.
33188         (Panel::OnSubPropertyChanged): if a child changes its z index we
33189         need to resort our visual collection.
33190         (Canvas::render): loop over the z sorted list of children instead
33191         of the default collection list.
33192         (item_init): just to be anal, cast the Zindex default value to
33193         gint32.
33195 x2007-06-25  Chris Toshok  <toshok@ximian.com>
33197         * collection.cpp: keep a z-sorted list in VisualCollection,
33198         adding/removing elements from it when needed, and clearing it when
33199         the collection is cleared.
33201         * collection.h: add a virtual clear method so VisualCollection can
33202         override it.  Also, add a z_sorted_list member to
33203         VisualCollection, so we can deal with the ZIndices of children.
33205 2007-06-24  Alan McGovern  <amcgovern@novell.com>
33207         * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
33209 2007-06-24  Larry Ewing  <lewing@novell.com>
33211         * runtime.cpp: rework size allocation and make toplevel Canvas
33212         items read the allocation->x and allocation->y offsets from the
33213         surface widget when computing their position.
33215 2007-06-24  Chris Toshok  <toshok@ximian.com>
33217         * Makefile.am (libmooninclude_HEADERS): add collection.h
33218         (libmoon_la_SOURCES): add collection.cpp
33220         * collection.h, collection.cpp: new files.  split out Collection
33221         and all the collection-related code from runtime.h/runtime.cpp.
33222         arguably the collections specific to certain elements should exist
33223         completely in those .cpp/.h files, instead of here.
33225         * runtime.h, runtime.cpp: remove collection stuff.
33227         * clock.h, animation.h, transform.h: #include collection.h
33229         * value.h, value.h.in: #include <string.h> here so we can stop
33230         requiring it for everyone else.  really, though we should be using
33231         g_strcmp or something that's already pulled in from glib.
33232         
33233 2007-06-24  Chris Toshok  <toshok@ximian.com>
33235         * Makefile.am (libmoon_la_SOURCES): add array.cpp
33236         (libmooninclude_HEADERS): add array.h
33238         * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
33240         * array.h, array.cpp: new files, split them out from
33241         runtime.h/.cpp.
33243 2007-06-24  Chris Toshok  <toshok@ximian.com>
33245         * Makefile.am (libmooninclude_HEADERS): add xaml.h
33247         * xaml.h: split this out from...
33249         * runtime.h: ... here.
33251         * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
33252         
33253 2007-06-24  Chris Toshok  <toshok@ximian.com>
33255         * Makefile.am (libmooninclude_HEADERS): add control.h
33257         * control.h: split out class Control stuff...
33259         * runtime.h: .. from here.
33261         * runtime.cpp: #include control.h
33263         * control.cpp: same.
33265 2007-06-24  Chris Toshok  <toshok@ximian.com>
33267         * runtime.h: add OnLoaded methods to UIElement, Panel, and
33268         Control.
33270         * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
33271         haven't already.
33272         (VisualCollection::Add): only invoke OnLoaded on the item if the
33273         closure (the parent of the collection) has been loaded.
33274         (VisualCollection::Insert): same.
33275         (Panel::OnLoaded): call OnLoaded on all our children, then chain
33276         up.
33277         (surface_attach): call canvas->OnLoaded instead of
33278         emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
33279         flag - just use the type system.
33280         (item_get_surface): get rid of the IS_CANVAS flag and just use the
33281         type system.
33283         * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
33284         the real object before chaining up.
33286 2007-06-24  Larry Ewing  <lewing@novell.com>
33288         * runtime.cpp: disable transparent surfaces while fixing the
33289         drawing offset problem.
33291 2007-06-24  Larry Ewing  <lewing@novell.com>
33293         * brush.cpp: use cairo_create_similar rather than using an image
33294         brush.
33296 2007-06-24  Chris Toshok  <toshok@ximian.com>
33298         * runtime.cpp (VisualCollection::Add): only emit Loaded if the
33299         tree we're adding it to has already been loaded.
33301 2007-06-24  Larry Ewing  <lewing@novell.com>
33303         * demo.cpp: add -trans flag to demo to make the toplevel transparent.
33305 2007-06-24  Larry Ewing  <lewing@novell.com>
33307         * runtime.cpp: add comments to the new gtk functions.
33309         * runtime.h: expose surface_paint.
33311 2007-06-23  Miguel de Icaza  <miguel@novell.com>
33313         * runtime.cpp: Since unrealize does not seem to be called when our
33314         widget is destroyed by Mozilla, we need to cleanup on destroy the
33315         tick event.   This takes care of one of the plugin crashers.
33317         There are still others that I have to find out, I added some
33318         debugging prints for now.
33320 2007-06-24  Larry Ewing  <lewing@novell.com>
33322         * runtime.cpp: derive from EventBox not drawing area so that we
33323         can use it as a quick method of switching back and forth between
33324         transparent and not.  Add a method to let external code paint to a
33325         cairo context.
33327 2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
33329         * text.cpp (SetValue): Overridden to enforce Text strings not
33330         preserving any leading nor trailing whitespace (as defined in the
33331         Silverlight docs).
33333 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
33335         * xaml.cpp (matrix_value_from_str): use delete[] to free the array
33336         of doubles instead of g_free() as it was allocated with new, not
33337         g_malloc().
33339         * text.cpp (Layout): D'oh, make sure to always init text/block
33340         width/height values. This fixes VideoBrush again.
33342 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
33344         * mplayer.cpp: Initialize 'opened' state variable.
33346         * text.cpp (GetValue): Override DependencyObject::GetValue() so
33347         that we can special-case getting TextBlock::Actual[Width,Height]
33348         properties (this allows us to prolong re-calculating these values
33349         until after the user has set the values he's going to set -
33350         re-calculating on ever property change is too expensive.
33352         * runtime.h: Make DependencyObject::GetValue() virtual.
33354 2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
33356         * text.cpp: Stubbed out the required virtual methods for Glyphs
33357         and attempted to make ActualWidth and ActualHeight calculated
33358         immediately in an attempt to get DrPopper working better.
33360 2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
33362         * shape.cpp: Small hack to avoid calling Draw 2 times during render.
33364 2007-06-22  Chris Toshok  <toshok@ximian.com>
33366         * xaml.cpp (key_spline_from_str): free up the point arrays from
33367         point_array_from_str after we use them.
33368         (xaml_set_property_from_str): same.
33370 2007-06-22  Chris Toshok  <toshok@ximian.com>
33372         * value.cpp (Value): the copy ctor is definitely corrupting memory
33373         in the MATRIX case - we need to allocate the destination matrix.
33375 2007-06-21  Chris Toshok  <toshok@ximian.com>
33377         * Makefile.am: not that anyone should be installing this yet,
33378         install the headers to $(includedir)/libmoon.
33380 2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
33382         * text.cpp: Reworked text layout/rendering logic - we now cache
33383         width/height info for each text string as well as the overall
33384         block width/height. This info is then used to align text strings
33385         on each line along the bottom edge (rather than along the top
33386         edge) of the line of text.
33388         * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
33390 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33392         * stylus.h|cpp: Add InkPresenter.
33393         * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
33394         * value.h, type.h|cpp: Updated.
33396 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33398         * animation.cpp: Register *KeyFrame::Value properties as nullable.
33399         * clock.cpp: Register TimelineMarker properties.
33401 2007-06-21  Jackson Harper  <jackson@ximian.com>
33403         * xaml.cpp: When setting the x:Name also set the name property.
33405 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33407         * stylus.cpp|h: Added Stroke and DrawingAttributes.
33408         * runtime.h: All collections can now implement GetElementType.
33409         * value.h, type.h, type.cpp: Updated.
33410         
33411 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33413         * stylus.cpp|h: Added.
33414         * runtime.cpp|h: Define and call stylus_init.
33415         * Makefile.am: Add stylus.cpp|h.
33416         * value.h, type.h, type.cpp: Updated.
33418 2007-06-21  Jackson Harper  <jackson@ximian.com>
33420         * xaml.cpp: Add a global set of callbacks, so that all of the
33421         custom callbacks for a given parsing instance use the same
33422         methods.  This needs to be encapsulated properly, but for now is
33423         fine.
33425 2007-06-20  Chris Toshok  <toshok@ximian.com>
33427         * animation.cpp, animation.h: KeyFrameCollection overrides
33428         Collection::Clear to clear its sorted list.
33430         * runtime.cpp, runtime.h: add overrideable Collection::Clear
33431         method, and move collection_clear's body into it.
33433 2007-06-21  Jackson Harper  <jackson@ximian.com>
33435         * runtime.cpp|h: Don't return false on single element collections
33436         on the first item.
33438 2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
33440         * text.cpp: Use absolute font sizes, makes the fonts not so huge.
33442 2007-06-20  Jackson Harper  <jackson@ximian.com>
33444         * xaml.cpp: Set namecopes earlier, and make sure to copy the
33445         namescope when we recreate a class using x:Class.
33446         - When we use x:Class reparse the element's attributes, so it can
33447         hook up to events and set properties.
33448         * runtime.cpp|h: When the Name property is set, register it with
33449         the proper NameScope.
33450         
33451 2007-06-20  Chris Toshok  <toshok@ximian.com>
33453         * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
33454         only support Visible/Hidden really, and treat Collapsed as Hidden.
33456         * xaml.cpp (enum_from_str): use g_strcasecmp here.
33458 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33460         * shape.cpp|h: Implement caching of Path (this could be extended to
33461         all shapes).
33462         * geometry.cpp|h: Notify on changes.
33464 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
33466         * xaml.cpp: Don't allocate (and free) a copy of the PML before 
33467         calling geometry_from_str.
33469 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33471         * shape.cpp: Fix some Stretch modes for paths. This can get very
33472         expansive, next step is to cache the cairo_path_t* in the Path and
33473         recompute it only on changes.
33475 2007-06-20  Chris Toshok  <toshok@ximian.com>
33477         * xaml.cpp (is_valid_event_name): new function.
33478         (dependency_object_hookup_event): only allow valid events to be
33479         hooked up.
33481 2007-06-20  Jackson Harper  <jackson@ximian.com>
33483         * runtime.cpp|h: New method for finding an objects namescope.
33484         - Call an objects loaded event when it is added to a Collection
33485         - Some bits of namescope merging, these functions aren't called
33486         yet though.
33488 2007-06-20  Chris Toshok  <toshok@ximian.com>
33490         * xaml.cpp (dependency_object_hookup_event): we need more than
33491         just the Loaded event.
33493 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33495         * text.cpp (Run): Don't set default font values here... we need
33496         them to be unset if they aren't explicitly set by the user so that
33497         we can inherit font properties from our parent TextBlock.
33498         (Draw): Fixed to make Runs inherit unset font properties from the
33499         TextBlock at render-time. Also fixed to make sure we have a
33500         foreground brush to draw with... if unset, use the default brush.
33502 2007-06-20  Chris Toshok  <toshok@ximian.com>
33504         * runtime.cpp (UIElement::render): make this print the classname
33505         like UIElement::getbounds() does.
33507         * runtime.h, runtime.cpp: make control_initialize_from_xaml take
33508         the xaml parser custom element callbacks.
33510 2007-06-20  Chris Toshok  <toshok@ximian.com>
33512         * runtime.cpp (runtime_shutdown): set inited to false, since we
33513         want people to be able to call runtime_init again after this.
33515         * type.cpp.in (Type::RegisterType): allocate types if we need to.
33516         (Type::Shutdown): free types.
33518         * type.h.in (private): make the types array dynamically allocated.
33520         * type.h, type.cpp: sync
33522 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33524         * text.cpp (TextBlock): Need to actually set ActualWidth and
33525         ActualHeight values.
33527 2007-06-20  Chris Toshok  <toshok@ximian.com>
33529         * clock.cpp (Clock::Tick): if we hit our natural duration but our
33530         duration is Automatic, go to Fill mode, since we may have child
33531         clocks that started after us and need a chance to run their last
33532         tick.
33534 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33536         * runtime.cpp (collection_iterator_move_next): If we can't iterate
33537         to the next item, don't set current = NULL.
33538         (dependency_object_get_name): New function needed for the binding.
33540 2007-06-20  Larry Ewing  <lewing@novell.com>
33542         * runtime.cpp: use gdk_cairo helper functions and clip to the
33543         expose event region.
33545         * runtime.h: remove unused members.
33547         * media.cpp: use cairo_get_target rather than keeping track of
33548         pixmap.
33550 2007-06-20  Jackson Harper  <jackson@ximian.com>
33552         * xaml.cpp/runtime.h: Add one more callback, this one will hookup
33553         events to methods. So things like Loaded=CanvasLoaded will work.
33554         * demo.cpp:
33555         * control.cpp:
33556         
33557 2007-06-20  Jackson Harper  <jackson@ximian.com>
33559         * xaml.cpp: More verbose debug output with namespace lookup
33560         errors.
33561         - Map in the default namespaces if we are unable to lookup the
33562         proper namespace name.
33564 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33566         * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
33567         or the mouse moving won't work.
33569 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
33571         * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
33572         assigned, in that case we get the extents of the fill.
33574 2007-06-20  Chris Toshok  <toshok@ximian.com>
33576         * animation.cpp: um.. "oops".
33578         * xaml.cpp (xaml_init): enable the parsing of the color/point
33579         spline key frames.
33581 2007-06-20  Chris Toshok  <toshok@ximian.com>
33583         * animation.cpp: guard against division by zero in the double
33584         keyframe GetCurrentValue method.  I'll fix this method up some
33585         more and then report it to the other animation types.
33587         Also, add the Spline(Color,Point)KeyFrames.
33589         * clock.cpp, clock.h: fixes to get all this working again while
33590         still supporting the needed things from the last patch (like
33591         BeginTime.)
33593         * transform.cpp (GetTransform): i hate like hell to have to do
33594         this, but if we scale by 0.0 cairo can't invert the matrix and
33595         then everything goes belly up.  0.00002 is the smallest number I
33596         found (0.00001 doesn't work, for instance) where cairo doesn't
33597         complain about the inverse stuff.
33599         * media.cpp (media_element_set_buffering_time): we have to use the
33600         hacky Value ctor here.
33601         (media_element_set_position): and here.
33603         * runtime.cpp (emit_loaded_events): new function to walk the tree
33604         and emit loaded events.
33605         (surface_attach): call emit_loaded_events here - the docs specify
33606         that Loaded is emitted after it's associated with the host but
33607         before it's rendered.
33608         (Canvas::render): don't emit Loaded here.
33609         (runtime_init): output a nice message here if you run cairo
33610         against a verion of cairo that you shouldn't be using.
33612         * type.h, type.cpp, value.h: resync.
33614 2007-06-20  Jackson Harper  <jackson@ximian.com>
33616         * xaml.cpp: Improve the way we handle x:Class attributes failing
33617         to load.
33619 2007-06-20  Jackson Harper  <jackson@ximian.com>
33621         * xaml.cpp: Hookup attached properties in the property_from_str
33622         method.
33624 2007-06-19  Chris Toshok  <toshok@ximian.com>
33626         * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
33627         (media_element_get_position): same.
33628         (media_init): mark BufferingTime and Position as TimeSpan's.
33630 2007-06-19  Chris Toshok  <toshok@ximian.com>
33632         * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
33633         but this was necessary to get BeginTime's to be supported.  It
33634         reintroduces the "popping" in the surface demo, though, and
33635         honestly I'm unsure how we can ever guarantee that enough ticks
33636         will have occured to be sure we won't see the initial state of the
33637         surface objects.
33639         * animation.cpp: track clock api changes.
33641         * runtime.h: decl for FramworkElement::OnPropertyChanged.
33642         
33643         * runtime.cpp (EventObject::Emit): make a copy of the list before
33644         we start emitting, to keep us crashing if the list is modified
33645         while we're traversing it.
33646         (FramworkElement::OnPropertyChanged): invalidate on width/height
33647         changes.
33649         * xaml.cpp: when parsing a TIMESPAN property, use
33650         timespan_from_str.  This fixes the parsing of BeginTime
33651         attributes.
33653         * type.cpp.in: register TIMESPAN.
33655         * value.h.in: add a AsTimeSpan method, and special hacky
33656         constructor so the parser can construct a value of type TIMESPAN
33657         (which is problematic since it's typedef'ed to gint64.)  Move the
33658         TimeSpan typedef here.
33660         * value.cpp: add the impl for that hacky ctor.
33661         
33662         * type.h.in: add a TIMESPAN kind.
33664         * type.h, value.h, type.cpp: sync.
33666 2007-06-19  Jackson Harper  <jackson@ximian.com>
33668         * xaml.cpp: we need to new the points.
33670 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33672         * geometry.cpp: Add safety to ensure the number of points are 
33673         valid before iterating on them.
33675 2007-06-19  Jackson Harper  <jackson@ximian.com>
33677         * xaml.cpp: make sure to get all the points.
33678         - sneak peek at the exciting new attached property setting code.
33679         - improve error message
33680         - dont step off the end of the string when the trailing characters
33681         are white space.
33683 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
33685         * *.cpp: Updated to use the new List type.
33687         * runtime.cpp|h (Collection): Modified to use List instead of
33688         GList which made some code simpler, we get to take advantage of
33689         destructors, woo!
33691         * demo.cpp (main): Removed surface_destroy() and
33692         runtime_shutdown() out of the delete_event callback (gtk timeouts
33693         could still fire after the gtk_main_quit() call it seems).
33695 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
33697         * runtime.cpp: Enforce UIElement::ClipProperty when rendering
33698         Canvas
33700 2007-06-19  Jackson Harper  <jackson@ximian.com>
33702         * xaml.cpp: Content properties can be inherited.
33704 2007-06-19  Jackson Harper  <jackson@ximian.com>
33706         * xaml.cpp: Make sure that we have a previous figure.
33708 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33710         * geometry.cpp|h: Revert previous changes. That didn't work well
33711         with groups/collections.
33712         * shape.cpp: Path::Draw now process the path (find and susbtract
33713         origin) when Stretch requires it.
33715 2007-06-19  Jackson Harper  <jackson@ximian.com>
33717         * xaml.cpp: Set the namescope right away, so FindName will work in
33718         element constructors.
33720 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
33722         * animation.cpp: Switched to use List instead of GList.
33724 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33726         * geometry.cpp|h: Change API so the Strech value is propagated from
33727         the shape to all the geometry figures. Fixed Stretch for LineGeometry,
33728         EllipseGeometry and RectangleGeometry.
33729         * shape.cpp: Path::Draw now supply the Stretch property value to
33730         all Geometry objects drawing methods.
33732 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33734         * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
33735         the caller responsbility to do so, if required (e.g. it isn't for
33736         geometry stuff).
33738 2007-06-19  Jackson Harper  <jackson@ximian.com>
33740         * xaml.cpp: Implement all the optional points on path markup.
33742 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33744         * shape.cpp: Fix Stretch for Polyline and Polygon.
33746 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
33748         * xaml.cpp: Updated to use a real linked list implementation.. for
33749         added uberness. Also reduces memory leakage.
33751         * mplayer.cpp: Stubbed out a few more things and can now return
33752         the video duration.
33754 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33756         * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
33757         property to fill inside Rectangle and Ellipse ctors.
33759 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
33761         * runtime.cpp (Insert): Make this use SharedAdd too, which I
33762         presume was the whole point.
33764 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33766         * shape.cpp: Fix Strech support for Rectangle (it behave more like
33767         Ellipse but that shows only with non squares).
33769 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
33771         * mplayer.cpp (audio_loop): Fixed muting to advance the correct
33772         number of pts and not hang forever in a g_usleep() (gah, the timer
33773         was a huge negative value).
33775 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33777         * clock.h: Added TimelineMarker.
33778         * type.h, type.cpp, value.h: Updated.
33780 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33782         * shape.h: Fix filling for Polyline. MS supports filling polylines,
33783         even unclosed ones.
33785 2007-06-19  Chris Toshok  <toshok@ximian.com>
33787         * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
33788         s->cairo_xlib after recreating the xlib stuff.  avoids a crash
33789         when resizing surfaces.
33791 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
33793         * shape.cpp: Add Strech support for Ellipse.
33795 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
33797         * shape.cpp: Add Strech support for Rectangle (only None is different).
33798         Add comments to Line as Stretch doesn't apply for this Shape.
33800 2007-06-19  Miguel de Icaza  <miguel@novell.com>
33802         * runtime.cpp (Collection): Add new Insert method, and update all
33803         the callers that overwrote it.   We probably need to cleanup
33804         everything that is doing virtual overrides and is a no-op 
33806 2007-06-19  Chris Toshok  <toshok@ximian.com>
33808         * runtime.cpp (clear_drawing_area): this method doesn't need to
33809         clean up the xlib cairo context/surface and the pixmap.
33811         There are two possibilities:
33813         1) the drawing area has been realized, which means we have xlib
33814         surface/context + pixmap.  We're guaranteed to hit
33815         unrealized_callback before this method is called, so they will
33816         have already been freed.
33818         2) the drawing area has not been realized, which means we have no
33819         xlib surface/context + pixmap, and this method doesn't need to do
33820         anything.
33822 2007-06-19  Jackson Harper  <jackson@ximian.com>
33824         * runtime.h/shape.cpp: Fix typo.
33826 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
33828         * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
33829         implementation and if one of our properties changed, notify our
33830         attachees.
33831         (Inline::OnPropertyChanged): Same.
33832         (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
33833         (TextBlock::Draw): Use our foreground brush directly and the same
33834         for run's foreground brush.
33836 2007-06-19  Miguel de Icaza  <miguel@novell.com>
33838         * runtime.cpp: Implement collection iterators.
33840 2007-06-19  Chris Toshok  <toshok@ximian.com>
33842         * xaml.cpp (timespan_from_str): don't walk off the end of the
33843         string.
33845 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33847         * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
33849 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33851         * animation.h|cpp: Add *_key_frame_new.
33853 2007-06-19  Jackson Harper  <jackson@ximian.com>
33855         * xaml.cpp\runtime.h: Add a public function for setting
33856         properties, from strings.  Basically a copy and paste of my
33857         set_attributes code.  Eventually I should be able to merge the
33858         two, but they use different name lookup mechanisms right now.
33860 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
33862         * animation.cpp (Remove): Remove the KeyFrame from the sorted list
33863         before removing it from the collection (since it may be freed by
33864         Collection::Remove).
33866 2007-06-19  Miguel de Icaza  <miguel@novell.com>
33868         * runtime.cpp: Add support for notifying the consumer that the
33869         surface has resized.
33871         Add support for resizing objects.
33873 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
33875         * brush.cpp (~VideoBrush): We want to detach from the media
33876         element, not ourselves. Doh.
33878 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
33880         * shape.h: Update comments about which shapes needs, or not, to 
33881         provide a getxformorigin method.
33883 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33885         * media.h|cpp: Add media_base_new.
33887 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33889         * value.cpp|h|in: Inline the non-DependencyObject
33890         As* functions as well.
33892 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33893         
33894         * typegen.cs: Removed some dead code.
33895         * value.cpp.in: Deleted, not needed anymore.
33896         * runtime.cpp, value.cpp, type.cpp.in: Moved 
33897         implementation of Value and Type into their own files.
33898         * type.cpp: Updated.
33900 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33902         * type.h, type.h.in: Created, moved declaration of Type here.
33903         * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
33904         references. Move the Value::As* into the header.
33905         * typegen.cs: Updated to cope with Kind changes.
33907 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33909         * runtime.cpp|h, value.h.in: Remove current nullable code,
33910         it's easier to store an is_nullable flag in the registered
33911         property, and store NULL values in the objects hashtable.
33912         * xaml.cpp: Revert unnecessary fixes.
33913         * value.h: Updated.
33915 2007-06-19  Chris Toshok  <toshok@ximian.com>
33917         * runtime.h: get rid of the specialized surface callbacks for
33918         mouse events.  we can dispatch them directly to the UIElements.
33919         Change the EventObject signatures to permit an event/call data as
33920         well as the closure.  add the sender object for kicks while we're
33921         at it.
33923         * runtime.cpp: dispatch element events through the
33924         DependencyObject's events object.
33926         * animation.h, animation.cpp: update signatures for event
33927         handlers.
33929         * control.cpp (handle_button): track signature change.
33931         * clock.cpp: same.
33933 2007-06-18  Chris Toshok  <toshok@ximian.com>
33935         * clock.cpp (TimeManager::Tick): add a lot of timing foo.
33936         (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
33937         we switching to the stopped state and our progress is 1.0 (that
33938         is, if we've finished).
33940         * animation.h, animation.cpp (Storyboard::Begin): rather heavy
33941         handed (but bulletproof) approach to making Begin work on a
33942         storyboard that has run its course - destroy the clock hierarchy
33943         and recreate it.  Also, add a handler for the ClockGroup's
33944         "Completed" event so we can reflect that back to managed land.
33946         * runtime.h: add C functions to add/remove handlers from the
33947         EventObject inside a dep object.
33949 2007-06-18  Jackson Harper  <jackson@ximian.com>
33951         * xaml.cpp: Set text context properties from char data.  This
33952         allows you to do things like <Run>Hi I am some text</Run>.  As far
33953         as I can tell, Run is the only element that allows this.
33955 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
33957         * shape.cpp|h: Fix Line and Ellipse getxformorigin.
33959 2007-06-18  Jackson Harper  <jackson@ximian.com>
33961         * xaml.cpp: Now implement the smooth beziers correctly, much
33962         thanks to spouliot for figuring out the formula to reflect control
33963         points.
33965 2007-06-18  Chris Toshok  <toshok@ximian.com>
33967         * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
33968         what the timemanager should do on a given tick, and add some
33969         #defines/logic to calculate the gtk delay from the desired
33970         framerate.  Set the desired framerate to 20fps.
33972 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
33974         Instead of attaching to Brush::ChangedProperty, connect to NULL.
33976         * media.cpp (render): If the width/height are 0.0, then use the
33977         video's natural width/height.
33978         (OnPropertyChanged): chain up.
33980         * shape.cpp (OnPropertyChanged): Always chain up to our parent.
33982 2007-06-18  Chris Toshok  <toshok@ximian.com>
33984         * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
33985         fixes setting of nullable property values.
33987 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33989         * runtime.cpp: Store NULL again in the property hashtable,
33990         but use the lookup_extended function to detect this and return
33991         a correct NULL value instead of the default value.
33993 2007-06-18  Chris Toshok  <toshok@ximian.com>
33995         * runtime.cpp (RemoveHandler): more cleanups.
33997 2007-06-18  Chris Toshok  <toshok@ximian.com>
33999         * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
34000         bad.
34002 2007-06-18  Jackson Harper  <jackson@ximian.com>
34004         * xaml.cpp: Implement path closing and ArcSegments.
34006 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34008         * runtime.cpp (SetValue): This looks painful, now
34009         DependencyObjects are stored inside the hash but they might
34010         contain a NULL.   This seems bad.
34011         
34012         (Value): Do not delete null dependency objects.
34014         Remove this patch, and try demo.exe, enter/leave/enter, this
34015         crashes now, because the leave sets the fill to "null" and the
34016         enter then tries to access it
34018 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34020         * brush.cpp: Do proper OnPropertyChanged proagation.
34021         (ImageBrush::OnPropertyChanged): Notify using the generic
34022         Brush::ChangedProperty.
34023         (VideoBrush::OnPropertyChanged): Same.
34024         (VideoBrush::OnSubPropertyChanged): Same.
34026         * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
34027         so we can listen for change notification.
34029         * runtime.cpp (UIElement): Same.
34030         (Panel): Here too.
34032         * text.cpp (TextBlock): Same here (need to do it for Inlines too
34033         at some point).
34035         * media.cpp (media_base_new): Removed, you can't instantiate a
34036         MediaBase.
34037         (advance_frame): Optimization hack: don't invalidate if our
34038         opacity is 0.
34039         (MediaElement::render): Respect opacity and stretch properties.
34041 2007-06-18  Jackson Harper  <jackson@ximian.com>
34043         * xaml.cpp: We need to create new figures if we get a Move
34044         command.
34046 2007-06-18  Chris Toshok  <toshok@ximian.com>
34048         * demo.cpp: use TimeManager::AddTickCall for the async file
34049         loading.  This makes the image visible immediately for me, instead
34050         of requiring the animations be paused to see it.
34052         * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
34053         sorts to TimeManager.  This way we can better control when the
34054         cross thread downloader calls happen, and keep them from affecting
34055         the frame rate, and also keep them from being starved by an
34056         overzealous demo.cpp.
34058 2007-06-18  Chris Toshok  <toshok@ximian.com>
34060         * runtime.cpp (unrealized_callback): remove the render handler.
34061         (realized_callback): attach the render handler.
34062         (render_surface): a very simple render handler.  We just force gtk
34063         to process all pending updates.
34065         * clock.cpp (TimeManager::Tick): as a temporary hack, have
34066         TimeManager emit the "render" event after every animation tick.
34067         We should add tuning to this method to achieve usable framerates
34068         without killing the cpu.
34070         * clock.h: make TimeManager subclass from EventObject so we can
34071         hook up to events on it.
34073 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34075         * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
34076         called. We create a new path so the bounds, for an invisible object,
34077         will be empty.
34079 2007-06-18  Chris Toshok  <toshok@ximian.com>
34081         * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
34083 2007-06-18  Jackson Harper  <jackson@ximian.com>
34085         * xaml.cpp: Fix smooth quadratic bezier's.
34087 2007-06-18  Chris Toshok  <toshok@ximian.com>
34089         * media.cpp, media.h (Image::render): on our first rendering,
34090         convert to using an xlib surface to speed up future redraws.
34092 2007-06-18  Chris Toshok  <toshok@ximian.com>
34094         * runtime.cpp (UIElement::dorender): add this, and make everything
34095         that calls ->render call ->dorender.
34097         * control.cpp (render): call dorender on the realobject.
34099         * runtime.h: add STARTTIMER/ENDTIMER macros, and add
34100         UIElement::dorender which can be used to wrap render calls with
34101         debug info (in this case timer info.)
34103         * clock.h: add prototype for get_now().
34105         * clock.cpp (get_now): make this public, so we can use it for
34106         timers.
34108 2007-06-18  Jackson Harper  <jackson@ximian.com>
34110         * xaml.cpp: Implement Path Geometry parsing.
34112 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34114         * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
34115         MediaElement if we don't already have one.
34116         (VideoBrush::OnPropertyChanged): SourceName does not refer to a
34117         uri, instead SourceName refers to a MediaElement.
34119         * media.cpp: Implemented some more helper "setters", defaulted
34120         some more MediaElement property values to correct values, and
34121         implemented updating of both the CurrentState property and the
34122         PositionProperty.
34124         * mplayer.cpp (Position): Implemented.
34126 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34128         * media.cpp: Close the path after rendering the image.
34129         * shape.cpp: Avoid the filling operation in calls to getbounds. Also
34130         open and close a path before drawing normal (square) rectangles.
34132 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34134         * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
34135         C-style methods to access Type and DependencyProperty fields.
34136         In Type::IsSubclassOf don't take into account nullability.
34137         * animation.cpp, clock.cpp: Register nullable properties as such.
34139 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34141         * media.h|cpp: Add media_base_new.
34143 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34145         * value.h.in: Make checked_get_subclass handle null values. Include the
34146         Kind::*Null* values in the C# Kind.cs, and change their values to fit
34147         in a signed int.
34148         * value.h: Updated.
34150 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34152         * media.cpp (DownloaderEvent): If the Width/Height have not been
34153         set explicitly, provide them from the images (demo works, but it
34154         takes a while, due to the idle handler being too busy to be
34155         invoked).
34157         * runtime.cpp (Canvas::render):  Cope with rounding from floats to
34158         ints, add 2, fixes the droppings in the surface.
34160         Include some of my debugging helpers (you sprinkle
34161         draw_grid in key places to see whats going on, useful to debug the
34162         bounding boxes and visually inspect if things are right.
34163         
34164         * media.cpp (getbounds): use the framework width/height not the
34165         pixbuf image size, this shrinks the size of the bounding box.
34166         (getxformorigin): Use it here too.
34168 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34170         * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
34171         indicates if their use would be visible or not (e.g. opacity > 0.0).
34172         * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
34173         Don't Fill or Stroke if the brush is invisible (opacity == 0).
34175 2007-06-18  Marek Habersack  <grendello@gmail.com>
34177         * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
34178         bit platforms too.
34180         * ffvideo.cpp (ALIGN): as above.
34182 2007-06-18  Chris Toshok  <toshok@ximian.com>
34184         * clock.cpp: simplify pausing and stopping a clock that has
34185         children by keeping track of the new state (the one the clock will
34186         take at the end of this tick).  This is necessary because the
34187         parent clock doesn't actually stop until the end of the tick, so
34188         we still need to update child clocks after we've determined the
34189         parent clock should stop.
34191 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
34193         * runtime.cpp: properly remove items from the doubly-linked list.
34195 2007-06-18  Chris Toshok  <toshok@ximian.com>
34197         * animation.cpp (AnimationStorage::~AnimationStorage): delete the
34198         baseValue here.
34199         (Storyboard::Begin): force a TimeManager tick after we've hooked
34200         up the clock, so that all the animations have proper values before
34201         the next render.  Fixes the "popping" in the surface demo.
34203 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34205         * runtime.cpp: Changed DependencyObject::SetValue to never store 
34206         a null value in the hashtable.
34208 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34210         * brush.cpp: Refactor the pattern creation to allow caching.
34211         * media.cpp|h: Add caching of cairo_pattern_t to Image.
34213 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
34215         * runtime.cpp: use motion hints for smoother motion event handling.
34217 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34219         * text.cpp|h: Runs now cache their own PangoFontDescription and
34220         PangoLayouts as an optimzation (seems to be very slight for simple
34221         us-ascii text, but might help enormously for more complex
34222         languages). Also added some FIXME thoughts.
34224 2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
34226         * downloader.cpp: Add missing downloader_notify_finished.
34228 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34230         * downloader.cpp: Only set dummy downloader functions if they
34231         aren't already set.
34233 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34235         * runtime.cpp: Add a few null checks.
34236         * downloader.cpp: Add initial dummy downloader functions to get
34237         meaningful messages if the downloader functions aren't initialized.
34239 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34240         
34241         * typegen.cs: Special case a few things for DependencyObject, 
34242         and make a few messages more informative.
34243         * runtime.h|cpp: Add a value_type field to Type, and a constructor
34244         to specify the value. Add a constructor to DependencyProperty that
34245         can specify default value and type (in the case the default value
34246         doesn't have the same type as the property). Changed
34247         DependencyObject::SetValue to never store a null value in the 
34248         hashtable. In Value destructor check for null pointers in a few 
34249         cases. Update all uses of Value.k to Value.GetKind.
34250         * type.cpp.in: Update to specify value_type information.
34251         * value.h.in: Implement nullable type handling in Value.
34252         * value.cpp, type.cpp, value.h: Updated.
34254 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34256         * text.cpp (get_size_for_brush): Calculate width/height if they
34257         are unset.
34258         (Draw): Don't use the brush if we aren't going to render (this is
34259         needed so that we don't get into a recursive loop since we have to
34260         manually calculate width/height).
34262 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34264         * text.cpp (get_size_for_brush): Implemented (since
34265         cairo_stroke_extents() won't work for us).
34267         * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
34268         (ImageBrush::SetupBrush): Same.
34270         * runtime.cpp (UIElement::get_size_for_brush): New method to get
34271         width/height needed by Brushes for scaling.
34273 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34275         * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
34276         parent.
34278 2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
34280         * text.cpp : added text_block_set_font_source().
34282 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34284         * brush.cpp (brush_init): Create a BRUSH property called
34285         "FrameChange", it is internal and the sole use of it is so that
34286         upper layers that care about brush changes act on it by updating
34287         their elements.
34289         * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
34290         brushes only trigger an invalidate, there is no need to recompute
34291         bounds. 
34293 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34295         * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
34296         delete for a void pointer, it can only delete known class types.
34298 2007-06-17  Jackson Harper  <jackson@ximian.com>
34300         * xaml.cpp: Implement x:Class, we can now load the Surface demo's
34301         XAML file, and it's custom Canvas class (things still don't work
34302         though because the custom canvas uses a downloader.)
34304 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34306         The surface rotate and translate controls should both work, and
34307         the enter/leave events are now correct.
34308         
34309         * runtime.cpp (UIElement::handle_motion, handle_button): Change
34310         the semantics to better match Silverlight.   Now these methods
34311         should check if the mouse is inside their region before calling
34312         the callback.
34314         This is necessary because children of the canvas (and panel) are
34315         within the confines of the bounding box, but the canvas can be
34316         smaller than that.   The canvas is a container whose boundaries
34317         are only used for paiting, children might be outside of these
34318         boundaries.
34320         It is necessary in these cases to pass the events to all the
34321         children within the canvas bounding box and for each child to
34322         determine if the event was within its range. 
34324         (inside_object): replaced the default implementation for
34325         FrameworkElements with a more performing version: instead of
34326         mapping the point and using cairo_in_stroke and in_fill operations
34327         on a rectangle with mapped coordinates, we map the coordinates and
34328         check against the rectangle.
34330         (Canvas::getbounds): if we are the topmost canvas, the boundaries
34331         are those from the Surface, not the ones that include the maximum
34332         extent from the children.   Used to do precise mouse enter/leave. 
34334 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34336         * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
34337         when its not our property.
34339         * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
34341         * mplayer.cpp (GetSurface): Added.
34343         * text.cpp (text_init): Fixed to use RegisterFull for Froeground
34344         so we can specify Value::BRUSH as the default value type instead
34345         of it using SolidColorBrush as the type.
34347 2007-06-17  Chris Toshok  <toshok@ximian.com>
34349         * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
34350         than 1 second.
34352 2007-06-17  Chris Toshok  <toshok@ximian.com>
34354         * clock.cpp (Clock::TimeUpdated): remove a special case for the
34355         clock's duration being Automatic.  Fixes infinite animation in
34356         Surface port.
34358         * runtime.cpp (crossing_notify_callback): return type is gboolean,
34359         and make sure we always return something.
34360         
34361 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34363         Propagate changes from children of the transform up to our
34364         containers, this is done in several steps:
34366         * runtime.cpp (DependencyObject::Attach, Detach): New methods that
34367         are used to attach an object to a container and detach it.   They
34368         were previously inlined inside SetValue.
34370         (Collection::Add, Remove): Attach and detach objects when they are
34371         added/removed. 
34372         
34373         * transform.cpp (Transform::OnPropertyChanged): if any class
34374         derived from Transform has one of its properties changed, it
34375         has a visual effect, propage this to the attacchees.
34377         (TransformGroup::OnSubPropertyChanged): Escalate here as well,
34378         this will catch the messages coming from anyone in the collection
34379         to its container. 
34381         (TransformCollection::OnSubPropertyChanged): Buble the event up
34382         here as well.
34384         * runtime.cpp (handle_motion): Change the order in which we send
34385         the events to the UIElement, we should start at the topmost
34386         element, and have the toplevel canvas be last.
34388 2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
34390         * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
34391         inside Image::render.
34392         * media.cpp: Use code from ImageBrush to render image with it's
34393         properties (e.g. Stretch)
34394         * transform.cpp: Update (commented) debug output.
34396 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34398         * runtime.cpp (GetValueNoDefault): This is necessary so we can
34399         distinguish a value that has been explicitly set from one that has
34400         not.
34401         
34403         * media.cpp (Image): use Framework::Width,Height for the image
34404         dimensions instead of the pixbuf width/height, used in extents and
34405         rotation computation.
34407         * runtime.cpp (Canvas::render): Set the clipping path on the
34408         identity matrix so we do not miss-clip.
34410         Render the canvas from 0, 0, fwidht, fheight, not the expose
34411         area. 
34413 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34415         * runtime.cpp (Cairo::render): The canvas also needs to set the
34416         matrix and clear its background. 
34418         (surface_resize): convenience entry point to resize a surface.
34419         Notice that this will resize the surface, but not the toplevel
34420         canvas. 
34422 2007-06-16  Jackson Harper  <jackson@ximian.com>
34424         * demo.cpp:
34425         * runtime.h:
34426         * control.cpp:
34427         * xaml.cpp: Use a callback for setting custom attributes in
34428         elements.
34430 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
34432         * media.cpp: Implemented all the needed virtual methods for
34433         MediaElement to work, using my new MediaPlayer class.
34435         * mplayer.cpp|h: New class for playing media sources.
34437         * ffvideo.cpp: Removed from the build.
34439 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34441         Observation: either it is the surface, or something else is very
34442         slow, but entering the surface is quite slow right now to show the
34443         handles.   Not sure what it could be.
34444         
34445         * runtime.cpp (OnPropertyChanged): We probably should catch the
34446         property changes here, and not in the Sub* variant of this thing,
34447         this will update the canvas properly now.
34449         (dump_hierarchy): useful bit to debug what is going wrong. 
34450         
34451         (Canvas::get_xform_for): Do not apply extra
34452         transformations to the child other than the absolute_xform.
34454         (surface_attach): On attach we need to do a full invalidate, so
34455         the transformations are computed, otherwise it uses the defaults
34456         for the toplevel (zero), this fixes the atom.xaml issue. 
34458         * control.cpp (get_xform_for): This is not proxied to the real
34459         object, this is proxied to the parent.
34460         (control_initialize_from_xaml): Set the parent link here.
34462 2007-06-16  Chris Toshok  <toshok@ximian.com>
34464         * transform.cpp, transform.h, runtime.cpp, runtime.h,
34465           geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
34466           at removing all cached instance collections and using GetValue
34467           for them.
34469 2007-06-16  Chris Toshok  <toshok@ximian.com>
34471         * media.cpp (Image::SetSource): we want events even if we attach a
34472         downloader that's been started.
34474 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34476         * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
34477         will mess with the earlier filling.
34479 2007-06-16  Chris Toshok  <toshok@ximian.com>
34481         * runtime.h, runtime.cpp: remove the instance cached
34482         Panel::children, use accessor to get it when we need it.
34484         * brush.h, brush.cpp: same for the GradientBrush::children
34485         property.
34487 2007-06-16  Chris Toshok  <toshok@ximian.com>
34489         * runtime.h: make these const Rect&'s.
34491 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
34493         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34494         the Value::Kind of the object that was created so the managed side do
34495         a Lookup on it.
34497 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34499         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34500         the element as the managed side needs (and defines) it.
34502 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34504         * control.cpp: Implement Control.
34506         * downloader.cpp: Implement a system to send various notifications
34507         as Chris wants his notifications and managed world wants the
34508         notifications as well. 
34510         Should they ahve been separate?   For now I just added a list of
34511         them.   This code is turning uglier every minute.
34513 2007-06-16  Jackson Harper  <jackson@ximian.com>
34515         * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
34516         in.
34517         - Handle expat errors a little better.
34519 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34521         * runtime.h: Implement missing IntersectsWith and Intersection to fix 
34522         build.
34524 2007-06-15  Chris Toshok  <toshok@ximian.com>
34526         * runtime.cpp (Canvas::render): small optimization.  only call the
34527         item's render method if its bounds actually intersects with the
34528         rectangle we're rendering.  Also, clip to the bounding rectangle
34529         of the item here.
34531 2007-06-16  Chris Toshok  <toshok@ximian.com>
34533         * clock.cpp, clock.h: don't use a constant for the timeout in
34534         gtk_timeout_add, and add methods to add/remove the timeout.
34536         (ClockGroup::TimeUpdated): if we're paused or stopped,
34537         don't call child clock TimeUpdated methods at all.  they always
34538         generate CurrentTimeInvalidated even when the time hasn't changed,
34539         which triggers redraws that don't need to happen.
34541 2007-06-16  Jackson Harper  <jackson@ximian.com>
34543         * runtime.cpp|h: We still need C style base_ref/unref.
34544         * demo.cpp:
34545         * xaml.cpp: Takle a callback for the from_file method also.
34546         
34547 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
34549         * ffvideo.cpp (Stop): Implemented.
34550         (.ctor): init paused to false (maybe this is why video
34551         didn'talways work?).
34552         (.dtor): Stop() the video and unhook the timeout.
34554         * runtime.cpp: Implement Base::ref and Base::unref instead of
34555         doing it the c way.
34557         * *.cpp: Updated for above change.
34559         * shape.cpp (shape_set_stroke): Don't unref the old stroke.
34560         (shape_set_fill): Same.
34562         * text.cpp (text_init): Use a separate brush for TextBlocks and
34563         Inlines.
34564         (text_block_set_foreground): Don't unref the old brush.
34565         (inline_set_foreground): Same.
34567 2007-06-15  Chris Toshok  <toshok@ximian.com>
34569         * xaml.cpp: little leak fixes here and there.
34571 2007-06-15  Chris Toshok  <toshok@ximian.com>
34573         * demo.cpp (delete_event): destroy the surface and shutdown the
34574         runtime before we quit, just to make finding leaks a little
34575         easier.
34577         * ffvideo.cpp (MediaElementFfmpeg): re-order the
34578         close/g_io_channel_close calls to quiet down glib.
34580         * media.cpp: don't close the loader in DownloaderEvents.  do it in
34581         the dtor for now, to keep from getting that stupid gdk warning.
34582         this is wrong, but at least it's quiet.
34584         * text.cpp: delete the color we initialize the solid color brush
34585         with in text_init.
34587         * animation.cpp, animation.h: remove the cached key_frames
34588         collections.
34590         * runtime.h, runtime.cpp: clean up our cleanup a lot.
34592         in the copy constructor we actually need to make a copy (or
34593         ref in cases where we can) everything we store as a pointer in
34594         our union.  This is to facilitate us destroying it in the
34595         destructor.
34597         in surface_destroy just delete the surface.  move all the destroy
34598         code to the destructor.  Also, in the destructor unhook from the
34599         gtk events, since we get an unrealize event as part of widget
34600         destruction, apparently.
34602         Add DependencyObject::Shutdown which destroys our properties
34603         hashtable.  Create all the hashtables with _new_full so we can
34604         give free functions for keys/values.  actually make use of them,
34605         and clean up the relevant destructors.
34607         Add a destructor for Type, and have the Type ctor take its
34608         arguments.  free the name in the dtor.  Same deal with _new_full
34609         for hashtable creation, and also add Type::Shutdown.
34611         (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
34612         and DependencyObject::Shutdown to free all our stuff.
34613         
34614         * clock.h, clock.cpp: add TimeManager::Shutdown.
34616 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
34618         * demo.cpp (gettime): Improved fps reporting.
34620 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34622         * media.cpp (SetSource): Make it so we use the data from a
34623         downloader that might have already finished.
34625 2007-06-15  Chris Toshok  <toshok@ximian.com>
34627         * runtime.cpp: simplify refcounting a little more.  we now have 3
34628         rules:
34630             1. Value() holds a ref to its contained dependency object.
34631                This means we don't have to do anything special for
34632                anything stored in a DP.
34633         
34634             2. Collections hold a ref to their constituents.
34636             3. If you *must* cache an DO pointer in an instance field, you
34637                must ref/unref it properly.  But really, you shouldn't need
34638                to cache it, and I'll likely go through and remove all the
34639                ones I can find.
34641         * media.cpp (media_element_set_markers): remove the ref/unref
34642         stuff.
34644         * animation.cpp: comment out some spew, and follow a safer pattern
34645         in OnPropertyChanged.
34647         * brush.cpp (OnPropertyChanged): safer pattern.
34649         * geometry.cpp (OnPropertyChanged): safer pattern.
34651         * runtime.h: make all these dtors virtual.
34653         * clock.cpp, clock.h: remove the cached child_timelines instance
34654         field to clean up some of the ref counting problems.
34656 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34658         * media.cpp (SetSource): Make it so we use the data from a
34659         downloader that might have already finished.
34661         We now accumulated data as we go.
34662         
34663         * downloader.cpp (downloader_get_response_text): Return
34664         accumulated data.
34666 2007-06-15  Jackson Harper  <jackson@ximian.com>
34668         * demo.cpp:
34669         * runtime.h:
34670         * xaml.cpp: Callback into managed code to create custom element
34671         instances.
34673 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
34675         * media.cpp (media_base_new): Removed, not instantiable.
34676         (Image::getbounds): Need to set the absolute_xform matrix :)
34678 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34680         * media.cpp (Image::getxformorigin): Implement getxformorigin, so
34681         rotations are correct.
34683         (Image::getbounds): Implement getbounds correctly, the coordinates
34684         should be in device coordinates with the transform applied.
34686 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
34688         * demo.cpp (main): Add some Inlines to the TextBlock to test
34689         bounding box calculations.
34691         * text.cpp (OnPropertyChanged): If the property that changed is
34692         the Actual width/height, then don't invalidate anything - simply
34693         return (these are just cache values that only we can set
34694         internally).
34695         (Draw): Keep track of the pixel width/height of the entire
34696         rendered TextBlock+Inlines.
34697         (getbounds): Use the cached width/height of the TextBlock+Inlines
34698         and draw a rectangle instead to improve performance.
34700 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
34702         * media.cpp|h: Add media_base_new.
34704 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34706         * Add destructors to classes that are caching DO collections and
34707         keeping refs to those, thanks to Chris Toshok for the pattern to
34708         use here. 
34710 2007-06-15  Chris Toshok  <toshok@ximian.com>
34712         * media.cpp (Image::render): use the uielement's opacity when
34713         painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
34715 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34717         * runtime.cpp (UIElement): The problem was that:
34719                 The ~UIElement destructor was setting the collection
34720                 properties to NULL in an attempt to unref stuff (these
34721                 are now automatically unrefed).
34723                 This caused the hash table destructor to unref the values
34724                 that were held in the collection.
34726                 At a later point, since "triggers" was cached and
34727                 OnPropertyNotify was called, we attempted to unref the
34728                 value, but that cached value pointed to an object that had
34729                 already been released.
34731         * Everywhere: remove duplicated code that got copy/pasted
34732         everywhere for tracking collections and caching values.  
34734         This should help fixing the crashing problem, but I still need to
34735         review the rules for reference counting and keeping a cache of
34736         variables in instance fields. 
34738 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
34740         * text.cpp (Draw): Now renders inlines.
34742 2007-06-15  Chris Toshok  <toshok@ximian.com>
34744         * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
34745         libgdiplus.
34747         * demo.cpp: notify the downloader of the image file size so that
34748         it'll generate a COMPLETED event for the Image.
34750         * media.h, media.cpp: make image downloading non-progressive (we
34751         only create the surface when the downloader notifies the download
34752         is complete), but gain something in return: images with alpha
34753         channels.
34755         * downloader.h, downloader.cpp: add closure to event_notify, and
34756         expose the Event kind.
34758 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34760         * runtime.cpp (UIElement, Canvas): send events to the objects as
34761         well.   My original test on orcas was buggy.
34763 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
34765         * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
34767 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
34769         * xaml.cpp (dependency_object_add_child): If the col_v collection
34770         value is NULL, create a new collection and add it to the
34771         DependencyObject.
34773         * runtime.cpp: Added a generic collection_new() function which
34774         takes a Value::Kind to specificy which collection-type it should
34775         allocate.
34777 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34779         * downloader.cpp: Implement DownloadProgress property and event
34780         notification. 
34782         * runtime.h (DependencyObject::Is): new method, similar to C# is.
34784         * runtime.cpp (surface_repaint): We clear the background here
34785         again, to allow canvases to have transparent brushes.
34787 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
34789         * runtime.cpp: Panel.Background is NULL by default, which means it's
34790         transparent. This fixes Canvas inside Canvas.
34792 2007-06-15  Jackson Harper  <jackson@ximian.com>
34794         * runtime.cpp|h: Implement some Inlines stuff that the parser will
34795         need.
34796         * xaml.cpp: Add some of the pieces for creating textblock inlines.
34797         - Added some TODO areas for creating late bound collections (maybe
34798         this should just be illegal??).
34800 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
34802         * text.cpp: Have inlines cache their PangoFontDescription and
34803         added logic to render textblock inlines.
34805 2007-06-15  Alan McGovern  <amcgovern@novell.com>
34807         * runtime.cpp|h: Added DependencyProperty.NameProperty
34809 2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34811         * transform.cpp|h: Add Transform C constructor.
34812         * runtime.cpp: Better warning message.
34814 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34816         * runtime.cpp (surface_attach): Only hook up the events when we
34817         get a toplevel attached.   
34819         * downloader.h: Drop the C++ API with a C proxy API, switch to a
34820         pure C API as we need this from the managed side anyways.
34822         * downloader.h: Move downloader defs into .h file
34824         Add a notification system for reporting the size of a stream, so
34825         we can do progress indication.
34827         * downloader.cpp: Move downloader to its own file.
34829 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
34831         * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
34832         (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
34833         * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
34834         will be removed in 1.0.
34835         * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
34836         * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
34837         the *right* place.
34839 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
34841         * text.cpp (text_init): Set more default values.
34843         * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
34844         we iterate thru them) and set the resulting list to NULL (in case
34845         we don't hold the last ref) before unreffing the children object
34846         (in case we do own the last ref).
34847         (EventTrigger::OnPropertyChanged): Same.
34848         (UIElement::OnPropertyChanged): Same.
34850         * transform.cpp (OnPropertyChanged): Same.
34852         * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
34853         (PathGeometry::OnPropertyChanged): Same
34854         (PathFigure::OnPropertyChanged): Same.
34856         * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
34858         * animation.cpp
34859         (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
34860         (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
34861         (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
34863 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
34865         * brush.cpp: Complete ImageBrush.Transform
34866         * shape.cpp: Please at least one side of the lines.
34868 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
34870         * text.cpp (text_init): No longer should ref the foreground brush
34871         or we leak refs.
34873         * xaml.cpp: Added support for Runs/LineBreaks
34875         * text.cpp: Implemented Run/LineBreak classes.
34876         (inline_new): Removed (can't instantiate this class).
34878 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34880         * runtime.cpp (~DependencyObject, free_value): unref all the
34881         values that are stored in the object on destruction
34883         * runtime.cpp: Add support for enter/leave events.
34885 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
34887         * text.cpp (getbounds): Set the actual width/height values to keep
34888         them up-to-date.
34890 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
34892         * text.cpp (getbounds): Revert prior change.
34893         (getxformorigin): Same.
34895         * shape.cpp (getbounds): Revert prior change.
34897         * ffvideo.cpp (getbounds): Revert prior change.
34899         * runtime.cpp (update_xform): Revert my last change.
34900         (item_update_bounds): Same.
34902 2007-06-14  Jackson Harper  <jackson@ximian.com>
34904         * xaml.cpp: Set content properties when adding child elements.  We
34905         now no longer need to special case any elements except panel.
34907 2007-06-14  Jackson Harper  <jackson@ximian.com>
34909         * xaml.cpp: I must have been very tired when I wrote that.
34911 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
34913         * media.h: Expose Image's Height and Width (required for ImageBrush)
34914         * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
34915         (yet) force an update of the drawing once the image is available.
34917 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
34919         * demo.cpp: Updated s/textblock/text_block/g
34921         * xaml.cpp: Don't register TextBlock twice.
34923         * ffvideo.cpp (getbounds): Can now depend on surface being set.
34925         * text.cpp: s/textblock/text_block/g
34926         (getbounds): Can now depend on surface being set.
34927         (getxformorigin): Same.
34929         * shape.cpp (getbounds): Can now depend on surface being set.
34931         * runtime.cpp (item_update_bounds): Don't update bounds if the
34932         surface hasn't been set yet.
34933         (update_xform): Same.
34935 2007-06-14  Jackson Harper  <jackson@ximian.com>
34937         * xaml.cpp: Add keyspline parsing.
34939 2007-06-14  Jackson Harper  <jackson@ximian.com>
34941         * value.h: This guy doesn't exist anymore, he is a
34942         DependencyObject now.
34944 2007-06-14  Jackson Harper  <jackson@ximian.com>
34946         * animation.cpp:
34947         * runtime.cpp|h: We also need to update the DependencyObject when
34948         resolving PropertyPaths.
34950 2007-06-14  Jackson Harper  <jackson@ximian.com>
34952         * runtime.cpp|h: New function that follows PropertyPath's to
34953         DependencyProperties.
34954         * animation.cpp: Use new function to resolve animation target
34955         properties.
34957 2007-06-14  Jackson Harper  <jackson@ximian.com>
34959         * runtime.cpp (GetDependencyProperty): If there is no table for a
34960         property, we still need to lookup the property in the parent
34961         chain (assumming inherit is true).
34962         - Fix some typos with types_by_name
34964 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
34966         * demo.cpp (main): Rotate our demo text inside a filled rectangle
34967         around the center of the text.
34969         * text.cpp (TextBlock.ctor): Initialise a cached
34970         PangoFontDescription that we will update when properties change.
34971         (TextBlock.dtor): Free our font/layout.
34972         (getbounds): Implemented correctly.
34973         (getxformorigin): Implemented.
34974         (Draw): Simplified since we don't need to create our layout/font
34975         anymore (just use the cached ones).
34976         (OnPropertyChanged): Implemented.
34978 2007-06-14  Miguel de Icaza  <miguel@novell.com>
34980         * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
34981         RadialGradientBrush): Notify owners when changes happen in the
34982         Brush.
34984         This makes the demo test-color-animation.xaml work without fps.
34986         * runtime.cpp: Make Canvas use the Background property to render
34987         the background.
34989 2007-06-14  Chris Toshok  <toshok@ximian.com>
34991         * demo.cpp (main): create a namescope to attach to the canvas, and
34992         also make sure to add the storyboard to the tree someplace so that
34993         it can find the names of things.
34995         * xaml.cpp: create a namescope to attach to the top_element.
34997         * runtime.cpp (FindName): rework this to walk up the tree.  Drop
34998         the global namescope.
35000 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35002         * brush.cpp|h: Add ImageBrush functions, which delegates most of its
35003         work to Image (downloader).
35004         * media.cpp|h: Expose the cairo_surface_t that contains the image.
35006 2007-06-14  Chris Toshok  <toshok@ximian.com>
35008         * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
35009         size from 1024 to 8192 (and make it an instance instead of stack
35010         variable).  Also, add a return statement that will cause the idle
35011         handler to no longer be called when we get a write of 0 length.
35012         This might be wrong in the long term.
35014         * media.cpp, media.h: add cleanup methods for the Image class, and
35015         add a dtor as well.
35017 2007-06-14  Chris Toshok  <toshok@ximian.com>
35019         * media.cpp (LoaderSizePrepared): fill in the initial state of the
35020         image to gray with black border.
35021         (LoaderAreaUpdated): invalidate the item.
35023         * media.h: fix the progressive image loading.
35025 2007-06-14  Chris Toshok  <toshok@ximian.com>
35027         * demo.cpp: use the MediaBase::SourceProperty to set the image's
35028         source.
35030         * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
35031         for changes in MediaBase::SourceProperty and kick off the download
35032         and stop the currently running one.
35034 2007-06-14  Chris Toshok  <toshok@ximian.com>
35036         * demo.cpp: track downloader api change.
35038         * media.cpp: track downloader api change.
35040         * runtime.h, runtime.cpp: the downloader's write function needs an
35041         offset as well as a length to work with mozilla's streaming api.
35043 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35045         * demo.cpp (main): Draw some text
35047         * text.cpp (text_init): Set a default solid black brush for
35048         foreground properties on Inline/TextBlock objects.
35049         (Draw): Setup the Brush stuff before drawing.
35051 2007-06-14  Jackson Harper  <jackson@ximian.com>
35053         * xaml.cpp: Add support for loading all implemented (and semi
35054         implemented) dependency object types.
35055         * text.cpp|h: C style constructors.
35057 2007-06-14  Chris Toshok  <toshok@ximian.com>
35059         * animation.cpp (KeySpline): default should be 1,1 for
35060         controlPoint2.
35062 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35064         * xaml.cpp: Add support for Matrix (non-DO) type.
35066 2007-06-14  Chris Toshok  <toshok@ximian.com>
35068         * runtime.cpp (downloader_write): add C-style downloader_write
35069         method so we can call into it from the binding.
35071 2007-06-14  Chris Toshok  <toshok@ximian.com>
35073         * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
35074         type.cpp.in, value.h.in: make KeySpline subclass from
35075         DependencyObject like it should, and fix resulting fallout.
35077 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35079         * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
35080         catch cases of Top/Left being set on a child, this makes changes
35081         to the object after it has been created (adding/removing the
35082         property) work. 
35084 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35086         * brush.cpp|h: Much closer results for RadialGradients (but I still
35087         have a test case that fails). Also added Transform support for 
35088         LinearGradient.
35090 2007-06-14  Jackson Harper  <jackson@ximian.com>
35092         * animation.h: C style constructors.
35093         * clock.cpp|h: C style constructors.
35094         * runtime.cpp|h: Follow proper naming convention for
35095         TimelineMarker C style constructors.
35097 2007-06-14  Chris Toshok  <toshok@ximian.com>
35099         * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
35100         here, and made Downloader pluggable with a set of functions.
35102         * demo.cpp: use the pluggable nature of Downloader to put
35103         UnmanagedDownloader here (and call it FileDownloadState).
35105         * value.cpp, value.h, type.cpp: resync.
35107 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35109         * text.cpp: Fixed Brush accessors for the NULL case.
35111         * media.cpp: Fixed accessors that could return NULL
35112         (media_init): init MediaBase and MediaElement items.
35114 2007-06-14  Jackson Harper  <jackson@ximian.com>
35116         * animation.cpp: C style constructor.
35117         * media.cpp|h: Add some C style constructors.
35118         * xaml.cpp:  Add parsing hooks for new components.
35120 2007-06-14  Chris Toshok  <toshok@ximian.com>
35122         * demo.cpp: make one of the videos an image instead.
35124 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35126         * xaml.cpp: Fixed the font_widths and font_stretches maps to
35127         reflect the numeric enum values defined in text.h (and msdn docs).
35129         * text.h: Sync enum values to documented numeric values.
35131 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35133         * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
35134         Make all classes that inherit from DO constructable, and add
35135         missing C-style constructors.
35137 2007-06-14  Jackson Harper  <jackson@ximian.com>
35139         * runtime.cpp|h: Hookup the resource collection.
35140         * xaml.cpp: Parse resource collections.
35142 2007-06-14  Chris Toshok  <toshok@ximian.com>
35144         * type.cpp, value.h, type.h: resync these.
35146         * media.h, media.cpp: add naive Image class.
35148         * runtime.h, runtime.cpp: add some Downloader methods, and
35149         subclass Downloader with a *very* hackish UnmanagedDownloader
35150         class that just loads from files.  Also add a "write_func"
35151         callback that the downloader can call when it has new data to hand
35152         off.
35154 2007-06-14  Chris Toshok  <toshok@ximian.com>
35156         * animation.cpp: import an arc length calculator I found on the
35157         net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
35158         and use that for KeySpline::GetSplineProgress.  The results don't
35159         match MS's exactly, though.
35161 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35163         * geometry.cpp, geometry.h: Add collection constructors.
35164         * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
35165         * runtime.cpp|runtime.h: Implement collection add/remove methods. 
35166         Add Downloader DPs.
35167         * media.cpp: Add MediaAttribute DP.     
35169 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35171         * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
35172         (as it cannot be globally applied). Added DP, and related functions,
35173         to TileBrush.
35175 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35177         * Improve the destruction scenario to release the resources that
35178         we have acquired, we are now up to the point of stopping clocks
35179         properly, but more work is going to be needed in the long term to
35180         properly track refs and objects.
35182         Ensured that all virtual GetObjectType are flagged with virtual.
35184         * Makefile.am: Put runtime.cpp at the top, to improve
35185         compile/test cycle.
35187 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35189         * brush.cpp|h: One step closer for RadialGradientBrush
35190         * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
35191         render (shape-wise) correctly.
35192         * shape.cpp: Draw before setting the brush. This allows the brush
35193         setting code to ask for the extents to stroke/fill.
35195 2007-06-13  Chris Toshok  <toshok@ximian.com>
35197         * animation.cpp (KeySpline::GetSplineProgress): reimplement this
35198         to return a percentage of the arc length of the bezier that is
35199         traversed when t = linearProgress, taking the algorithm from
35200         http://steve.hollasch.net/cgindex/curves/cbezarclen.html
35202 2007-06-13  Chris Toshok  <toshok@ximian.com>
35204         * brush.h, geometry.h, animation.h, clock.h: add GetElementType
35205         collection overloads.
35207         * type.cpp: resync to track UIElement : Visual relationship.
35209         * runtime.h: add Collection::GetElementType, and add overloads
35210         (some commented out) for the collections listed.  Also, fix
35211         UIElement's superclass to be Visual.
35213         * runtime.cpp (Add): make sure we're only adding subclasses of our
35214         element type.
35216 2007-06-13  Chris Toshok  <toshok@ximian.com>
35218         * clock.cpp (AddChild): just pass the child, unwrapped.
35220         * runtime.h: remove the Value* overloads for Collection::Add and
35221         Collection::Remove.
35223         * xaml.cpp (dependency_object_add_child): just pass the dependency
35224         object, unwrapped.
35226 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35228         * text.cpp: Implemented a ton of stuff...
35229         (text_init): Added.
35231         * runtime.cpp (runtime_init): Call text_init().
35233 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35235         * runtime.h (Collection): Since it seems that everything we have
35236         so far are collections of dependency objects, the code is now
35237         simplified and will also take refs and remove refs on destruction.
35239         The only reason to implement the Add/Remove methods is if you must
35240         do something as a hook during add/remove
35241         
35242         * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
35243         Objects. 
35244         
35245         (OnPropertyChanged): Allow the value to be NULL, cope with that,
35246         we use this to clear all of our objects.
35248 2007-06-13  Chris Toshok  <toshok@ximian.com>
35250         * xaml.cpp (xaml_create_from_str): make the from_str a little
35251         closer to from_file.  fixes hooking up names when loading from
35252         strings.
35254 2007-06-13  Chris Toshok  <toshok@ximian.com>
35256         * runtime.cpp (runtime_init): start the time manager here.
35258         * demo.cpp (main): instead of here.
35260 2007-06-13  Jackson Harper  <jackson@ximian.com>
35262         * xaml.cpp: Gracefull handling of error conditions. Being
35263         intentionally non strict about some things while we are
35264         developing (like unknown elements, and attributes, and missing
35265         namespaces).
35267 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35269         * brush.cpp: Better, but still imperfect, RadialGradientBrush
35271 2007-06-13  Jackson Harper  <jackson@ximian.com>
35273         * runtime.h: Add some of the error event handler args, so i can
35274         use these in the parser.
35276 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35278         * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
35279         (soptimsation, woot).
35281         * text.cpp: Implemented c wrappers for Inline
35283 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35285         * brush.cpp: Implemented LinearGradientBrush::SetupBrush
35286         * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
35287         support for LinearGradientBrush.
35289 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35291         * text.cpp: Stubbed out TextBlock and Glyphs
35293 2007-06-13  Jackson Harper  <jackson@ximian.com>
35295         * xaml.cpp: GradientBrush is a Brush.
35297 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35299         * runtime.cpp (dependency_object_find_name): Add new wrapper 
35301 2007-06-13  Chris Toshok  <toshok@ximian.com>
35303         * animation.cpp, animation.h: add public storyboard methods for
35304         begin/pause/resume/seek/stop.  also start in on the spline
35305         keyframe/KeySpline stuff.
35307         * type.cpp: resync.
35309         * value.cpp: resync.
35311         * value.h: resync.
35313         * value.h.in: add keyspline stuff.
35315         * type.cpp.in: add keyspline stuff.
35317 2007-06-13  Chris Toshok  <toshok@ximian.com>
35319         * demo.cpp: a few changes - none of the animations run forever
35320         now.  also, add some gtk events (button press/release/motion).  we
35321         pause animations on press, resume them on release.
35323         * clock.cpp: keep track of the offset caused by pausing/resuming
35324         the clock from our parent's time.
35326         * animation.cpp: split out all the logic for finding the current
35327         (and previous) keyframes into
35328         KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
35329         collection maintain a separate sorted list of keyframes.
35331 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35333         * media.cpp (media_base_get_source): Implemented; use char*
35334         instead of Uri - we'll make the binding convert between the types.
35335         (media_base_set_source): Same.
35337 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35339         * runtime.cpp: Xlib and we are both defining Visual,
35340         so implement a workaround.
35342 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35344         * brush.cpp|h: Added code for LinearGradientBrush and partial setup
35345         for all gradient-related brushes (needs testing). Add all color 
35346         definitions supported by XAML.
35347         * mkcolor.cs: Tool to generate colors from System.Drawing (as they
35348         are identical).
35350 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35351         
35352         * runtime.h: Add Visual.
35353         * value.cpp, value.h, type.cpp: Updated.
35355 2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
35357         * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
35359 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35361         * media.h: Added MediaAttribute.
35362         * runtime.h: Added Downloader.
35363         * value.cpp, value.h, type.cpp: Updated.
35364         * typegen.cs: Copy Kind.cs to the correct directory.
35366 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35368         * brush.cpp, brush.h, geometry.cpp: Fix property registration
35369         typos.
35371 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35373         * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
35374         Brush::RelativeTransformProperty types.
35376 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
35378         * brush.cpp|h: Complete DependencyProperties for GradientBrush and
35379         add GradientStopCollection.
35380         * runtime.cpp|h: Remove code for GradientStopCollection.
35381         * xaml.cpp: Register new brush classes.
35383 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35385         * runtime.cpp: Various new events are now sent.
35387 2007-06-13  Jackson Harper  <jackson@ximian.com>
35389         * xaml.cpp: When using the xaml_create_from_str we automatically
35390         add the default and x: namespaces.
35392 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
35394         * ffvideo.cpp: Fixed to subclass the new MediaElement class.
35396         * video.cpp: Removed.
35398 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35400         * brush.cpp|h: Added DependencyProperty for GradientBrush and 
35401         GradiantStop. Added new brush-related enums. Add [g|s]etter functions
35402         for RadialGradient and BrushGradiantStop.
35404 2007-06-12  Jackson Harper  <jackson@ximian.com>
35406         * xaml.cpp: Repsect namespaces.
35407         - Clean up code a little
35409 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35411         * brush.h: New. Brush related stuff.
35412         * brush.cpp: DependencyProperty for RadialGradientBrush
35413         * runtime.h: [Re]move brush stuff.
35414         * shape.h: Add include for brush.h
35415         * type.cpp, value.h, value.h: Add RadialGradientBrush type.
35416         * Makefile.am: Add brush.h to the build.
35418 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
35420         * media.cpp|h: Added to the build
35422 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35424         * transform.cpp|h: Complete MatrixTransform.
35425         * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
35426         Matrix type.
35428 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35430         * runtime.h (UIElement::inside_object): new routine that should
35431         return true if the given absolute x, y is inside the given object
35432         or not. 
35434         (UIElement::handle_motion): new routine that is called when a
35435         motion event happens, it should determine if it can handle the
35436         given event at x, y.
35438         (Surface): new callbacks, these are callbacks that will pass the
35439         notification of the event to managed code. 
35441         * runtime.cpp (FrameworkElement): provide a default implementation
35442         for inside object that works for "squares" (things with widths and
35443         heights) 
35445 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
35447         * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
35448         simply disable audio for that video. Temporary hack.
35450 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35452         * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
35454 2007-06-12  Jackson Harper  <jackson@ximian.com>
35456         * xaml.cpp: Implement enums.  This implementation is very naive,
35457         but works with the current Silverlight object model.  Basically,
35458         we just index property names to enum maps.  So a property name
35459         maps to a single enum type regardless of the type the enum is
35460         declared in.  This works fine with the current silverlight object
35461         model, but in the future might need to be changed, if we get
35462         conflicting property names.
35464 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
35466         * ffvideo.cpp: Fixed sound playback to not get that nasty
35467         reverb-like effect. Also switched to using SDL for audio.
35469 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35471         * transform.cpp|h: Implement SkewTransform.
35472         * type.cpp: Register new type SkewTransform.
35473         * value.cpp|h: Add SkewTransform.
35474         * xaml.cpp: Register DO for SkewTransform.
35476 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35478         * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
35479         a normal field.
35481 2007-06-12  Jackson Harper  <jackson@ximian.com>
35483         * xaml.cpp: Don't try to add properties to the panel.
35485 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
35487         * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
35488         * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
35489         * Makefile.am: Add rsvg.cpp|h to the build.
35491 2007-06-12  Jackson Harper  <jackson@ximian.com>
35493         * xaml.cpp: Add parser for KeyTime structures.
35495 2007-06-12  Chris Toshok  <toshok@ximian.com>
35497         * animation.cpp
35498         (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35499         (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35500         (animation_init): make sure to initialize
35501         ColorKeyFrame::ValueProperty.
35503         * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
35505 2007-06-12  Jackson Harper  <jackson@ximian.com>
35507         * animation.cpp|h: C style constructor for KeyFrameCollection.
35508         * xaml.cpp: Implement the KeyFrame types
35509         - Make the base types ghosts, despite what the docs say, they
35510         can't be used.
35512 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35514         * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
35515         when we have reached someone that handles that property in the way
35516         up. 
35518 2007-06-12  Jackson Harper  <jackson@ximian.com>
35520         * xaml.cpp: Register the TriggerCollection so that
35521         TriggerCollections can be created using the explicit syntax.
35522         
35523 2007-06-12  Jackson Harper  <jackson@ximian.com>
35525         * xaml.cpp: No longer need to special case EventTriggers. Remove
35526         some dead code (yippie!)
35527         * runtime.cpp: Unregister the target when removing from the
35528         collection.
35530 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35532         * runtime.h: Implement Inlines.
35533         * value.cpp, value.h, type.cpp: Updated.
35535 2007-06-12  Jackson Harper  <jackson@ximian.com>
35537         * runtime.cpp|h: Hook up the UIElement::Triggers and
35538         EventTrigger::Actions/RoutedEvent properly.
35539         * xaml.cpp: Remove some of the special casing for event triggers
35540         now that they are proper DependencyProperties.
35542 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35544         * typegen.cs: Now checks if classes that inherits DependencyObject
35545         implement GetObjectType.
35546         * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
35547         missing GetObjectTypes and fix a few that were returning the wrong
35548         type.
35550 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35552         * runtime.cpp: 
35553         - (DependencyObject::SetValue): Allow assigning an object of a 
35554           more derived type than the defined property type. Change the
35555           attached_list code to handle NULL dependency_objects.
35556         - Delete types_init, it's generated now.
35557         - Delete Value:As[DependencyObjects], its generated now.
35558         * runtime.h: Added definitions for a few missing collection classes.
35559         * types.cpp[.in], value.cpp[.in], value.h.in: Added.
35560         * value.h: Update.
35561         * Makefile.am: Add types.cpp and value.cpp
35562         * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
35563         value.h and Kind.cs from the headers.
35565 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35567         * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
35569 2007-06-12  Chris Toshok  <toshok@ximian.com>
35571         * clock.h, clock.cpp, runtime.cpp, value.h: use a
35572         TimelineCollection to store child collections in TimelineGroup.
35574 2007-06-12  Chris Toshok  <toshok@ximian.com>
35576         * animation.h, animation.cpp (animation_init): remove the
35577         clock.cpp property registration.
35578         (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
35579         attempt, calculate our timespan from our key frames.
35580         (Animation::GetNaturalDurationCore): return a 1 second duration,
35581         as doc'ed on msdn.
35582         (UpdatePropertyValue): plug leak.
35584         * runtime.cpp (runtime_init): call clock_init.
35586         * clock.h, clock.cpp: largish pass at implementing support for
35587         Duration::Automatic in ClockGroups (where they query their child
35588         timelines to see how long they should make themselves).  Also, add
35589         clock_init.
35591         * xaml.cpp (timespan_from_str): correct math.
35593 2007-06-12  Jackson Harper  <jackson@ximian.com>
35595         * xaml.cpp: Add a couple more of the animation elements.
35597 2007-06-12  Jackson Harper  <jackson@ximian.com>
35599         * runtime.cpp|h: There is no public Triggers property.
35601 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35603         * runtime.cpp (DependencyObject::RegisterFull): Allow for
35604         properties to be flagged as attached, and only propagate the child
35605         notification to those those that care about it.
35607 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35609         * Implement a mechanism to keep track of parents and notify
35610         parents of changes in attached properties.
35612 2007-06-11  Jackson Harper  <jackson@ximian.com>
35614         * xaml.cpp: Add content properties, and handle collections that
35615         are content properties, by implicitly adding items to the
35616         collections.
35618 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
35620         * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
35621         most cases).
35622         * transform.cpp: Add matrix initialization in TransformGroup::
35623         GetTransform. Makes the API safer :)
35625 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
35627         * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
35629 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
35631         * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
35632         [Poly]BezierSegment. More than half of Sam Ruby's samples can work
35633         with this.
35635 2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
35637         * ffvideo.cpp: Attempt to get video to be in sync with audio by
35638         using the audio pts as the target_pts.
35640 2007-06-11  Jackson Harper  <jackson@ximian.com>
35642         * runtime.cpp: Register the collection types as derived from
35643         COLLECTION.
35645 2007-06-11  Chris Toshok  <toshok@ximian.com>
35647         * xaml.cpp (timespan_from_str): fix reading off the end of digits
35648         array.
35650 2007-06-11  Jackson Harper  <jackson@ximian.com>
35652         * xaml.cpp: Implement some more collection loading. A lot of
35653         duplicate code here, so I should probably refactor things a bit,
35654         but will wait until I've seen how more collections are laid out.
35656 2007-06-11  Chris Toshok  <toshok@ximian.com>
35658         * animation.h, animation.cpp: use KeyFrameCollection's for the
35659         *AnimationUsingKeyFrames key frame stuff, instead of GLists.
35661         * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
35663 2007-06-11  Jackson Harper  <jackson@ximian.com>
35665         * xaml.cpp: Make the parents of collections the Collection ghost
35666         element.  This is a first step in cleaning up collection creation
35667         a little.
35669 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
35671         * transform.cpp: remove dead code.
35672         * xaml.cpp: Partial collection support for geometry.
35674 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
35676         * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
35677         open-clipart sample, at least the correct parts of the sample).
35678         * runtime.cpp: Always initialize the matrix in item_get_render_affine
35679         otherwise we'll end up with bad random results.
35681 2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35683         * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
35684         overloads that takes strings as well as DP, GetDependencyProperty where 
35685         it's possible to specify whether the parent type is searched for the
35686         property or not, and a HasProperty method
35688 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
35690         * geometry.cpp|h: Fix function names wrt type.
35691         * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
35692         and call update_xform. This fix the "atom" sample :)
35693         * transform.cpp: Fix Rotate and Scale around a center point.
35695 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
35697         * geometry.cpp: Add more precision to types.
35698         * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
35700 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
35702         * brush.cpp: Implement Opacity for SolidColorBrush.
35703         * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
35704         access it's properties (e.g. Opacity in this case). Add uielement_
35705         [g|s]et_opacity functions.
35706         * shape.cpp: Supply the UIElement when setting up brushes.
35708 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
35710         * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
35711         half the width|height.
35713 2007-06-10  Miguel de Icaza  <miguel@novell.com>
35715         * shape.cpp (OnPropertyChanged): Implement this property for most
35716         shapes: if the property is set, we need to invalidate and
35717         repaint. 
35719         * runtime.h (FullInvalidate): A method to perform a queue to
35720         redraw the underlying region, update the bounds and queue an
35721         update for the new region.
35723         * runtime.h (Base): make destructor virtual so that base_unref can
35724         call delete (Base *) p.   Exposed by the managed code when the
35725         first base_unref ran for the first time :-)
35727         I sense a leak!
35729         * runtime.cpp (surface_attach): invalidate the areas before and
35730         after, compute the bounds using item_update_bounds, not the
35731         getbounds method directly.
35733 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
35735         * xaml.cpp: Add PathFigure[Collection]/Segments support.
35737 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
35739         * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
35740         green unlike other basic colors (red/blue at 0xFF).
35741         * xaml.cpp: Don't assert on an empty collection.
35743 2007-06-10  Miguel de Icaza  <miguel@novell.com>
35745         * runtime.cpp, runtime.h (BasicArray): New base struct for
35746         PointArray and double array, puts the count field at the beginning
35747         and avoids an extra block to be allocated (count and values are
35748         now on a single contiguous block).
35750         Introduce a refcount for the arrays, so that we can release those
35751         properly.  Due to the nature of how we copied values before we
35752         had to leak the values, when the leak was plugged, we crashed.  
35754         The refcount is there just because it was easy, we could clone if
35755         we wanted, but also I would like to keep the refcount there to
35756         ensure that the array of doubles is aligned on an 8 byte
35757         boundary. 
35759         (double_array_new, point_array_new): New methods to create the
35760         structures. 
35762         (Value): Now free the arrays.
35763         
35765 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
35767         * geometry.cpp|h: Add/complete PathFigureCollection and 
35768         PathSegmentCollection. Doesn't parse from xaml.
35769         * runtime.cpp, value.h: Add support for new classes.
35771 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
35773         * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
35774         But color rending is not yet correct in demo files.
35775         * runtime.cpp, value.h: Add support for GeometryCollection
35776         * xaml.cpp: Add support for GeometryGroup
35778 2007-06-09  Chris Toshok  <toshok@ximian.com>
35780         * animation.h, animation.cpp, value.h, runtime.cpp: add
35781         ColorKeyFrame and it's linear/discrete subclasses, as well as
35782         ColorAnimationUsingKeyFrames.
35784 2007-06-09  Chris Toshok  <toshok@ximian.com>
35786         * animation.h, animation.cpp, value.h, runtime.cpp: add the
35787         Discrete keyframes for point and double.
35789 2007-06-09  Chris Toshok  <toshok@ximian.com>
35791         * genkindcs.sh: new file, a script to generate
35792         olive/class/agclr/Mono/Kind.cs.
35794         * value.h: add marker comments so that genkindcs.sh works.  Also,
35795         remove the explicit value assignments to enum elements <
35796         DEPENDENCY_OBJECT.  there's no need for it.
35798 2007-06-09  Chris Toshok  <toshok@ximian.com>
35800         * demo.cpp (main): add in another animation, this one using
35801         keyframes, that moves a square around in a square, while animating
35802         its background color the same way as the other rectangles.
35804         * value.h, runtime.cpp: add in the keyframe types.
35806         * runtime.cpp (DependencyObject::DependenceyObject): fix a
35807         valgrind error - we shouldn't be "free"ing Values, since they're
35808         "new"ed.  Add free_value and use that for the hash table value
35809         dtor, and delete them correctly.
35811         * animation.h, animation.cpp: add a lot of the keyframe animation
35812         stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
35813         the only tested configuration, though.
35815         * clock.cpp (everywhere): guint64->TimeSpan fixing.
35816         (TimeUpdated): turns out that not only does the progress go from
35817         1.0 to 0.0 when reversed, but current_time actually goes backward
35818         as well.  this has the nice effect of actually simplifying this
35819         method substantially, since we can always compute progress as
35820         time/duration.
35822         * clock.h: typedef TimeSpan to gint64 (switching from guint64
35823         everywhere), and update the api to use this.
35825 2007-06-09  Miguel de Icaza  <miguel@novell.com>
35827         * runtime.h (value_color_from_argb): Temporary hack until we
35828         figure out how to marshal Colors properly, we are using the uint32
35829         constructor, we should figure out if this is what we want, or if
35830         we should go down the route of using doubles (C++ stores thinks as
35831         Doubles our managed API as bytes).
35833 2007-06-10  Jackson Harper  <jackson@ximian.com>
35835         * xaml.cpp: Handle the TransformGroup default collection.
35836         - Add Value's to the collection
35838 2007-06-09  Jackson Harper  <jackson@ximian.com>
35840         * transform.cpp|h: C style constructor for TransformGroup
35841         * xaml.cpp: Implement loading transform groups and transform
35842         collections
35844 2007-06-09  Jackson Harper  <jackson@ximian.com>
35846         * value.h:
35847         * runtime.cpp:
35848         * transform.cpp|h: Impplement transform groups and transform
35849         collections.
35851 2007-06-09  Jackson Harper  <jackson@ximian.com>
35853         * value.h:
35854         * runtime.cpp|h: Use the new collection classes for triggers and
35855         actions. These are unsettable, so don't register them as
35856         DependencyProperties.
35858 2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
35860         * runtime.cpp: In surface_destroy check for toplevel before unref
35861         it. 
35863 2007-06-08  Chris Toshok  <toshok@ximian.com>
35865         * animation.h: remove the huge whitespace gap after KeyTime, and
35866         remove the ifdef'ed out Nullable<T> template.
35867         
35868         * animation.cpp: remove the unused point_animation C api, and use
35869         the overloaded + operator on Color and Point when initializing
35870         "end" in GetCurrentValue for those animations.  They're looking
35871         more and more similar.
35873 2007-06-08  Chris Toshok  <toshok@ximian.com>
35875         * globally: move away from all uses of Value::u union.  switch
35876         everything to using Value::As* methods, which do typechecking and
35877         safe downcasting.
35878         
35879         * value.h: make the union private to catch anyone accessing it
35880         directly.
35882         * runtime.cpp (IsSubclassOf): return true if type == super.  Not
35883         strictly "subclass", but it makes this method a little more
35884         useful/efficient.  Add As* methods for string, point arrays, and
35885         double arrays, and add nullable As* methods for the types which
35886         don't return pointers already.
35888 2007-06-09  Jackson Harper  <jackson@ximian.com>
35890         * xaml.cpp: Parse time spans correctly.
35892 2007-06-08  Miguel de Icaza  <miguel@novell.com>
35894         * runtime.h (UIElement): Remove user_xform_origin as a field, now
35895         we pull this from the DependencyObject as it should be. 
35897         * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
35898         other properties that would trigger an invalidate/bounds
35899         recomputation. 
35901         (item_init): initialize the other properties that the managed code
35902         needs. 
35903         
35904         * shape.cpp, ffvideo.cpp: updated to use the
35905         RenderTransformOriginProperty in the computation of the center for
35906         the transformation.
35908 2007-06-08  Chris Toshok  <toshok@ximian.com>
35910         * Makefile.am (libmoon_la_SOURCES): add value.h
35912         * runtime.h, value.h: move the Value structure to value.h, since
35913         it (and its required forward decls) have grown huge.
35914         
35915         * runtime.cpp: add all the Value::As* methods, yay for CPP.
35917 2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
35919         * ffvideo.cpp (queue_data): Replaced the sound code with my newest
35920         implementation, seems to play sound correctly now.
35922 2007-06-08  Chris Toshok  <toshok@ximian.com>
35924         * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
35925         stuff here, to help relieve some of the pressure building up in
35926         animation.h/animation.cpp.
35928 2007-06-08  Chris Toshok  <toshok@ximian.com>
35930         * animation.cpp: add some skeleton code for point keyframe
35931         animations, and reduce all the Double/Point/Color Animation
35932         GetCurrentValue() methods to much the same, using LERP and the
35933         operators defined in runtime.h.
35935         * runtime.cpp (types_init): register the new keyframe types.
35937         * runtime.h: add some new animation types to Value, and add
35938         operators for +, -, and * (scalar) for Color and Point to make the
35939         animation code a little more concise.
35941         * animation.h: add some new classes/structs for use in keyframe
35942         animations.
35944 2007-06-08  Miguel de Icaza  <miguel@novell.com>
35946         * runtime.cpp, runtime.h (Collection): Rework the collection to
35947         use abstract methods (gulp), 
35949         (VisualCollection): New collection, derives from Collection, does
35950         the collection thing.
35952         (Panel.OnPropertyChanged): If our children collection is updated,
35953         take care of it here.
35955         (DependencyObject): use free instead of g_free as we are
35956         allocating strings with strdup.
35957         
35958         (Value): drop constructor that specified type, type is not part of
35959         Value.
35960         
35961         * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
35962         track of types correctly.
35964 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
35966         * brush.cpp: Fix color formats argb and rgb (too dark).
35968 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35970         * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
35971         in the integer ranges, and change Type's type hashtable to an array
35972         of types, indexed by Value::Kind. Also add Value::COLLECTION and 
35973         update Collection to use it.
35975 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
35977         * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
35978         object(s) being used.
35979         * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
35980         Points properties and some basic draw stuff too.
35982 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35984         * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
35985         Remove the Value (DependencyObject, Kind) constructor,
35986         the type of the DependencyObject can be obtained directly 
35987         from the DependencyObject itself now, and update all uses
35988         to the Value (DependencyObject) constructor.
35990 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35992         * *.h, *.cpp: Remove objectType and SetObjectType from 
35993         DependencyObject, make DependencyObject::GetObjectType virtual, 
35994         and update all inheritors of DependencyObject to not use 
35995         SetObjectType, but override GetObjectType.
35997 2007-06-08  Jackson Harper  <jackson@ximian.com>
35999         * xaml.cpp: Add some type checks to ensure we are setting child
36000         properties to legal types.
36001         - explicitly set properties value types, Value now requires this.
36002         - fix warning
36004 2007-06-08  Jackson Harper  <jackson@ximian.com>
36006         * runtime.cpp: Initialize the surface to NULL
36007         - use UIElement as the type for flags 
36009 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36011         * shape.h: Don't waste time trying to fill lines.
36012         * shape.cpp: Fix dashes support. First reset between shapes and, 
36013         second, handle cairo dislike of a single dash value of 0.0.
36015 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36017         * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
36019 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36021         * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
36022         properties as DependencyProperty. Adjust their Draw methods.
36023         * runtime.cpp: Implement point_array_from_str.
36025 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36027         * shape.cpp|h: Add DP support for StrokeDashArray (double*).
36028         * runtime.cpp|h: Add double* and Point* (array) support to Value.
36029         * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
36030         kind for brushes to avoid runtime warnings.
36032 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36034         * runtime.cpp, runtime.h: Implemented a type system that tracks
36035         types' name and parent type.
36037 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36039         * runtime.cpp (Panel): Make children a property of the panel so we
36040         can access it from the managed world.
36042         (Value): Add new constructor that takes a full type, need to
36043         discuss this with the team.
36045 2007-06-08  Jackson Harper  <jackson@ximian.com>
36047         * animation.cpp|h: Implement BeginStoryboard
36048         * runtime.cpp|h: Implement event triggers
36049         - Fire a loaded event when we first render an element
36050         * xaml.cpp: Implement parsing and loading storyboard and begin
36051         storyboard as well as event triggers and some of the property
36052         types that go with these guys.
36053         
36054 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36056         * runtime.cpp (runtime_init): Add panel_init
36058         (panel_init): Register Children property (must still create the
36059         collections, that will be a new fight).
36061 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36063         * xaml.cpp (start_element_handler): For the top element, track the
36064         type that we loaded, so we can return this to our caller (needed
36065         for the managed interface).
36067         (XamlParserInfo): track also the Value::Kind of the top_element. 
36069         (xaml_create_from_file, xaml_create_from_str): Both now can
36070         optionally return the type of the toplevel element.
36072         * runtime.cpp (Value): Switch Value to strdup/free.
36074         Use inited to prevent multiple initializations.
36076 2007-06-07  Chris Toshok  <toshok@ximian.com>
36078         * demo.cpp (main): track more of the api axing.
36080         * animation.h, animation.cpp (Storyboard::Begin): return
36081         immediately if we've already got a root clock.
36082         (globally) continue axing unused C api.
36084 2007-06-07  Chris Toshok  <toshok@ximian.com>
36086         * demo.cpp: track all the animation changes away from the C api,
36087         and also test out the from/by animation combination by making the
36088         X scaling only go From 1.0 By -0.5 (so it animates in the range of
36089         [1.0..0.5].
36090         
36091         * animation.h, animation.cpp: lots of changes - get rid of many of
36092         the animation/timeline C api calls, since they're unnecessary for
36093         the binding.  Implement the nullable property getter/setters as
36094         #defines since I didn't want to c&p all of them and make the
36095         obvious mistakes.  While I'm at it, implement the thing I needed
36096         nullable typed values for - "by" animation support.  Now you can
36097         specify any of the following combinations and get a usable
36098         animation: From+By, From+To, By, To.  You can actually just put
36099         From as well, but it won't animate (since both start end end will
36100         be the same).  The To property overrides the By property, if both
36101         are present.
36103         * runtime.h, runtime.cpp: add an overload of
36104         DependencyProperty::SetValue which takes a Value*, to enable
36105         nullable types to be set.  the existing SetValue method calls the
36106         new one with &value.
36108 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36110         * brush.cpp: Fix comment.
36111         * shape.cpp: Reduce duplication.
36113 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36115         * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
36117         * runtime.cpp (dependency_object_set_value,
36118         dependency_object_get_value): Add C# callable method calls to
36119         control the properties.
36121         (dependency_property_lookup): Add a way of find dependency
36122         properties.
36124 2007-06-07  Chris Toshok  <toshok@ximian.com>
36126         * animation.cpp (TimeUpdated): comment out some spew.
36128         * runtime.cpp (SetValue): use the copy ctor, and fix != check for
36129         current_value and value.
36130         (Value::Value): add a copy ctor, which takes care of the g_strdup
36131         for us.
36133         * runtime.h: add copy ctor for Value.
36135 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36137         * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
36139 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
36141         * geometry.cpp: #if-out transforms, it crash the xaml samples
36142         * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
36144 2007-06-07  Chris Toshok  <toshok@ximian.com>
36146         * animation.cpp: switch all the various linear interpolation
36147         expressions to using the LERP macro, and add the PointAnimation
36148         implementation.
36150         * animation.h: add PointAnimation.
36152         * runtime.h: add Value::POINTANIMATION.
36154 2007-06-07  Chris Toshok  <toshok@ximian.com>
36156         * runtime.h (Value): add COLORANIMATION to the list of types.
36157         Also, add a Kind constructor so we can use that for nullable type
36158         default values in the ::RegisterProperty calls.  That is,
36159         initializing the default to Value(Value::COLOR) gives you a null
36160         default value with the COLOR type.
36162         * runtime.cpp (Value): new Kind ctor.
36164         * animation.cpp/.h: add ColorAnimation.
36166         * demo.cpp (main): add a color animation that interpolates between
36167         Red and Blue for the SolidColorBrush.
36169 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36171         * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
36172         without a cairo_save|restore pair (or without resetting it's original
36173         value). Anyway right now it works without any of that :)
36175 2007-06-07  Jackson Harper  <jackson@ximian.com>
36177         * runtime.cpp|h: add event triggers.
36178         * xaml.cpp: parse event triggers.
36180 2007-06-07  Chris Toshok  <toshok@ximian.com>
36182         * animation.cpp/.h (Clock): initialize duration here.
36183         (TimeUpdated): instead of getting it every time through this
36184         function.
36186 2007-06-07  Chris Toshok  <toshok@ximian.com>
36188         * animation.h: make Duration::FromSeconds return numbers of the
36189         same magnitude as get_now().
36191         * animation.cpp (Clock): fix UMR.
36193 2007-06-07  Jackson Harper  <jackson@ximian.com>
36195         * xamp.cpp: Oops, not sure how that happened.  Set the property
36196         name correctly, not to the type name.
36198 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36200         * geometry.cpp|h: Apply transform. Fix default values.
36202 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36204         * animation.cpp (get_now): The time computation was wrong, there
36205         was an extra "10" in there that made all computations go astray
36206         and in particular cause the large values for ScaleY, which made
36207         getboundingbox ridiculously slow.
36209         For debugging purposes: ScaleY was being set to
36210         131472940552.95215, which came from
36211         DoubleAnimation:GetCurrentValue which was computing this value
36212         from a busted clock.
36214 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36216         * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
36217         Add basic code for the other geometry types.
36218         * runtime.cpp|h: Add basic implementation for point_from_str and 
36219         rect_from_str 
36220         * shape.h: Export some cairo helpers.
36221         * shape.cpp: Refactor drawing to reuse the code from geometry.
36222         * xaml.cpp: Add Point and Rect parsing.
36224 2007-06-07  Chris Toshok  <toshok@ximian.com>
36226         * demo.cpp: make all the animation stuff work declaratively, and
36227         test some of the different repeatbehavior and autoreverse
36228         settings.
36229         
36230         * animation.cpp: huge block of nasty code to determine our
36231         progress given the combinations of autoreverse and repeatbehavior.
36233         * animation.h: Add Duration stucture, add a few C api calls for
36234         getting/setting timeline properties.
36236         * runtime.h, runtime.cpp: add DURATION support to Value.
36237         
36238 2007-06-07  Jackson Harper  <jackson@ximian.com>
36240         * runtime.cpp|h: Some pieces of the triggers framework.
36242 2007-06-07  Jackson Harper  <jackson@ximian.com>
36244         * xaml.cpp: Handle repeat behaviors, lookup attached properties.
36246 2007-06-06  Chris Toshok  <toshok@ximian.com>
36248         * animation.cpp, animation.h: add timeline_set_autoreverse.
36250 2007-06-06  Chris Toshok  <toshok@ximian.com>
36252         * animation.h: add prototype for timeline_set_repeat_behavior.
36253         
36254         * animation.cpp (animation_init): register the RepeatBehavior
36255         property.
36256         (timeline_set_repeat_behavior): new function.
36258         * runtime.h: a better solution to enforcing types in the Value
36259         ctors - make Value (void*) private.  this gives compilation errors
36260         at all usage points where you're passing an unrecognized pointer
36261         type.  Also, add RepeatBehavior support to Value.
36263         * runtime.cpp: add repeatbehavior support to Value.
36264         
36265         * geometry.cpp: change all Value(pointer-to-struct) calls to
36266         Value(struct) calls.
36268         * transform.h: we need do define TransformGroup as a subclass of
36269         Transform, or the functions that SetValue a transformgroup fail to
36270         compile (since it's not a descendent of DependencyObject.)
36272 2007-06-07  Jackson Harper  <jackson@ximian.com>
36274         * xaml.cpp: Get object element property setting working.
36276 2007-06-06  Chris Toshok  <toshok@ximian.com>
36278         * runtime.h, runtime.cpp: add a special void* ctor to value so
36279         pointers aren't silently converted to bool (bad c++, bad!), and
36280         have that ctor output a warning message to the console, along with
36281         the likely cause.
36283         * brush.cpp: need to deref the Color* in the Value ctor.
36285 2007-06-06  Chris Toshok  <toshok@ximian.com>
36287         * animation.cpp: new dump of the animation stuff.  this is much
36288         closer in spirit and implementation to that of WPF's
36289         timing/animation system.  it's not perfect yet, but it's much,
36290         much closer.
36292 2007-06-06  Chris Toshok  <toshok@ximian.com>
36294         * runtime.h: make the point/color/rect copy constructors take a
36295         ref, not a pointer.  also, make the value contructors for struct
36296         types by-value.
36298         * runtime.cpp: make the value constructors for struct types
36299         by-value.
36301         * brush.cpp (brush_init): pass the Color by value.
36303 2007-06-06  Chris Toshok  <toshok@ximian.com>
36305         * runtime.h, runtime.cpp: move the Value implementation (for
36306         everything but the operators) to the .cpp file.
36308 2007-06-06  Miguel de Icaza  <miguel@novell.com>
36310         * runtime.h, runtime.cpp: Surface is no longer derived from
36311         Canvas, it now instead hosts a canvas, should avoid having two
36312         nested canvases for loading XAML files.
36314         demo.cpp: update.
36316         Correct computation of the bounding box for shapes and videos.
36318         * shape.cpp: Do not pop the cairo state after draw and then call
36319         extents as the computation on extents is done with the current
36320         cairo context, not the cairo context that drew the data before
36321         popping (this would show up with thick brushes).
36323         * runtime.cpp: Add 2 instead of 1, as double to integer rounding
36324         can take two values (negative and positive).
36326         * cutil.cpp: Cut and paste cairo code here, it computes the proper
36327         bounding box from the extents using the current absolute matrix. 
36329         * ffvideo.cpp (queue_data): Memory leak gone.
36331 2007-06-06  Jackson Harper  <jackson@ximian.com>
36333         * xaml.cpp: Set brush attributes.
36335 2007-06-06  Jackson Harper  <jackson@ximian.com>
36337         * runtime.h:
36338         * transform.h: Need to register this base DependencyObject for the
36339         xaml parser.
36340         * geometry.cpp: use correct value kind for registering properties
36341         * runtime.cpp: Don't be strict about the type with properties that
36342         derive from DependencyObject, we can't be too strict here, because
36343         of inheritance the registered type BRUSH could be set to
36344         SOLIDCOLORBRUSH
36345         - register some properties with the correct type
36346         
36347 2007-06-06  Jackson Harper  <jackson@ximian.com>
36349         * animation.cpp|h:
36350         * runtime.h: Staring to add triggers
36351         * shape.cpp: Use brush as our property kind
36352         
36353 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36355         * runtime.h: Add new types and SweepDirection enum.
36356         * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
36357         LineSegment classes and [g|s]etter functions.
36359 2007-06-06  Miguel de Icaza  <miguel@novell.com>
36361         * runtime.h: Move all the types into the Value::Kind enumeration
36362         so that we can have a shared type system.
36364         * demo.cpp (main): Allow loading a XAML file from the command
36365         line, for your testing pleasure.
36367         * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
36368         channels.
36370         Move to cairo to render to the screen the contents
36371         of the buffer.   ffmpeg and cairo do have the same RGBA format, it
36372         was actually the copy from this format to the screen using
36373         gdk_draw_pixbuf that failed: pixbuf expected the data in another
36374         format and there is no way to configure it.
36375         
36376         * runtime.cpp (surface_clear): use the cairo api as the surface is
36377         no longer living on the client buffer. 
36379         (surface_destroy): update
36381         (create_xlib, realized_callback, unrealized_callback): When the
36382         widget is realized, create a cairo context
36384 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36386         * runtime.h: Add Value support for Point and Rect
36387         * geometry.cpp: Implement [g|s]etters for Point and Rect properties
36389 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36391         * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
36393 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36395         * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
36396         set_prop_from_str methods since everything they handled is now
36397         moved into DependencyProperty.
36399 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
36401         * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
36402         brushes. Add getter functions for fill and stroke.
36404 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36406         * runtime.h: Call SetObjectType on Brush and SolidColorBrush
36408 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36410         * runtime.cpp, runtime.h: Remove the default_values hashtable
36411         from DependencyObject, it's redundant since the default value
36412         is stored inside the DependencyProperty anyway.
36414 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36416         * demo.cpp: Adapted to API changes.
36417         * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
36418         DependencyProperty. Add brush initialization code.
36419         * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
36420         Add Color support to Value. Call brush initialization.
36421         * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
36422         * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
36423         from DependencyObject.
36425 2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
36427         * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
36428         non-NULL before trying to scale.
36430 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36432         * brush.cpp: Fix compiler warning.
36434 2007-06-06  Jackson Harper  <jackson@ximian.com>
36436         * runtime.cpp/h: initialize xaml
36437         - Add canvas C style constructor
36438         - Make SolidColorBrush's Color public
36439         * shape.cpp: Comment out the set_prop... stuff, this code won't be
36440         used anymore, now that the xaml parser is using dependency objects
36441         to set properties.
36442         * animation.cpp|h:
36443         * transform.cpp|h: Add some C style constructors
36444         * brush.cpp: Create colors from a string instead of solid brushes
36445         * xaml.cpp: Add in a known element tree, and move property setting
36446         into the xaml code, also added code for setting properties with
36447         property element syntax
36448         
36449 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36451         Add type checking on SetValue, RegisterProperty to avoid
36452         mistakes. 
36453         
36454         * runtime.cpp (SetValue): Add simple type checking
36455         (Register): Ensure that no empty values are passed. 
36457         * runtime.h (DependencyObject): events, remove unused field.
36459 2007-06-05  Chris Toshok  <toshok@ximian.com>
36461         * runtime.cpp: we need to maintain another hash table for
36462         DependencyProperties so we can return the actual property, not the
36463         default value, which is what GetDependencyProperty needs to do.
36464         (DependencyObject::FindName): implement this by either trying to
36465         use the namescope on this object or the global_NameScope (rather
36466         suboptimal, it's supposed to 'walk the logical tree' according to
36467         msdn).
36469         partially implement NameScope.
36471         * runtime.h: add NameScope, and add a uint64 Value.  Also add
36472         FindName on DependencyObject.
36474 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36476         * shape.cpp|h: Add Shape's thickness and some dash support. Add more
36477         [g|s]etters for Shape using DependencyProperty.
36478         * demo.cpp: Add thickness and dashes to the rectangles.
36480 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36482         * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
36483         functions to retrieve the height and width of shapes (values defined
36484         in FrameworkElement).
36485         * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
36486         and Width properties.
36487         * demo.cpp: Adjust to API changes.
36489 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36491         * shape.cpp: Remove (now) useless properties in Line.
36493 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36495         * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
36496         now have an absolute affine set for us beforehand.
36498         * runtim.cpp: on update_xform call the parent ::get_xform_for to
36499         obtain the base affine transform to use.
36501 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36503         * geometry.cpp|h: Use DependencyProperty for properties.
36504         * transform.h: Protect.
36506 2007-06-05  Chris Toshok  <toshok@ximian.com>
36508         * runtime.h: call SetObjectType where we need it.
36510         * shape.h: same.
36511         
36512         * geometry.h: same.
36514 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36516         * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
36517         by valgrind
36519         * runtime.cpp (item_set_transform): This routine was doing nothing
36520         but doing an invalidate of the region, updating the transform,
36521         updating the bounding box and re-invalidating the new area.   Move
36522         that logic elsewhere (it was also ignoring the affine parameter
36523         anyways). 
36525         Unify user_xform with the RenderTransform dependency property, now
36526         we always have a static absolute transformation in the UIElement. 
36528 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36530         * shape.cpp|h: Update shape_init with correct values and implement
36531          path_[g|s]et_data.
36533 2007-06-05  Chris Toshok  <toshok@ximian.com>
36535         * animation.cpp (ClockTimeChanged): use the instance variety of
36536         GetDependencyProperty.
36538         * runtime.cpp (GetDependencyProperty): just call the static
36539         variety with our objectType.
36540         (SetObjectType): method to enable subclasses to set the object
36541         type.
36543         * runtime.h: add DependencyObject::SetObjectType, as well as the
36544         instance version of DependencyObject::GetDependencyProperty.
36546         * transform.h: call SetObjectType to identify this object.
36548 2007-06-05  Chris Toshok  <toshok@ximian.com>
36550         * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
36552 2007-06-05  Chris Toshok  <toshok@ximian.com>
36554         * runtime.h (Canvas): declare our dependencyproperties here.
36556         * runtime.cpp (canvas_init): actually assign the properties.
36558 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36559         
36560         * runtime.cpp, runtime.h: Implement a DependencyProperty::
36561         GetDependencyProperty.
36563 2007-06-05  Chris Toshok  <toshok@ximian.com>
36565         * runtime.cpp (OnSubPropertyChanged): remove the event handler for
36566         the render transform and use OnSubPropertyChange instead.
36567         (item_set_render_transform): clean this up substantially - the
36568         property system handles all the "event" stuff now.
36569         (item_get_render_transform): we need a getter now that this uses
36570         the depprop stuff.
36571         (NotifyAttacheesOfPropertyChange): new method, call
36572         OnSubPropertyChanged with both the attachee's property (the thing
36573         storing 'this') and the subproperty that changed.
36574         (SetValue): complicate the attachee stuff a bit, since we need to
36575         store both the object and the property it's storing the value in.
36576         (item_init): initialize RenderTransformProperty.
36578         * runtime.h: make UIElement subclass from DependencyObject. This
36579         flattens the hierarchy some from SL (which has Visual in between,
36580         but we have no Visual.)
36582         * transform.cpp (OnPropertyChanged): call
36583         NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
36585 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36587         * demo.cpp: Updated to use rectangle_set_radius_[x|y]
36588         * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
36589         * xaml.cpp: Updated for API change.
36591 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36593         * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
36594         from DependencyObject.
36595         * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
36597 2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
36599         * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
36600         we simply cannot play sound (or maybe there is no sound), either
36601         way, don't try to dereference the audio_codec pointer if it is
36602         NULL. Also wrapped audio setup in an #ifdef
36604 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36606         Implement the OnPropertySet stuff, builds on Toshok's first pass.
36608         Next stage: discuss with Toshok the migration to this awesome
36609         framework from Events ;-)
36610         
36611         * runtime.cpp (SetValue): when adding dependencyobjects track on
36612         the attached object the ownership.
36614         Notify all containers of a property change.
36616         * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
36617         use the property notification system for these.
36619         * runtime.h (DependencyObject): Add a "attached_list" gslist to
36620         keep track of all the objects where this particular
36621         DependencyObject has been attached to, to provide OnPropertyChange
36622         notifications (not hooked up yet).
36624         (Value): Introduce DependencyObject constructor.
36626 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36628         * shape.cpp|h: Started moving properties to DependencyObject. Added
36629         Path.
36630         * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
36631         * runtime.cpp: Added calls to shape_init and geometry_init
36632         * runtime.h: Added Rect structure and new DependencyObject types for
36633         shapes and geometry.
36634         * Makefile.am: Added geometry.cpp|h to source files.
36636 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36638         * runtime.h: initialize Value to zero on construction.
36640 2007-06-05  Chris Toshok  <toshok@ximian.com>
36642         * demo.cpp: abstract the cairo transformations away by using
36643         RotateTransforms.. and this is probably going to annoy some
36644         people, but make the normally stationary elements bounce between
36645         smaller and larger.
36647         * animation.h: make Clock subclass from DependencyObject.
36649         * animation.cpp (animation_init): assign the properties, don't
36650         just call Register.
36652         also, track the EventObject method name change.
36654         * runtime.cpp (item_set_render_transform): new method.  unhook the
36655         old transform and hook up the new one.  also, explicit set our
36656         transformation here.
36657         (SetValue): make this only do the work (and more importantly only
36658         call OnPropertyChanged) if the value is different.
36660         * runtime.h: shorten the names of the EventObject methods.  Add
36661         operator== and operator!= to Value.  Add an EventObject to
36662         DependencyObject to give us rudimentary event handlers.  Add the
36663         render_transform "higher-level" transform into to UIElement.
36665         * transform.h: add the OnPropertyChanged override and rename
36666         transform_get_value to transform_get_transform.
36668         * transform.cpp (transform_init): oops.  we need to actually
36669         assign the properties.
36670         (transform_get_transform): indent.
36671         (OnPropertyChanged): override this method to emit
36672         "TransformChanged".
36674 2007-06-04  Chris Toshok  <toshok@ximian.com>
36676         * Makefile.am (libmoon_la_SOURCES): add animation and transform to
36677         the build.
36679         * runtime.h: flesh out Value some, adding BOOL (has to be C++
36680         bool, not gboolean, or else it conflicts with int32), INT32,
36681         INT64, and STRING (char*).
36683         * runtime.cpp (runtime_init): call animation_init and
36684         transform_init.
36686         * animation.cpp, animation.h, transform.h, transform.cpp: get
36687         these using the new dependency object/value foo, and get them
36688         compiling.
36690 2007-06-04  Miguel de Icaza  <miguel@novell.com>
36692         * runtime.h: Make the "Base" refcounting class the base for
36693         DependencyObject. 
36695         * ffvideo.cpp: Set audio initialization to zero for now, so we can
36696         continue debugging.
36698         * runtime.cpp (Canvas): override render, in preparation for using
36699         attached properties.   I get the feeling am going to regret not
36700         keeping the top/left attached properties somewhere else.
36702         (Value): introduce the discriminating union for values as
36703         discussed on irc.
36704         
36705         (DependencyObject): use lower case name for properties.
36706         Take Value * instead of void *, this is so we can represent NULL
36707         values (is this a good idea Chris, or do we want to have a
36708         Value.Type.NULL enumeration value?
36710         Update hash table creation to g_free the result on hash table
36711         update and removal.
36713         (Event): Update indentation to be Linux-like instead of GNU like.
36715 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
36717         * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
36718         to create them. Replace the "old" C1 constant in Ellipse::Draw with 
36719         ARC_TO_BEZIER (now that I know where it comes from ;-)
36721 2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
36723         * ffvideo.cpp (queue_data): Got sound kinda sorta working...
36725 2007-06-04  Jackson Harper  <jackson@ximian.com>
36727         * xaml.cpp: Give elements a type
36729 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36731         * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
36733 2007-06-04  Chris Toshok  <toshok@ximian.com>
36735         * animation.h, animation.cpp: initial pass at some of the
36736         animation stuff.  doesn't build yet.
36738 2007-06-04  Chris Toshok  <toshok@ximian.com>
36740         * runtime.cpp, runtime.h: add EventObject, a c++ only base class
36741         for managing events.
36743 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
36745         * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
36746         and added Draw methods to Polygon and Polyline.
36747         * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
36748         and match changes in header file.
36750 2007-06-04  Jackson Harper  <jackson@ximian.com>
36752         * shape.cpp/h: width and height are properties of the
36753         FrameworkElement.
36755 2007-06-04  Jackson Harper  <jackson@ximian.com>
36757         * shape.cpp/h: add ellipse_new
36758         - set width/height on ellipses (ellipsi ?) and draw them.
36759         * xaml.cpp: create ellipses, get zorder correct
36761 2007-06-04  Jackson Harper  <jackson@ximian.com>
36763         * xaml.cpp: put in character data functionality, eventually we
36764         will need to add FrameworkElement methods for setting the default
36765         content element. See
36766         http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
36767         for more info on content properties.
36769 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
36771         * demo.cpp: Include shape.h and use a rounded-rectangle
36772         * runtime.h: Added FillRule and moved out Shapes.
36773         * shape.h: New. Moved all shapes from runtime.h and added new ones.
36774         * shape.cpp: Added Polygon and Polyline.
36775         * xaml.cpp: Include shape.h
36776         * Makefile.am: Add shape.h
36778 2007-06-04  Chris Toshok  <toshok@ximian.com>
36780         * transform.cpp, transform.h: initial code for the transform
36781         objects.  doesn't compile yet.
36783 2007-06-04  Jackson Harper  <jackson@ximian.com>
36785         * demo.cpp: fix typo
36787 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
36789         * demo.cpp: Fix for API changes.
36790         * runtime.h: Add FrameworkElement, other Shape properties and move
36791         around some properties to match the managed definitions.
36792         * shape.cpp: Add setters for new Shape properties and move properties
36793         parsing to match managed definitions.
36794         * xaml.cpp: Fix for API changes.
36796 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
36798         * shape.cpp: Don't typecast doubles into ints.
36800 2007-06-04  Jackson Harper  <jackson@ximian.com>
36802         * runtime.h:
36803         * xaml.cpp: Implement function that allows you to load xaml from a
36804         chunk of text.
36805         * demo.cpp: add a very small xaml demo
36807 2007-06-04  Jackson Harper  <jackson@ximian.com>
36809         * xaml.cpp: remove old no longer used function.
36810         - track whether or not we are adding to a panel instead of surface
36811         * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
36813 2007-06-04  Jackson Harper  <jackson@ximian.com>
36815         * shape.cpp: Add new methods to allow shapes to have their
36816         properties filled in from text values.
36818         * brush.cpp: Start work on allowing solid color brushes to be
36819         created from strings.
36821         * runtime.cpp: stub in methods for setting properties on canvas
36822         and UIElements (these had some meat but I am removing it now that
36823         some of the names are updated, will put back later).
36825         * runtime.h: add some methods and functions for XAML parsing.
36827         * xaml.cpp: Initial implementation of the XAML parser.
36829 2007-06-03  Miguel de Icaza  <miguel@novell.com>
36831         * runtime.cpp (Collection, Panel): The beginning of an API to
36832         encapsulate collections that we will expose to the unmanaged
36833         world.  
36835         This should be the backend for the base collection class in agclr
36836         for the strongly typed types.   
36838         The idea is to have the MS.Internal.Collection<T> be a proxy that
36839         contains an IntPtr pointer to the C++ Collection instance and map
36840         the various add/remove methods to it.
36842         The immediate goal is to be able to do from C#:
36844                 Rectangle r = new Rectangle ();
36845                 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
36846                 Canvas.Children.Add (r);
36848 2007-06-02  Miguel de Icaza  <miguel@novell.com>
36850         Implement support for the render origin.
36851         
36852         * runtime.cpp (item_invalidate): add one to cope with the rouding
36853         from floats to ints (fixes some trailing junk).
36855         Item: redo the affine transformation setup to support both the
36856         render_transform_origin property and avoid recomputing all of this
36857         on each repaint request.
36859         * ffvideo.cpp: Changed the code to do the actual video decoding on
36860         the main thread so we can put all the video and audio in the
36861         queues before we start rendering.
36863         Failed attempts at getting audio to work.
36865         * Everywhere: renamed Item to UIElement to better match the actual
36866         class hierarchy that we will be exposing.
36868 2007-06-01  Jackson Harper  <jackson@ximian.com>
36870         * shape.cpp: Fix typo.
36872 2007-06-01  Miguel de Icaza  <miguel@novell.com>
36874         * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
36875         notify a special function (callback_video_inited).  Makes me
36876         wonder if I should do the same for the new-frame call
36878         Initialize the cairo surface on the callback_video_inited routine
36879         instead of doing this on the decoder thread (that was a mistake).
36881         This solves the misterious case of the video that randomly did not
36882         show up.
36884 2007-05-29  Miguel de Icaza  <miguel@novell.com>
36886         * video.cpp (load_next_frame): reimplement the video play back
36887         logic so that it will now properly paint the proper frame on the
36888         screen as needed.
36890         Add logic to skip frames if video is playing back too slowly, and
36891         to resume playback when new frames are ready.
36893         Currently its computing the delay using the n_frame_rate field
36894         (which no sample uses, but I could not find any other way of
36895         estimating the frame rate other than this.
36897         It works at least with some sample streams that I have with 30 fps
36898         and 15 fps.
36900         * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
36901         and handle exposes in the runtime, not in the demo.   Show the
36902         widget (thats why I was not getting the expose events on the
36903         widget, duh). 
36905 2007-05-26  Miguel de Icaza  <miguel@novell.com>
36907         * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
36909         (Shape): introduce reusable drawing framework for shapes, not
36910         complete. 
36911         
36912         (Line): introduce second user besides rectangles. 
36914         Remove agg test code.
36916         (Group::getbounds): implement.