fixed the build
[moon.git] / src / ChangeLog
blobdf966131123922ec327b670892d500b3ddc38be0
1 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3         * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
4         seeking or not, keep a counter, since we may end up with multiple
5         pending seeks, and we only want to restart playback when the last seek
6         finishes. Also call MediaElement's seek method so that we do everything
7         we must do when a seek happens. Fixes our media test #153.
8         
9         * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
10         matter which state we're in. Used by MediaPlayer to seek when we open
11         a media.
12         
13         * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
14         the first thing we do after opening a media is seeking, which would
15         invalidate whatever buffer we create. When the first seek has finished,
16         it will request a buffer fill. Also remove the optimization that was
17         joining multiple seeks into one (the last one), since there was no way
18         MediaPlayer could know which seek finished when the SeekCompleted event
19         was raised.     We now do all seeks, in the correct order.
20         
21         * playlist.cpp|h: Remove the same optimization here, have a list of pending
22         seeks and execute them in order.
24         r: spouliot
26 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
28         * pipeline.cpp: Add a workaround for having invalid codecs in the 
29         expected codec location - with this workaround the user will get
30         a new codec download dialog.
32         r: sde
34 2009-10-26  Sebastien Pouliot  <sebastien@ximian.com>
36         * deployment.cpp: Match SL appdomain friendly name
38         r: sde
40 2009-10-23  Chris Toshok  <toshok@ximian.com>
42         * runtime.cpp (Surface::IsVersionSupported): report that we
43         support versions 3.0.x, because the alternative is not even
44         attempting to execute many xaps.
46         r: lewing
48 2009-10-23  Chris Toshok  <toshok@ximian.com>
50         * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
51         Deployment::GetCurrent()->LayoutUpdated() instead of walking an
52         updated_list.
54         * frameworkelement.h (class FrameworkElement): remove
55         LayoutUpdatedEvent.
57         * deployment.h,cpp (Deployment::LayoutUpdated): move the
58         FrameworkElement event here, since any layout updating causes
59         every LayoutUpdated handler to be called, even for those elements
60         not in the tree.
62         * type-generated.cpp: regen
64         r: lewing
66 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
68         * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
69         a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
70         specify false for this (which won't prevent SL from trying to seek on
71         the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
73         * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
75         r: sde
77 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
79         * uri.cpp (flatten_path): keep track of ../ parts if there's no
80         previous part to drop, or if the previous part is ../ too.
82         r: toshok
84 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
86         * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
87         required with jeff's latest patch
89         r: rolf
91 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
93         * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
95         r: sde
97 2009-10-22  Jeffrey Stedfast  <fejj@novell.com>
99         * uri.cpp (flatten_path): New helper function to flatten a path
100         (e.g. get rid of extra /'s, ./'s, and handle ../'s).
101         (Parse): If the Uri is absolute, flatten the path.
102         (Combine): Simplified by just concatenating the old path, the
103         relative_path, and then calling flatten_path(). Also, thanks to
104         Stephane's investigations, fixed the fact that a relative_path
105         starting with '/' does not combine at the root like previously
106         thought.
108         r:sde
110 2009-10-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
112         * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
113         that we can allow DestroyedEvent during shutdown. This fixes a crash
114         with namescopes - they rely on DestroyedEVent to properly detach from
115         objects.
117         r: alan
119 2009-10-21  Stephane Delcroix  <sdelcroix@novell.com>
121         * uri.cpp: url_encode the whitespaces too,
123         r: jeff
125 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
127         * pipeline-ui.cpp: Include stdlib.h to fix release builds.
129         r: alan
131 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
133         * pipeline.cpp: GetMediaReffed might return null, add some null checks
134         for this.
136         r: toshok
138 2009-10-20  Andreia Gaita  <avidigal@novell.com>
140         * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
141         calls. If it's called while we're in the emitting loop, save the new
142         ones on another list so they'll get invoked on the next tick. All other
143         tick calls added via AddTickCall get invoked asap.
145         * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
146         nodes to an existing queue instead of creating a new one
148         * cbinding.[h|cpp]: regen
150         r: rolf
152 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
154         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
155         pending_stream field if we're stopped or if we processed the returned
156         frame. Specifically do not clear the pending_stream field if we're
157         not executing on a media thread (since when the method is called again on
158         the media thread we might end up dropping the frame) - and it's a race
159         condition that may cause crashes.
161         r: spouliot
162         
163 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
165         * runtime.cpp|h: Add a DetachWindow which detaches the surface from
166         the window and prevents the window from getting destroyed when the
167         surface is destroyed. Also add a few protections against having a
168         null window, which we may get when the window has been detached.
170         r: spouliot
172 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
174         * type.h:
175         * type.cpp
176         * type.h.in: Added a LookupEvent method that takes a deployment
177         parameter so that it doesn't try to use Deployment::GetCurrent. This
178         is required when we need to lookup events for deployments which are
179         not the current one (when re-creating a PluginInstance since its
180         source has changed for instance).
182         r: spouliot
184 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
186         * window-gtk.cpp:
187         * window.cpp|h: Detach the window from the deployment by not storing it,
188         use Surface' deployment instead. Also add a convenience SetCurrentDeployment
189         method.
191         * value.cpp:
192         * textblock.cpp:
193         * provider.cpp:
194         * popup.cpp:
195         * glyphs.cpp:
196         * downloader.cpp:
197         * control.cpp:
198         * canvas.cpp:
199         * audio.cpp: 
200         * dependencyproperty.cpp: Include deployment.h, required now that
201         window.h doesn't include it.
203         * src.mdp:
204         * Makefile.am: Updated with window.cpp.
206         r: spouliot
208 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
210         * deployment.cpp|h: Moved all managed code handling from PluginInstance
211         here.
213         r: spouliot
215 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
217         * codec-version.h.in: Bump ABI to 16.
219 2009-10-19  Andreia Gaita  <avidigal@novell.com>
221         * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
222         clearing the original
224         * timemanager.cpp: Make a copy of the queued tick calls and use that
225         instead of the live queue. Callbacks may insert new calls into the
226         queue, and those should be invoked on the next tick, not on the
227         current one. Fixes drt #244
229         r: rolf
231 2009-10-19  Andreia Gaita  <avidigal@novell.com>
233         * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
235         r: rolf
237 2009-10-15  Alan McGovern  <amcgovern@novell.com>
239         * grid.cpp: Add comment explaining why the InvalidateMeasure
240           call is there.
242 2009-10-15  Alan McGovern  <amcgovern@novell.com>
244         * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
245           UIElement invalidates its measure. r: lewing.
247 2009-10-15  Stephane Delcroix  <sdelcroix@novell.com>
249         * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
250         Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
252         r: rolf
254 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
256         * type.h:
257         * value.h:
258         * cbinding.h:
259         * type-generated.cpp: Regenerated.
261         r: sde
263 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
265         * pipeline.cpp: A printf sneaked in.
267         r: sde
269 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
271         * uri.cpp:
272         * mp3.cpp:
273         * runtime.h:
274         * clock.cpp:
275         * audio.cpp:
276         * fonts.cpp:
277         * timeline.cpp:
278         * playlist.cpp:
279         * pipeline.cpp:
280         * downloader.cpp:
281         * audio-alsa.cpp:
282         * audio-pulse.cpp:
283         * mediaplayer.cpp:
284         * timemanager.cpp:
285         * pipeline-asf.cpp:
286         * mediaelement.cpp:
287         * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
289         r: andreia
291 2009-10-14  Andreia Gaita  <avidigal@novell.com>
293         * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
294         they're stopped and not restarted on the same tick
296         r: toshok
298 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
300         * mp3.cpp:
301         * pipeline-asf.cpp: Updated according to API changes.
303         * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
304         do nothing in that case. This way we don't hit the warning just below
305         about not being in the media thread.
306         
307         MediaThreadPool::IsThreadPoolThread: Return the value we calculated, 
308         not a hardcoded 'true' value.
309         
310         Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
311         until the frame has been returned). Also don't request a frame if we're
312         seeking (just do nothing, when the seek completes new frames will be
313         requested).
314         
315         Change seeking to store the last seeked-to pts in the demuxer
316         when marshalling seeks from the main thread to the media thread. This
317         ensures that if two seeks are enqueued quickly, we won't seek twice, only
318         to the last (there is also another potential issue: if the first seek
319         couldn't complete because we were waiting for a frame, we could end up
320         seeking in the wrong order).
321         
322         * deployment.cpp: Delete the local variable, not the instance field
323         we just nulled out.
325         r: spouliot
327 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
329         * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
330         if we've been disposed, don't print a warning in this case. Also don't
331         get the media until we've passed the write_fd check - this way we don't
332         leak refs if the check fails.
334         r: spouliot
336 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
338         * pipeline.cpp: Remove more output which can happen during normal
339         executing (shutdown in particular for these cases).
341         r: spouliot
343 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
345         * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
346         method directly, it's called on the main thread, instead marshal the
347         Dispose to the media thread. Also reset error_reported, otherwise
348         Initialize will just bail out immediately.
350         r: spouliot
352 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
354         * pipeline.cpp: Download progress can actually go down (if the file
355         size goes down). So don't print a scary warning.
357         r: spouliot
359 2009-10-13  Jeffrey Stedfast  <fejj@novell.com>
361         * textbox.cpp (TextBoxView::Layout): Set dirty to false after
362         laying out the text.
363         (TextBoxView::Render): Don't do Layout here.
365         r: lewing
367 2009-10-09  Chris Toshok  <toshok@ximian.com>
369         * control.cpp (Control::OnPropertyChanged): drt #438 shows that
370         you can set Template = null to clear the template's visual tree.
371         bizarre, but true.
372         (Control::ClearTemplate): set template_root to NULL after we
373         remove it.
375         r: jackson
377 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
379         * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
380         which may happen quite often and in common code paths.
382         r: alan
384 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
386         * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
387         invoking the property changed handler the values we have might have
388         gotten deleted. Clone them before calling the property changed handler
389         so that we don't access deleted values. Makes #544211 not crash.
391         r: alan
393 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
395         * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
396         when returning early.
398         r: alan
400 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
402         * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
404         * dependencyproperty.g.cpp: Regenerated.
406         r: alan
408 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
410         * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
412         r: spouliot
414 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
416         * audio.cpp: AudioSource::Dispose: lock around field accesses,
417         and move the fields into a local variables so we can clean up
418         with the mutex unlocked.
420         r: spouliot
422 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
424         * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
425         end up with a null stream, so don't spam the console with warnings.
427         r: spouliot
429 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
431         * mediaplayer.cpp: Open: seek to the initial pts.
433         * playlist.cpp: When we re-open a media after stopping it, don't do
434         it async since we might end up doing things in the wrong order.
436         Fixes #476180.
438         r: spouliot
440 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
442         * deployment.cpp|h: Make shutdown an async/iterative process to ensure
443         we don't accidentally get deadlocked while shutting down. Change shutdown
444         sequence to first ensure no media threads are running, then do managed
445         shutdown unloading the appdomain, and do nothing more until the appdomain
446         has unloaded successfully (calling mono_domain_finalize which we used to is
447         very wrong since it assumes all managed threads have been aborted, when only
448         mono_domain_unload actually aborts threads - we ended up executing code in
449         other managed threads with freed objects everywhere). Added an
450         AppDomainUnloadedEvent so that the plugin can know when the appdomain has
451         been unloaded and free itself. Dispose the types when the deployment is
452         disposed, and delete them types when the deployment is destroyed. This way we
453         make sure that the types are available until all the objects have been
454         deleted. This also fixes different code paths / deletion points
455         depending on whether we built with object tracking or not. This also
456         removes the need for the is_dead variable. Maintain a counter of the number of
457         deployments alive so that we know when runtime can be shut down.
459         * dependencyobject.cpp: Don't emit events while we're shutting down.
460         Deployment::is_dead is dead now, remove checks, replaced with Deployment::
461         IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
462         thread.
464         * dependencyproperty.cpp|h: Add a Dispose method which clears out any
465         refs the default value might have (but keep a default value, we depend
466         in some places on having a default value).
468         * type.cpp: Dispose: call Dispose on the DP.
470         * type.h:
471         * type.h.in: Remove 'disposed' field: no longer needed.
473         r: andreia
475 2009-10-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
477         * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
478         This ensures that we don't keep the (default) 5s buffer of media in
479         memory while stopped. Add lots of checks for a stopped media so that
480         we don't refill the buffer after clearing it.
481         Makes MS DRT #238, #239 and #244 require a lot less memory.
483         * playlist.cpp: Call Play on the media too when we start playing.
485 2009-10-05  Jeffrey Stedfast  <fejj@novell.com>
487         * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
488         silently drop repeated key-press events.
490         r: spuliot
492 2009-10-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
494         * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
495         issue where we'd create more MediaFrames than the delayed unref
496         mechanism could free, so we'd run out of memory.
498         r: spouliot
500 2009-10-05  Alan McGovern  <amcgovern@novell.com>
502         * cbinding.h:
503         * cbinding.cpp:
504         * dependencyobject.h:
505         * dependencyobject.cpp: Store the starting_generation and
506           only_unemitted flags on the EmitContext so that the values
507           are used when we call DoEmitCurrentContext from managed
508           code. r: toshok
510 2009-10-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
512         * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
513         if we there is already a request pending.
515         r: spouliot
517 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
519         Gets drt #412 a bit closer to passing.
521         * textblock.cpp (TextBlock): Initialize our own FontDescription
522         needed so we can tell the layout engine what the base font to use
523         for calculating BlockLineHeight proportions.
524         (TextBlock): Delete our FontDescription.
525         (UpdateFontDescription): New method to update our own
526         FontDescription and notify the layout engine of any changes.
527         (UpdateLayoutAttributes): Call UpdateFontDescription().
528         (UpdateFontDescriptions): Same.
530         * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
531         distance to the baseline given the base font.
532         (TextLayout::OverrideLineHeight): Don't check line_height against
533         NAN, check it against 0 instead. NAN means that we use the
534         containing TextBlock's font height as a base.
535         (TextLayout::LineHeightOverride): New method to figure out the
536         line height value to use when using BlockLineHeight strategy.
537         (TextLayout::DescendOverride): Given the overridden LineHeight,
538         calculate the baseline offset using the proportional distance
539         calculated in SetBaseFont().
540         (TextLayout::Layout): Instead of using 0 as the overridden line
541         descent, use the value calculated from DescendOverride(). Also use
542         LineHeightOverride() instead of line_height directly.
544         r: spouliot
546 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
548         * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
549         disposed, that ensures that the queue is cleared up even if the
550         MmsPlaylistEntry itself leaks.
552         r: spouliot
554 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
556         * pipeline-asf.cpp: Fix some potential leaks.
558         r: spouliot
560 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
562         * fonts.h (class TextFont): Make some of the getters const.
564         r: shana
566 2009-10-01  Andreia Gaita  <avidigal@novell.com>
568         * utils.cpp: if there's no Application instance, use the root temp
569         dir to store, and track the created path directly on deployment so
570         it can be cleared up in the end.
572         r: spouliot
574 2009-10-01  Alan McGovern  <amcgovern@novell.com>
576         * runtime.cpp: WalkTreeForLoaded has already been called on
577           this element as part of the previous call to AttachLayer.
579 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
581         * dependencyobject.h: Make GetUnsafeDeployment available always, media
582         code might use it to get the deployment of the object instead of the
583         current deployment.
585         * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
586         deployment instance to wait until there is nothing more executing in 
587         the thread pool regarding that deployment.
589         * deployment.cpp|h: Maintain a list of all the Media instances created
590         and dispose them when the deployment shuts down.
592         r: spouliot
594 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
596         * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
597         some code duplication in all our Emit methods.
599         r: alan
601 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
603         * audio.cpp: Dispose: make sure the audio really stops.
605         r: alan
607 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
609         * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
610         thread-safe, since managed code may clear them up on the finalizer
611         thread.
613         * cbinding.cpp|h: Regenerated.
615         r: alan
617 2009-09-30  Alan McGovern  <amcgovern@novell.com>
619         * runtime.cpp: If the surface has been zombified, don't handle
620           the plugin focus in/out event. r: toshok
622 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
624         * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
625         null checks.
627 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
629         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
630         decoding async. This ensures we don't reenter managed code when the
631         frame comes from MediaStreamSource.
633         r: spouliot
635 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
637         * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
638         for the queue, it may blow up when the process shuts down because the
639         media thread might still be running when the list is destroyed causing
640         random crashes.
642         r: spouliot
644 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
646         * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
647         specifying the max number of threads, and use static memory for all of
648         them.
650         r: spouliot
652 2009-09-30  Andreia Gaita  <avidigal@novell.com>
654         * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
655         paths that get created in applications, so they can be released even
656         if the Application instance leaks.
658         * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
659         which keeps the base temp path of all files and resources for an
660         application.
662         * utils.cpp: use the Application GetResourceRoot as a base path for
663         all temporary files.
665         r: alan
667 2009-09-30  Alan McGovern  <amcgovern@novell.com>
669         * runtime.cpp: When the plugin gets focus or loses focus, we
670           have to emit the corresponding event on the currently
671           focused element - not on the TopLevel. Note that if we focus
672           out of the plugin, we emit LostFocus on the currently
673           focused element but do *not* set the current focused element
674           to null. Lastly when handling the mouse down event, we
675           should not try to focus elements in the hitlist from the
676           mouse click. This mostly fixes DRT 745. r: rolf
678 2009-09-30  Alan McGovern  <amcgovern@novell.com>
680         * textbox.h:
681         * validators.h:
682         * validators.cpp: IsInputMethodEnabled defaults to true and
683           also needs a validator to ensure that it's only set on 
685         * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
686           true and also needs a validator to ensure that it's only set
687           on TextBoxes
689 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
691         * pipeline.cpp: Reset more state when a seek completes.
693         r: alan
695 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
697         * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
698         call to MediaThreadPool::AddWork, since otherwise we have a race
699         condition between setting the is_disposed variable to true and adding
700         the work.
702         r: alan
704 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
706         * mediaelement.cpp: Stop immediately when the we're deattached from the
707         visual tree.
709         r: andreia
711 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
713         * deployment.h: Fix typo in comment.
715 2009-09-29  Chris Toshok  <toshok@ximian.com>
717         * dependencyobject.cpp (EventObject::StartEmit): when we copy the
718         list of closures to invoke, don't copy ones that are
719         pending_removal.  This fixes the crash due to re-entering in drt
720         502 in a way that doesn't break the existing plugin behavior.
721         (EventObject::DoEmitCurrentContext): revert the
722         !closure->pending_removal change that caused plugin event listener
723         breakage in the xaml tests.
725         r: andreia
727 2009-09-29  Larry Ewing  <lewing@novell.com>
729         * border.cpp (InsideObject): improve Border::InsideObject to
730         handle the actual drawn bounds.
732         Fixes #2022.
734         r: jackson
735         
736 2009-09-29  Jeffrey Stedfast  <fejj@novell.com>
738         * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
739         to be more consistent with the managed method names. Don't set
740         Handled to true, since anything that makes it this far should also
741         bubble up.
743         r:toshok
745 2009-09-28  Andreia Gaita  <avidigal@novell.com>
747         * application.cpp, bitmapimage.cpp,
748           file-downloader.cpp, fontmanager.cpp,
749           pipeline-ui.cpp, pipeline.cpp,
750           utils.cpp: uniform usage of glib io calls
752         r: toshok
754 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
756         * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
757         the current deployment as it was when returning from it.
759         r: lewing
760         
761 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
763         * mediaelement.cpp|h: When receiving markers from the pipeline, store them
764         in a general list and only move them into a TimelineCollection just before
765         checking if they are to be emitted. This avoids locking a mutex during a
766         potentially large time, as well as trying to emit an event on the pipeline
767         thread (collection changed event when adding markers to the
768         TimelineCollection).
770         r: spouliot
772 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
774         * audio.cpp: Follow refcounting rules with the AlsaPlayer.
776         r: alan
778 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
780         * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
781         locked. CreateInstance: Add a couple of comments.
783         r: alan
785 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
787         * deployment.cpp|h: No need for the downloaders field to be a pointer
788         when it'll always exist. Move the downloader abort code to the node's
789         destructor, this way we ensure that the downloader is always aborted.
790         Reinitialize: clear the downloaders list instead of creating a new one
791         (and leaking the previous one).
793         r: spouliot
795 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
797         * audio.cpp|h: AudioPlayer can't derive from EventObject, since 
798         EventObject is tied to a particular deployment, while AudioPlayer is
799         process-wide. Implement simple refcounting in AudioPlayer to work
800         around this and keep the old behaviour.
802         * type.h:
803         * value.h:
804         * cbinding.h:
805         * type-generated.cpp: Regenerated.
807         r: alan, spouliot
809 2009-09-28  Chris Toshok  <toshok@ximian.com>
811         * frameworkelement.h|cpp (class FrameworkElement): remove the
812         empty SetValueWithErrorImpl implementation.
814         r: jeff
816 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
818         * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
819         MS DRT #244 (and possibly others) where we'd end up raising the
820         MediaOpened event while still parsing xaml (the test didn't have time
821         to attach an handler to the event before it was raised).
823         r: spouliot
825 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
827         * mediaelement.cpp: Stop when we're detached. This helps with a
828         resource "leak": if the user code just removes the mediaelement from
829         the visual tree and forgets about it, we'd continue playing until the
830         gc kicks in and finds out it should free the mediaelement.
832         r: spouliout
834 2009-09-28  Chris Toshok  <toshok@ximian.com>
836         * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
837         call closure functions when the closure is pending removal.  if
838         it's a managed delegate it will likely have already been
839         collected.  This fixes the regression of drt #502.
841         r: spouliot
843 2009-09-24  Stephen Shaw  <sshaw@decriptor.com>
845         * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
846         Method now returns a value
848         r: lewing
850 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
852         * mediaelement.cpp|h: Remove unused methods.
854         r: sde
856 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
858         * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
860         r: sde
862 2009-09-23  Chris Toshok  <toshok@ximian.com>
864         * uielement.cpp (UIElement::EmitGotFocus): this event passes
865         RoutedEventArgs, not EventArgs.
866         (UIElement::EmitLostFocus): same.
868         * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
869         make both MouseButtonEventArgs and MouseWheelEventArgs subclass
870         from MouseEventArgs.  Move MouseEventArgs::GetButton and
871         ::GetClickCount to MouseButtonEventArgs.
873         * runtime.cpp (Surface::CreateArgsForEvent): for the button
874         events, create a MouseButtonEventArgs.
876         * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
877         button handling methods.
879         * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
881         r: lewing
883 2009-09-23  Chris Toshok  <toshok@ximian.com>
885         * uielement.h (class UIElement): add event metadata.
887         * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
888         LoadedEvent.
889         (UIElement::ClearLoaded): same with Unloaded.
891         * type-generated.cpp, type.h, value.h: regen.
893         * transform.h (class Matrix): add event metadata.
895         * timeline.h (class TimelineGroup): add event metadata.
897         * textbox.h (class TextBox): add event metadata.
898         (class PasswordBox): add event metadata.
900         * stylus.h (class StylusPoint): add event metadata.
902         * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
903         captured/pendingReleaseCapture before emitting the event,
904         otherwise we could get into an infinite loop between handler and
905         ReleaseMouseCapture.
906         (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
908         * namescope.h (class NameScope): add event metadata.
910         * multiscaleimage.h (class MultiScaleImage): add event metadata.
912         * mediaelement.h (class MediaElement): add event metadata.
914         * media.h (class MediaBase): add event metadata.
916         * frameworkelement.h (class FrameworkElement): add event metadata.
918         * deployment.h (class Deployment): add event metadata.
920         * dependencyproperty.h: remove PropertyChangedEventArgs from here.
922         * eventargs.h: and put it here.
924         * dependencyproperty.h|cpp: replace the emitting count with a
925         stack of EmitContexts.  This is since the managed layer calls a
926         function to actually perform the emit, and the managed code
927         doesn't have access to the context.
928         (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
929         can replace the normal emit machinery with a delegate into managed
930         that calls the OnEvent method.
931         (StartEmit): push the new context onto the stack
932         (DoEmit): if there's an on_event handler, call that and let it do
933         the work.  otherwise call DoEmitCurrentContext.
934         (DoEmitCurrentContext): move the actual invoking of event closures
935         here.
936         (FinishEmit): pop the context off the stack.
937         (DependencyObject::ProviderValueChanged): we have to allocate
938         PropertyChangedEventArgs on the heap now that it's refcounted.
939         (DependencyObject::NotifyListenersOfPropertyChange): same.
940         (DependencyObject::collection_item_changed): same.
941         
942         * control.h (class Control): add event metadata.
944         * control.cpp (Control::OnPropertyChanged): when emitting
945         IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
947         * collection.h (class Collection): add event metadata.
949         * brush.h (class ImageBrush): add event metadata.
951         * bitmapsource.h (class BitmapSource): add event metadata.
953         * bitmapimage.h (class BitmapImage): add event metadata.
955         * application.h (class Application): add event metadata.
957         * cbinding.h|cpp: regen.
959         r: spouliot, andriea
961 2009-09-23  Stephane Delcroix  <sdelcroix@novell.com>
963         * multiscaleimage.cpp: fix the vp_h computation. vp_h is
964         vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
966 2009-09-21  Stephane Delcroix  <sdelcroix@novell.com>
968         * multiscaleimage.h|cpp: stop the animations when setting
969         UseSprings to false. Set the values to the target values
970         of the animations too.
972         r: toshok
974 2009-09-18  Jackson Harper  <jackson@ximian.com>
976         * xaml.cpp|h: Use flags passed to createfromstring now for
977         validating templates and importing the default namespace.
978         * value.h
979         * collection.cpp|h: Implement a resource dictionary collection,
980         this is a collection of dictionaries used for the
981         MergedDictionaries property of ResourceDictionaries
982         * resources.cpp|h: Implement the merged dictionaries property and
983         check them when looking up items in a dictionary.
984         * dependencyproperty.g.cpp:
985         * types-generated.cpp:
986         * cbinding.c|h: regen
987         
988 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
990         * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
991         media before asserting that it isn't null.
993         r: sde
995 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
997         * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
998         buffering_time of 1 ms, otherwise we'll do nothing at all since we have
999         the requested amount of buffer (nothing at all), but buffering progress
1000         is is still at 0% (since we didn't buffer anything). Don't change the
1001         buffering progress calculation, since playback would fail (there would
1002         be nothing to play).
1004         r: sde
1006 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1008         * mms-downloader.cpp: Remove old debugging code that was stripping out
1009         everything after a ? in a url.
1011         r: sde
1013 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1015         * xaml.cpp: Honor the debug configuration option instead of enabling it
1016         all the time.
1018         * glyphs.cpp: Move debug code into conditional expression.
1020         * debug.h: DEBUG is resolved to nothing at all in release builds, so
1021         when checking if debug is defined in complex expressions we need to
1022         use 'defined (DEBUG)', since otherwise the expression becomes bogus.
1023         Also Move #include "runtime.h" outside of the conditional code, this
1024         way we don't have different include requirements in other headers
1025         depending on debug/release configuration.
1027         r: sde
1029 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1031         * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
1032         specifying whether the current thread should be registered with the
1033         deployment or not.
1034         
1035         This fixes a minor catch with the media threads: they need to register
1036         the current thread with the deployment before calling
1037         SetCurrentDeployment, but they can't call GetDeployment to get the
1038         deployment to register the thread with before calling
1039         SetCurrentDeployment since it would trigger a deployment mis-matched
1040         warning.
1042         * pipeline.cpp|h: Add a thread pool to manage media threads instead of
1043         creating one thread per Media instance.
1045         * pipeline-asf.cpp: Updated according to Media API changes.
1047         r: geoff
1049 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1051         * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
1052         it.
1054         r: sde
1056 2009-09-16  Larry Ewing  <lewing@novell.com>
1058         * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
1059         not DependencyObject so that property changes actually work.
1061         r: kangaroo
1063 2009-09-14  Jeffrey Stedfast  <fejj@novell.com>
1065         * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
1067         * application.cpp (GetResourceAsPath): ExtractAll using
1068         CanonModeResource (everything gets lowercased).
1070         * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
1071         .dll's get lowercased).
1072         (xap_create_from_file): Canonicalize the AppManifest.xaml file
1073         name.
1075         * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
1076         argument to specify whether it is canonicalizing a Xap file, a
1077         resource name, or just fixing path separators. When in Xap mode,
1078         don't downcase Dll base names.
1079         (ExtractAll): When extracting a Xap, symlink a fully lowercased
1080         filename to the unmodified .dll name.
1082         r: spouliot
1084 2009-09-16  Larry Ewing  <lewing@novell.com>
1086         * tilesource.h: make tileblendtime unamanaged so we can use it
1087         when creating the fade animation.
1088         
1089         * multiscaleimage.cpp (Render): use the duration from the
1090         tilesource for the fade animation.  This probably needs to listen
1091         to change events but more testing is required.
1093         r: toshok
1094         
1095 2009-09-16  Larry Ewing  <lewing@novell.com>
1097         * style.h: make IsSealed field internal. 
1099 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com>
1101         * messagebox.h: Remove tab to please the generator
1103         r: lewing
1105 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com> 
1107         * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
1108         or format
1110         r: sde
1112 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1114         * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the 
1115         resource loader from the main thread.
1117         r: sde
1119 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1121         * ChangeLog:
1122         * bitmapimage.cpp: don't leak get_res_aborter.
1124         r: sde
1126 2009-09-16  Stephane Delcroix  <sdelcroix@novell.com>
1128         * multiscaleimage.h|cpp: StopDownloading () abort and clean the
1129         downloaders. Call it from the dtor, InvalidateTileLayer and
1130         OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
1132         r: rolf
1134 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1136         * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
1137         and add a 'description' field to ease understanding of what is going
1138         on in the pipeline.
1140         r: sde
1142 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
1144         * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
1146         r: lewing
1148 2009-09-15  Larry Ewing  <lewing@novell.com>
1150         * control.h: Mark IsTemplateItem as internal.
1152         * mediaelement.h: mark DownloadProgress as readonly.
1154         * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
1155         readonly.
1157 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
1159         * messagebox.cpp|h: New. MessageBox implementation
1160         * Makefile.am: Add new files to the build
1162         r: toshok
1164 2009-09-15  Stephane Delcroix  <sdelcroix@novell.com>
1166         * multiscaleimage.cpp: set the surface pointer to NULL after
1167         destroying.
1169         r: spouliot
1171 2009-09-16  Chris Toshok  <toshok@ximian.com>
1173         * dependencyobject.cpp (EventObject::Emit): don't return early
1174         when we have a pre-emit handler, even if the list is empty.  Also,
1175         don't do the pre-emit handler here.
1176         (EventObject::DoEmit): instead do it here.
1178 2009-09-14  Chris Toshok  <toshok@ximian.com>
1180         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1181         ParserErrorEventArgs overload to MoonError::FillIn to simplify
1182         this a little bit.
1183         (XamlLoader::CreateFromStringWithError): same.
1184         (XamlLoader::HydrateFromStringWithError): same.
1186         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1187         MoonError to the ErrorEventArgs, instead of the multiple args.
1189         * playlist.cpp: same.
1191         * asf/asf.cpp: same.
1193         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1194         the ErrorEventArgs, instead of the multiple args.
1195         (Downloader::NotifyFailed): same.
1197         * runtime.cpp (Surface::EmitError): same.
1199         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1201         * pipeline.cpp: same.
1203         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1204         we need to free the string we pass to MoonError::FillIn now that
1205         it frees.
1206         (DependencyObject::IsValueValid): same.
1207         (DependencyObject::RegisterAllNamesRootedAt): same.
1208         (DependencyObject::ReadLocalValueWithError): same.
1209         (DependencyObject::GetValueWithError): same.
1210         (DependencyObject::GetValueNoDefaultWithError): same.
1211         (DependencyObject::SetParent): same.
1213         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1214         ImageFailed.
1215         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1216         ImageFailedEvent, after reffing them.
1218         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1219         an error, we need to fill in the moon error with the appropriate
1220         exception, code, and msg.  the calldata to the Emit call is now an
1221         ImageErrorEventArgs again, which we construct using the
1222         moon_error.
1223         (BitmapImage::DownloaderFailed): same sort of change.
1224         (BitmapImage::CreateLoader): same.
1226         * bitmapimage.h (class BitmapImage): rename "error" field to
1227         "gerror" to make it clearer what it is in the code.
1229         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1230         we get a little more indication of where it comes from.  this enum
1231         is not long for this world, if I can help it.
1233         * media.h|cpp (Image::image_failed): pass in the calldata to
1234         ImageFailed.
1235         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1236         ImageFailedEvent, after reffing them.
1238         * error.h|cpp: move all the eventargs subclasses from here
1239         to eventargs.h.
1240         (class MoonError): add a non-empty ctor, copy ctor and operator=.
1241         Also, remove the char* vs. const char* apis.  make them all const
1242         char*, and dup the passed in string.  Lastly, add a FillIn
1243         overload that takes a ParserErrorEventArgs.
1245         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1246         info in an embedded MoonError.
1247         (ExceptionRoutedEventArgs): remove this class.  Nothing in
1248         unmanaged code uses it.
1250 2009-09-14  Sebastien Pouliot  <sebastien@ximian.com>
1252         * xaml.cpp: remove dead code
1254         r: jackson
1256 2009-09-14  Chris Toshok  <toshok@ximian.com>
1258         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1259         ParserErrorEventArgs overload to MoonError::FillIn to simplify
1260         this a little bit.
1261         (XamlLoader::CreateFromStringWithError): same.
1262         (XamlLoader::HydrateFromStringWithError): same.
1264         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1265         MoonError to the ErrorEventArgs, instead of the multiple args.
1267         * playlist.cpp: same.
1269         * asf/asf.cpp: same.
1271         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1272         the ErrorEventArgs, instead of the multiple args.
1273         (Downloader::NotifyFailed): same.
1275         * runtime.cpp (Surface::EmitError): same.
1277         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1279         * pipeline.cpp: same.
1281         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1282         we need to free the string we pass to MoonError::FillIn now that
1283         it frees.
1284         (DependencyObject::IsValueValid): same.
1285         (DependencyObject::RegisterAllNamesRootedAt): same.
1286         (DependencyObject::ReadLocalValueWithError): same.
1287         (DependencyObject::GetValueWithError): same.
1288         (DependencyObject::GetValueNoDefaultWithError): same.
1289         (DependencyObject::SetParent): same.
1291         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1292         ImageFailed.
1293         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1294         ImageFailedEvent, after reffing them.
1296         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1297         an error, we need to fill in the moon error with the appropriate
1298         exception, code, and msg.  the calldata to the Emit call is now an
1299         ImageErrorEventArgs again, which we construct using the
1300         moon_error.
1301         (BitmapImage::DownloaderFailed): same sort of change.
1302         (BitmapImage::CreateLoader): same.
1304         * bitmapimage.h (class BitmapImage): rename "error" field to
1305         "gerror" to make it clearer what it is in the code.
1307         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1308         we get a little more indication of where it comes from.  this enum
1309         is not long for this world, if I can help it.
1311         * media.h|cpp (Image::image_failed): pass in the calldata to
1312         ImageFailed.
1313         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1314         ImageFailedEvent, after reffing them.
1316         * error.h|cpp: move all the eventargs subclasses from here
1317         to eventargs.h.
1318         (class MoonError): add a non-empty ctor, copy ctor and operator=.
1319         Also, remove the char* vs. const char* apis.  make them all const
1320         char*, and dup the passed in string.  Lastly, add a FillIn
1321         overload that takes a ParserErrorEventArgs.
1323         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1324         info in an embedded MoonError.
1325         (ExceptionRoutedEventArgs): remove this class.  Nothing in
1326         unmanaged code uses it.
1328 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1330         * audio-alsa.cpp|h:
1331         * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
1332         need to play something, and clean up when we stop playing audio.
1334         * mutex.h: Add support for recursive mutexes.
1336         r: geoff
1338 2009-09-14  Stephane Delcroix  <sdelcroix@novell.com>
1340         * deepzoomimagetilesource.h:
1341         * multiscaleimage.h|cpp:
1342         * tilesource.h|cpp:
1343         * uielement.h: drop some manually written cbindings in favor of
1344         generated ones.
1346         * cbinding.h|cpp: regen
1348         r: rolf
1350 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1352         * audio.cpp: It should be safe to delete audio sources on any
1353         thread.
1355         r: sde
1357 2009-09-11  Larry Ewing  <lewing@novell.com>
1359         * deployment.cpp, deployment.h: add OutOfBrowserSettings,
1360         ExternalPartCollection, ExternalPart and ExtensionPart to allow
1361         more SL 3 compat.
1363         r: toshok
1365 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1367         * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
1368         wherever we used to access the field directly. Fixes a very rare
1369         multi-thread issue.
1371         r: spouliot
1373 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1375         * pipeline-asf.cpp: Add a null check.
1377         r: spouliot
1379 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1381         * runtime.h: Fix typo in sanity message.
1383 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1385         * audio.cpp: WriteFull: have a local copy of the stream pointer,
1386         it may get changed on the main thread.
1388         r: spouliot
1390 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1392         * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
1393         the audio stream in all code paths.
1395         r: spouliot
1397 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1399         * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
1400         it should be safe since the tick call is removed upon destruction.
1402         r: spouliot
1404 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1406         * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
1407         AudioPlayer is disposed due to refcounting reaching 0. This way
1408         we can keep the instance lock for as little time as possible
1409         (to do the ref), instead of during the entire Add/Remove calls,
1410         which may end up deadlocking deep inside pulse in rare circumstances
1411         (we try to add an audio source on one thread(requires a global pa lock)
1412         when removing another audio source on another thread as a response to
1413         an event from pa which may already have the global pa lock).
1415         * type.h:
1416         * value.h:
1417         * cbinding.h:
1418         * type-generated.cpp: Regenerated
1420         r: sde
1422 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1424         * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
1425         pointer instead of subcache, layer, x and y. Avoids some tree waliking
1426         in the cache trees.
1428         r: spouliot
1430 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1432         * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix 
1433         qtree_remove to take guint64 indices, qtree_next_sibling for 
1434         future usage.
1436         r: rolf
1438 2009-09-10  Jackson Harper  <jackson@ximian.com>
1440         * namescope.h: Add an accessor for the names hashtable so we can
1441         use them in plugin-debug.
1443         r: spouliot
1445 2009-09-10  Jackson Harper  <jackson@ximian.com>
1447         * xaml.cpp|h: Add flags to the callback data
1448         - Add a pinvoke function that allows propertys to be delayed in
1449         their set call until after the element is fully parsed.  This
1450         allows things like adding elements to a Selector and setting its
1451         index in xaml.
1453         r: spouliot
1454         
1455 2009-09-10  Larry Ewing  <lewing@novell.com>
1457         * multiscaleimage.cpp (RenderSingle): work around the cairo
1458         limitations by doing the viewport/msi intersection and clipping in
1459         viewport space.
1461         r: sde
1463 2009-09-10  Stephane Delcroix  <sdelcroix@novell.com>
1465         * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
1466         receive on Render is already clipped to the control size.
1467         Wrap the clipping to image size in a conditional to avoid clipping
1468         with really huge rectangles. That it a bug in cairo, as shown in 
1469         drt 2013, 2014. In those cases, the rendering will (visually) leak
1470         for the low order layers.
1472         r: spouliot
1474 2009-09-09  Jackson Harper  <jackson@ximian.com>
1476         * xaml.cpp: When we are setting attributes we want to set
1477         everything with a backing dependency property before we set things
1478         that require managed. We also delay the setting of attributes with
1479         an explicit managed namespace reference.  NOTE: We dont delay
1480         setting attributes that have a DP but are forced into managed
1481         because of their type.
1482         - We can share SetUnknownAttribute functions because the default
1483         xmlns is inited to NULL.
1485         r: rolf
1487 2009-09-09  Stephane Delcroix  <sdelcroix@novell.com>
1489         * multiscaleimage.cpp: Clear () the SubImagesCollection on 
1490         source changed. Speed things up when reusing the same MSI
1491         over and over with different sources. drt #2004 is now passing
1492         every times.
1494         r: rolf
1496 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1498         * downloader.h, layout.h, list.h: Add missing virtual destructors
1500         r: toshok
1502 2009-09-08  Chris Toshok  <toshok@ximian.com>
1504         * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
1505         for ProviderValueChanged's @set_parent.
1506         (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
1507         true in the visual walking case, and false in the
1508         textblock->inline case.
1509         (PROP_ADD): pass true.
1510         (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
1511         (InheritedPropertyValueProvider::PropagateInheritedProperty):
1512         do a deep traversal of the tree, looking for children who have a
1513         mapped property from the changed one (MapPropertyToDescendant
1514         returns NULL if there's no mapping).  Once we find a suitable
1515         descendant, call ProviderValueChanged on it with "true" for
1516         notify_listeners.  This will take care of notifying further down
1517         the tree if need be, and we can skip that branch.  For textblocks
1518         we also have to iterate over the inlines to propagate the property
1519         change notification.
1520         (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
1521         traverse the entire subtree looking for classes which can inherit
1522         properties from above them.  when we find one, get the inherited
1523         value.  if it's non-null, notify that the property has changed,
1524         and keep trace of this property (we only notify once for a given
1525         subtree, since the normal ProviderValueChanged notifications will
1526         handle the rest for that property.)
1527         (walk_tree): this recursive function does the bulk of the work for
1528         ::PropagateInheritedPropertiesOnAddingToTree
1530         * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
1531         add an additional argument (set_parent), which is true for every
1532         instant except when TextBox is propagating inherited brushes to
1533         its constituent inlines.  In this case, the textbox is still the
1534         parent of the brush.  At least for the time being.  In a perfect
1535         world all the changed handling would live in the leaf
1536         nodes (i.e. in the Inlines themselves)
1537         (DependencyObject::ClearValue): track api change
1538         (DependencyObject::SetValueWithErrorImpl): same.
1539         (DependencyObject::GetValue): add an overload for allowing both
1540         starting and ending precedences, and implement the other two
1541         overloads in terms of it.
1542         (DependencyObject::GetValueSkippingPrecedence): remove, no longer
1543         used.
1545         * uielement.cpp (UIElement::ElementAdded): propagate all
1546         inheritable properties into the subtree we're adding, before
1547         calling Loaded.
1549         r: andreia
1550         
1551 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1553         * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
1554         redirections (drt 874)
1556         * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
1557         bitmapimage policy;
1559         * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
1561         r: spouliot
1563 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1565         * downloader.cpp: Skip redirection check if the source url is a
1566         local file.
1568         r: sde
1570 2009-09-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1572         * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
1573         event from the downloader after cancelling a resource request, this 
1574         is no longer true, so emit ImageFailed manually after calling Abort.
1576         r: sde
1578 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1580         * deepzoomimagetilesource.cpp: don't render if any MSI extends
1581         is 0. avoid rendering an extra layer in some cases.
1583         r: rolf
1585 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1587         * deepzoomimagetilesource.h|cpp: replace downloader usage by
1588         Application::GetResource (). Parses the xml stream as it comes,
1589         instead of all at once.
1591         r: kangaroo
1593 2009-09-07  Chris Toshok  <toshok@ximian.com>
1595         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
1596         don't bail out early if both values are null, as the property
1597         might be AlwaysChange.
1598         (DependencyObject::ClearValue): same.
1600         r: kangaroo
1602 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
1604         * multiscaleimage.cpp: the tileLayer parameter is not the number 
1605         of layers to invalidate.
1607         r: shana
1609 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
1611         * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
1612         full cache, but only the requested tiles.
1614         r: shana
1616 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
1618         * multiscaleimage.cpp:
1619         * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
1620         the cache, aborting the downloaders, invalidating, etc...) on dzits 
1621         urisource changed that is done on msi sourcechanged.
1623         r: shana
1625 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
1627         * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
1628         the OnSourcePropertyChanged handling outside of OnPropertyChanged.
1629         No longer keep a source instance variable, as we can get it with
1630         GetSource ().
1632         r: jackson
1634 2009-09-04  Larry Ewing  <lewing@novell.com>
1636         * multiscaleimage.cpp (RenderSingle): clip our rendering to the
1637         image bounds so that when we are scaling up we don't end up with
1638         blurry images.
1640         r: sde
1642 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
1644         * utils.h|cpp: add a void* arg to the Cancellable api
1646         * application.cpp:  remove the downloader notifications on 
1647         Cancel ().
1649 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
1651         * multiscaleimage.cpp: on source change, don't only Abort() the
1652         dlders, but also reset the internal state of the dlders to Free
1654         r: alan
1656 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1658         * multiscaleimage.cpp: reset the Viewport to its default values
1659         on source change. Eventually fixes drt#511.
1661         r:lewing
1663 2009-09-03  Jeffrey Stedfast  <fejj@novell.com>
1665         * textbox.h: Nuke the CallInitialize metadata from TextBox.
1667 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1669         * deepzoomimagetilesource.h: add Generate* attributes
1671 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1673         * multiscaleimage.h: drop the GenrateJSBinding attributes
1675 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
1677         * xaml.cpp:
1678         * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
1679         move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
1680         that we have to strip an eventual leading / on ctor but not on
1681         SetUriSource.
1683 2009-09-02  Andreia Gaita  <avidigal@novell.com>
1685         * dependencyobject.cpp: move the storage cleanup to Dispose, they
1686         will need to invoke handlers and other things that require the
1687         object to still be alive. fixes crash on drt 109
1689         r: lewing
1691 2009-09-02  Jackson Harper  <jackson@ximian.com>
1693         * dependencyproperty.cpp: If the explicitly mentioned type does
1694         not contain the property, try looking for the property on the
1695         current lookup obejct.  Allows things like (UIElement.Height) on a
1696         Grid object.
1698         r: shana
1700 2009-09-02  Jeffrey Stedfast  <fejj@novell.com>
1702         * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
1703         UpdateLayoutAttributes(). We can't rely on it being called as a
1704         result of setting the Text property since the overall Text
1705         property value might not have changed.
1706         (TextBlock::OnCollectionItemChanged): Same here.
1707         (TextBlock::OnPropertyChanged): Same for when the Inlines property
1708         changes. In the FontSource case, don't set invalidate to
1709         false. Also set dirty to true.
1710         (SetTextInternal): Changed to return void, no need to return bool
1711         anymore.
1713         r: alan
1715 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
1717         * layout.cpp (TextLayoutGlyphCluster::Render): If the background
1718         brush is null, don't bother drawing a background.
1720         r: lewing
1722 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
1724         * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
1725         brush is null, don't render the text.
1727         r: spouliot
1729 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com> 
1731         * utils.cpp (CopyFileTo): Close the destination file handle if 
1732         the source (filename) cannot be opened.
1734         r: jeff
1736 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
1738         * uielement.cpp (UIElement::Paint): Don't leak a copy of the 
1739         region when *not* using FTB rendering.
1741         r: jeff
1743 2009-09-01  Larry Ewing  <lewing@novell.com>
1745         * frameworkelement.cpp: clear LastRenderSize before we emit so
1746         that we don't end up in a possible recursion.
1748         Fixes http://www.worldwidetelescope.org/webclient/
1749         
1750         r: toshok
1752 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
1754         * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
1755         error code when an invalid xap file is encoutered.
1757         re: jackson
1759 2009-08-31  Sebastien Pouliot  <sebastien@ximian.com>
1761         * debug.cpp: Delete frame if we're not using it in the loop
1762         * resources.cpp: Don't leak Value instance on error
1764         re: kangaroo
1766 2009-08-30  Andreia Gaita  <avidigal@novell.com>
1768         clock leak fixes.
1770         * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
1771         move it to the Timeline class so all timelines can clear their clocks.
1772         Removed private root_clock, all timelines should use the timeline
1773         clock variable
1775         * timeline.[h|cpp]: TeardownClock removes the clock from the parent
1776         ClockGroup and clears the ref on the clock so it can be destroyed
1777         (which in turn will release the ref on the timeline so it too gets
1778         destroyed).
1779         DispatcherTimer doesn't have to destroy it's clock, the timeline
1780         dispose takes care of that. Added TeardownClock for DispatcherTimer
1781         so it stops the clock before disposing.
1782         Removed private root_clock, all timelines should use the timeline
1783         clock variable
1785         * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
1786         group Dispose goes down the hierarchy of clocks and starts clearing
1787         clocks (via timeline TeardownClock) from bottom to top, so
1788         everything is guaranteed to die before the root clock gets
1789         destroyed.
1791         * timemanager.cpp: Dispose root clock before releasing it
1793         r: toshok
1795 2009-08-30  Andreia Gaita  <avidigal@novell.com>
1797         * textblock.cpp: drop the run reference, it's already reffed on the
1798         collection
1800         r: toshok
1802 2009-08-28  Alan McGovern  <amcgovern@novell.com>
1804         * control.h:
1805         * control.cpp:
1806         * contentcontrol.cpp: ContentControl is not in charge of
1807           expanding its content template, the users of ContentControl
1808           have to do that. When applying a ControlTemplate, if it
1809           expands to an empty element or one which is not a UIElement,
1810           we ignore the template and instead apply the default
1811           element. r: toshok
1813 2009-08-27  Jeffrey Stedfast  <fejj@novell.com>
1815         * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
1816         Mouse events anymore (except the special internal MultiClick
1817         event). Managed code will now call our public On$Event() methods
1818         when appropriate.
1819         (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
1820         true. Doesn't seem like SL ever does.
1822         r:alan
1824 2009-08-27  Stephane Delcroix  <sdelcroix@novell.com>
1826         * tilesource.h: rely on the generator for internal properties.
1828         * tilesource,cpp:
1829         * deepzoomimagetilesource.cpp: use the accesors instead of the
1830         fields.
1832 2009-08-27  Andreia Gaita  <avidigal@novell.com>
1834         * dependencyobject.cpp: list should only be cleared, not destroyed,
1835         storage_hash still needs it
1837         r: alan
1839 2009-08-26  Chris Toshok  <toshok@ximian.com>
1841         * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
1842         we free it.
1844         r: jackson
1846 2009-08-16  Chris Toshok  <toshok@ximian.com>
1848         * value.h.in, value.cpp: remove Value::Set.  it's unnecessary.
1850         * validators.cpp (Validators::BalanceValidator): use the
1851         assignment operator instead of ::Set, which no longer exists.
1852         (Validators::VolumeValidator): same.
1853         (Validators::CursorValidator): don't assign the pointer, assign
1854         the value.  This should have caused bugs...
1856         r: jackson
1857         
1858 2009-08-26  Jeffrey Stedfast  <fejj@novell.com>
1860         * validators.cpp (FloatValidator): New validator to make sure a
1861         value is within range for a float.
1863         * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
1864         origin_y state variables. We can just query these on demand.
1865         (Render): Simplified slightly.
1866         (GetTransformOrigin): Get rid of unused variable.
1867         (GetOriginPoint): Just use the ascender rather than the height and
1868         the descender. Simpler that way.
1870         * glyphs.h: Changed default OriginX and OriginY values to what
1871         they should be according to the moon-unit tests (also makes drt
1872         #246 pass).
1874         r:toshok
1876 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1878         * cbinding.h:
1879         * template.h:
1880         * cbinding.cpp:
1881         * template.cpp: Allow FrameworkTemplates to be expanded in
1882           managed code. Using that, expand the ItemsPanelTemplate in
1883           ItemsControl when it is available. r: toshok
1885 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
1887         * security.c: Fixed typos in last "a11y" commit.
1889 2009-08-26  Chris Toshok  <toshok@ximian.com>
1891         * textbox.cpp (TextBoxBase::SetSurface): only call
1892         gtk_im_context_set_client_window if @surface is non-null.  this
1893         quiets down some of the gtk warnings on shutdown.
1895         r: lewing
1896         
1897 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1899         * type.h:
1900         * value.h:
1901         * cbinding.h:
1902         * type-generated.cpp: regen r: shana
1904 2009-08-26  Andreia Gaita  <avidigal@novell.com>
1906         * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
1907         public methods that DOs and Clocks use to control an animation:
1908             - when a new storage is attached and there is already one on
1909                 the property, Disable removes the handlers from the previous
1910                 storage;
1911             - when a storage is detached, the previous one is enabled via
1912                 Enable, which attaches the handlers;
1913             - when a clock is stopped, it calls Stop, which detaches
1914                 everything and resets the property;
1915             - when cloning, SwitchTarget is used to replace the DO and its
1916                 handlers on the storage, to avoid having to clone all the
1917                 storages every time.
1919         Storages are now only deleted when the clock stops, is destroyed
1920         or when the DO they're attached to is destroyed. IsLonely was
1921         removed (meaningless now), as well as the resettable flag (only
1922         enabled animations reset)
1924         * dependencyobject.[h|cpp]: a DO can have more than one animation
1925         running on the same DP, and they need to be stored so that when a
1926         DO is cloned, all running animations are updated to the new DO -
1927         - this way, when they stop they update the current DO and not the
1928         one they were originally attached to. This fixes the animation
1929         problems on togglebuttons and other objects that have several
1930         animations overlapping each other. The storage_hash now stores a
1931         List* of AnimationStorage::Node objects with all existing animations
1932         for every DP, and the animation storage cloning process doesn't clone
1933         the storages, it merely creates a new List* with the existing storages
1934         and updates them to the newly cloned DO.
1936         r: alan
1938 2009-08-26  Alan McGovern  <amcgovern@novell.com>
1940         * template.cpp: NNull check 'result' before using it. r:shana
1942 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
1944         * security.c: Mark MoonAtkBridge.dll as platform assembly.
1946 2009-08-25  Chris Toshok  <toshok@ximian.com>
1948         * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
1949         when IsEnabledProperty has changed.  we need to do it after the
1950         focus handling has happened, though, as
1951         FocusManager.GetFocusedElement() returns the currently focused
1952         thing in handlers for IsEnabledChanged.  Fixes the rendering of
1953         disabled elements in drt #432.
1955         r: andreia
1956         
1957 2009-08-26  Jackson Harper  <jackson@ximian.com>
1959         * dependencyproperty.cpp: Allow setting properties that are
1960         attached on their owner type without parens. r: toshok
1962 2009-08-26  Jackson Harper  <jackson@ximian.com>
1964         * xaml.cpp|h: Expose a function for parsing bools so the plugin
1965         code can use our bool parsing code. (Handle ints).
1967         r: shana && kangaroo
1969 2009-08-25  Jeffrey Stedfast  <fejj@novell.com>
1971         * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
1972         invalidate unless one of the fonts has actually changed.
1974         r:spouliot
1976 2009-08-25  Jackson Harper  <jackson@ximian.com>
1978         * type.cpp: Function was still in the header but somehow lost its
1979         implementation.  We dont use it anywhere but its useful for
1980         debugging. r: kangaroo
1982 2009-08-25  Alan McGovern  <amcgovern@novell.com>
1984         * control.h:
1985         * template.h:
1986         * control.cpp:
1987         * template.cpp:
1988         * contentcontrol.cpp: Add support for using
1989           ContentControl.ContentTemplate when it is available. If
1990           there is no Control.Template, ContentControl.ControlTemplate
1991           is used. If that isn't available, we call into managed code
1992           and get the fallback root. r: toshok
1994 2009-08-24  Jackson Harper  <jackson@ximian.com>
1996         * dependencyobject.cpp: Hydrated objects are registered in their
1997         parent namescope so we need to unregister them there also. r: toshok
1999 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
2001         * fontmanager.cpp (AddResource): Need to free the path string
2002         before returning on success.
2004         * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
2005         leak the various lists.
2007         r:toshok
2009 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
2011         * grid.cpp (DestroyMatrices): Need to use delete[] to free the
2012         matrices.
2014         r:toshok
2016 2009-08-21  Alan McGovern  <amcgovern@novell.com>
2018         * control.cpp:
2019         * template.cpp: Whenever any template is expanded, the
2020           template namescope should be locked. r: jackson
2022 2009-08-21  Alan McGovern  <amcgovern@novell.com>
2024         * grid.cpp: When assigning sizes to grid segments, if the
2025           current UIElement spans across star segments, then extra
2026           height will only be assigned to those star segments.
2027           Otherwise extra height will be assigned to Auto and Pixel
2028           segments. r: sde
2030 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
2032         * textbox.cpp (TextBoxBase::Emit*Async): Removed.
2033         (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
2034         (TextBox::EmitTextChanged): Same.
2035         (PasswordBox::EmitTextChanged): Same.
2037         * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
2039         * dependencyobject.cpp (EventObject::EmitAsync): New method to
2040         emit an event asynchronously.
2042         r:alan
2044 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
2046         * textbox.cpp (emit_selection_changed): Pass along the generation
2047         to the virtual EmitSelectionChanged() method.
2048         (emit_text_changed): Same.
2049         (EmitSelectionChangedAsync): Use a custom closure so that we can
2050         capture the current event generation to use when we actuall emit
2051         it later.
2052         (EmitTextChangedAsync): Same.
2054         r:toshok
2056 2009-08-20  Jackson Harper  <jackson@ximian.com>
2058         * xaml.cpp: Setting OBJECT properties allows objects to be parsed
2059         from strings that shouldn't normally be.  Such as SolidColorBrush
2060         and PointCollection.
2062 2009-08-19  Jeffrey Stedfast  <fejj@novell.com>
2064         * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
2065         same algorithm used by Silverlight.
2067         r:jackson
2069 2009-08-19  Jackson Harper  <jackson@ximian.com>
2071         * playlist.cpp: Its possible to queue an async operation and then
2072         call Dispose before that operation has taken place. This patch
2073         makes Playlist delay its unref and adds guards in its async
2074         callback functions to avoid this. Fixes http://www.nederland24.nl/
2075         r:spouliot
2076         
2077 2009-08-18  Jackson Harper  <jackson@ximian.com>
2079         * template.cpp: Remove not very helpful and somewhat scary looking
2080         debug spew. r:toshok
2082 2009-08-18  Jeffrey Stedfast  <fejj@novell.com>
2084         * layout.cpp (word_type_changed): Partial revert for previous
2085         commit as it broke drt #208.
2087         r:toshok
2089 2009-08-17  Jeffrey Stedfast  <fejj@novell.com>
2091         Fixes for drt #411.
2093         * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
2094         infinite.
2095         (word_type_changed): Allow alphabetic characters inside
2096         ideographic words.
2097         (layout_word_wrap): Allow line advance to equal max width.
2099         r:toshok
2101 2009-08-18  Alan McGovern  <amcgovern@novell.com>
2103         * grid.h:
2104         * grid.cpp: Remove the 'magic' size as size allocations are
2105           read from row_matrix/col_matrix now. r: kangaroo
2107 2009-08-18  Alan McGovern  <amcgovern@novell.com>
2109         * grid.h:
2110         * grid.cpp: Allocate sizes of the grid segments in the correct
2111           order. r: shana
2113 2009-08-17  Alan McGovern  <amcgovern@novell.com>
2115         * grid.h:
2116         * grid.cpp: When allocating sizes for rows/columns, clamp the
2117           sizes between the Min and Max values in a consistent manner.
2118           r: jackson
2120 2009-08-17  Alan McGovern  <amcgovern@novell.com>
2122         * grid.h:
2123         * grid.cpp: Change the parameter order in the Segment
2124           constructors to be "value, min, max" to be consistent with
2125           how 'CLAMP' is usually defined. r: jackson
2127 2009-08-16  Chris Toshok  <toshok@ximian.com>
2129         * xaml.cpp (value_from_str_with_parser): fix the abundant memory
2130         leaks in this method.
2132         * propertypath.h (struct PropertyPath): add a copy constructor
2133         here so the xaml.cpp changes work without crashing.
2135         r: andreia
2137 2009-08-16  Chris Toshok  <toshok@ximian.com>
2139         * xaml.cpp (value_from_str_with_parser): we were using the return
2140         value from this method to be "v has been set to a value", but this
2141         isn't enough state.  We also need to know if the
2142         caller (dependency_object_set_attributes, specifically) should
2143         continue on or skip the attribute after it's called us.  So, we
2144         add a "bool *v_set" parameter, and change the return value to
2145         "false = skip, true = continue processing."  We return false in
2146         only 1 case right now, if a double-typed value is to be parsed
2147         from an empty string.  This fixes the Klotski demo, which has
2148         <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
2149         usage to also deal properly with leading spaces, and stop
2150         duplicating "g_free (s); return true;" - just break there, and let
2151         the blanket free/return at the end of the method handle it.
2152         (dependency_object_set_attributes): simplify the {} handling, and
2153         stop leaking the string value of the attribute when we pass it to
2154         managed.
2156         r: andreia
2157         
2158 2009-08-15  Larry Ewing  <lewing@novell.com>
2160         * mediaelement.cpp (Render): use the same logic we used in image
2161         here to always adjust the paint rect when stretch != StretchNone.
2163         r: andreia
2165 2009-08-15  Larry Ewing  <lewing@novell.com>
2167         * shape.cpp (MeasureOverride): Stretch to the proper width when
2168         available size in not infinite.  Avoid using infinite dimesions as
2169         constraints for Uniform stretches.
2171         Fixes Header stretching in playboy an improves DRT #210.
2173         r: jeff
2174         
2175 2009-08-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2177         * pipeline.cpp: Quiet some debug spew.
2179         r: andreia
2181 2009-08-14  Larry Ewing  <lewing@novell.com>
2183         * grid.cpp (MeasureOverride): properly use min and max.
2185         Fixes regression in DRT #319 from new table code
2187         r: kangaroo
2189 2009-08-14  Larry Ewing  <lewing@novell.com>
2191         * media.cpp: always adjust our paint rectangle when Stretch !=
2192         StretchNone.
2194         Fixes DRT #516 and the regression in #422
2196         r: toshok
2198 2009-08-14  Larry Ewing  <lewing@novell.com>
2200         * frameworkelement.cpp (Arrange): apply the size constraints after
2201         we the the actualsize back from the element.
2203         * layoutinformation.cpp (GetClip): now that other things are
2204         improved only traverse up one level.
2206         Fixes clipping on the smooth streaming size and DRT #210
2208         r: sde
2209         
2210 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2212         * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
2213         frames to decode.
2215         r: andreia
2217 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2219         * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
2220         variables in local variables and clear out the instance variables
2221         before unreffing them - prevents certain rare cases of infinite loops.
2223         r: andreia
2225 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2227         * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
2228         we've been disposed.
2230         r: andreia
2232 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2234         * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
2235         paths.
2237         r: andreia
2239 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2241         * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
2242         if we've been disposed.
2244         r: andreia
2246 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2248         * pipeline.cpp: IMediaObject::Dispose: clear the list of events
2249         we were supposed to emit on the main thread.
2251         r: andreia
2253 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2255         * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
2257         r: andreia
2259 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2261         * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
2262         variables in local varaibles and clear out the instance variables
2263         before unreffing them - prevents certain rare cases of infinite loops.
2265         r: andreia
2267 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2269         * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
2270         variables in local variables and clear out the instance variables
2271         before unreffing them - prevents certain rare cases of infinite loops.
2273         r: andreia
2275 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2277         * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
2278         source.
2280         r: andreia
2282 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2284         * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
2285         dependency between MmsPlaylistEntry and Media.
2287         r: andreia
2289 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2291         * pipeline.cpp: Media::Dispose: store a copy of our instance variables
2292         in local variables and clear out the instance variables before
2293         unreffing them - prevents certain rare cases of infinite loops.
2295         r: andreia
2297 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2299         * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
2301         r: andreia
2303 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2305         * pipeline-asf.cpp: Add a few missing unrefs.
2307         r: andreia
2309 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2311         * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
2312         the closure is called.
2314         r: andreia
2316 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2318         * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
2319         can detect if the callback has been called or not.
2321         r: andreia
2323 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2325         * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
2326         dispose on the media thread, call dispose directly.
2328         r: andreia
2330 2009-08-14  Alan McGovern  <amcgovern@novell.com>
2332         * grid.h:
2333         * grid.cpp: Rewrite the size allocation code in grid to better
2334           match the microsoft implementation. It works much better for
2335           the pixel and auto cases, but still has some issues with
2336           star columns. r: lewing
2338 2009-08-14  Jeffrey Stedfast  <fejj@novell.com>
2340         * application.cpp (GetResource): Close the stream when we're
2341         done. Also changed to check write_cb exists before reading from
2342         the stream - if the callback is NULL, don't even bother.
2343         (GetResourceAsBuffer): Removed.
2344         (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
2345         the streaming ourselves. Also return NULL if writing the stream to
2346         disk fails.
2348         * utils.cpp (managed_stream_open/read/write/etc): Changed to be
2349         internal. These symbols don't need to be publicly exported.
2351         * utils.h: Added a Stream_Close function signature to
2352         ManagedStreamCallbacks.
2354         * bitmapimage.cpp (resource_notify): Make static/internal - does
2355         not need to be publicly exported.
2357         r:kangaroo
2359 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2361         * multiscaleimage.cpp: retry downloading up to 5 times.
2363 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2365         * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on 
2366         source change. 
2367         
2368         r: lewing
2370 2009-08-13  Larry Ewing  <lewing@novell.com>
2372         * usercontrol.cpp (MeasureOverride): don't constrain the results.
2374         Fixes DRT #417
2376         r: andreia
2378 2009-08-13  Larry Ewing  <lewing@novell.com>
2380         * textblock.cpp (MeasureOverride):
2381         * textbox.cpp (MeasureOverride): ceil our measurement request when
2382         layout rounding is being done so that we don't get rounded down
2383         and forced to wrap.  More testing is in order but failure mode for
2384         this is painful.
2386         Fixes wrapping in Playboy and the chess final screen.
2388         r: jeff
2389         
2390 2009-08-13  Larry Ewing  <lewing@novell.com>
2392         * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
2393         to idle so that firefox and gtk can process events without getting
2394         starved.  Improved Quakelight and StrangeAttractor experience.
2396         r: andreia
2397         
2398 2009-08-13  Larry Ewing  <lewing@novell.com>
2400         * src/brush.cpp: replace all cairo_matrix_invert calls with a
2401         version that warns if it fails.
2403         r: andreia
2405 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2407         * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
2408         advance width is 0. Fixes test-videobrush-text.xaml to render all
2409         of the runs.
2411         r:lewing
2413 2009-08-13  Chris Toshok  <toshok@novell.com>
2415         * xaml.cpp (start_element): If the element is a TextBox.Text
2416         CDATA, treat it as verbatim. Partial fix for drt 2003.
2418         r:jeff
2420 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2422         * layout.cpp (Layout): Make sure all attributes were able to load
2423         their fonts. If not, we can't proceed. Fixes the NULL TextFont
2424         crash in DrPopper.
2426         * textblock.cpp (OnPropertyChanged): Instead of using
2427         UpdateLayoutAttributes(), all we really need to do is call
2428         UpdateFontDescriptions() when the FontSource changes.
2430         r:toshok
2432 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2434         * fonts.cpp (TextFont::Load): When loading a font face from a
2435         source w/o any families specified, make sure to set master=0 so
2436         that we don't try to get extents from faces[-1].
2438         r:lewing
2440 2009-08-13  Larry Ewing  <lewing@novell.com>
2442         r: kangaroo
2443         
2444         * writeablebitmap.cpp (InitializeFromBitmapSource): always use
2445         rgba pixelformat like sl3 does now.
2447 2009-08-12  Chris Toshok  <toshok@ximian.com>
2449         * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
2450         "own" (default: true) which, if true, causes the bitmap source to
2451         free the bitmapdata when it's destroyed.
2453         * cbinding.h|cpp: regen
2455 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2457         * cbinding.h:
2458         * cbinding.cpp: regen r: toshok
2460         * control.h:
2461         * application.h:
2462         * application.cpp:
2463         * contentcontrol.h:
2464         * contentcontrol.cpp:
2465         * frameworkelement.cpp: A ContentControl which has no Template
2466           needs to call into managed land to create a 'default
2467           template'. When the Content is a UIElement, the UIElement is
2468           used as the template root, otherwise a Grid + TextBlock
2469           (with Binding) is used. This is the same as what
2470           ContentPresenter does to its Content property. r: toshok
2472 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2474         * uielement.cpp: VisualParent should be set to null before
2475           invalidating the cache otherwise the element might be added
2476           to the dirty lists. This causes issues if the element is
2477           added back into the visual tree at a different level. r:
2478           lewing.
2480 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2482         * multiscaleimage.cpp: clear the cache on source change, cache a NULL
2483         tile on downloader failure (fix drt 2014 for good).
2485 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2487         * multiscaleimage.cpp: restore the initial number of concurrent
2488         downloaders, drt 2014 will require a proper fix.
2490 2009-08-12  Chris Toshok  <toshok@ximian.com>
2492         * media.h|cpp (class Image): if our source is a BitmapSource,
2493         handle the PixelDataChangedEvent and Invalidate ourselves if it's
2494         emitted.
2496         * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
2497         handle the PixelDataChangedEvent and notify our listeners to
2498         redraw if it's emitted.
2500         * bitmapsource.h|cpp (class BitmapSource): add an event so classes
2501         using BitmapSources can be notified when the pixel data
2502         changes (primarily for use with WriteableBitmap).  Emit it from
2503         BitmapSource::Invalidate.
2505         * type-generated.cpp, cbinding.h|cpp: regen
2506         
2507 2009-08-11  Chris Toshok  <toshok@ximian.com>
2509         [ each of these changes fixes a line of text in drt 444 ]
2510         * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
2511         before reading it.
2513         * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
2514         UpdateLayoutAttributes if FontSource is changed, so that the
2515         change propagates down to the inlines.
2517         r: kangaroo
2519 2009-08-11  Larry Ewing  <lewing@novell.com>
2521         * grid.cpp (MeasureOverride): adjust row definition values by
2522         max/min values when building up the Actual sizes
2524         Fixes DRT #319.
2526         r: toshok
2528 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2530         * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
2531         the TextFontDescription as well as emitting an event so the view
2532         knows it has to re-render. Improves drt 480.
2533         (PasswordBox::OnPropertyChanged): Same.
2534         (TextBox::ClearFontSource): Removed, not used.
2535         (PasswordBox::ClearFontSource): Same.
2537         r:toshok
2539 2009-08-11  Andreia Gaita  <avidigal@novell.com>
2541         * runtime.cpp: TimeManager should be the last thing destroyed, other
2542         objects might need to access it while disposing. r: alan
2544 2009-08-11  Stephane Delcroix  <sdelcroix@novell.com>
2546         * multiscaleimage.cpp: cast so the modulo operation opers on int,
2547         not guint64. Fix sharedtiles usage. r:shana, lewing
2549 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2551         * textbox.cpp (TextBoxBase::Paste): Change the multiline
2552         truncation test to explicitly check for \r, \n and 0x2028 instead
2553         of using g_unichar_type() which didn't return the expected values
2554         for these characters. Partial fix for drt 2003.
2555         (*Box::OnPropertyChanged): Updated for AddResource() API change.
2557         * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
2558         AddResource() API change.
2560         * fontmanager.cpp (AddResource): Instead of having our callers
2561         generate a unique resource name, let us do it for them. Don't
2562         bother using mkstemp()/mkdtemp() since our root dir is already
2563         unique. Also fixed to reset the stream resource after consuming it
2564         so that if multiple textblocks/boxes/etc reuse the FontSource,
2565         things work properly. Partial fix for drt 444.
2567         r:lewing
2569 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2571         * runtime.cpp: Controls aren't really auto-focused. What
2572           happens is that when a focused control is removed from the
2573           live tree SL does not emit a LostFocus event and so when the
2574           control is added back into the tree it still thinks it has
2575           focus. This call is still needed as there can be pending
2576           GotFocus/LostFocus events waiting to be emitted. r: toshok.
2578 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2580         * runtime.cpp: Make HandleUIKeyPress do the same thing as
2581           HandleUIKeyRelease when there is no toplevel so it doesn't
2582           null deref. r: sde
2584 2009-08-10  Larry Ewing  <lewing@novell.com>
2586         * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
2587         jpg abort the getresource call.
2589 2009-08-07  Larry Ewing  <lewing@novell.com>
2591         * dirty.cpp (UpdateLayout): don't use the toplevel hack on
2592         noncontainers.
2594         Gets DRT #516 very close to passing slight layout problems left.
2596 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2598         * ptr.h: Change the base class to not allow direct casts to Value
2599         objects. Add cast operator to cast between DO classes directly
2601 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2603         * animation.[h|cpp]: Check for valid applier before trying to use it,
2604         it could be disposing, same for targetprop.
2605         * timemanager.cpp: clear applier when disposing
2607 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2609         * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
2610         pointer for DependencyObject.
2611         * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
2612         * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
2613         them when destroying
2615 2009-08-10  Alan McGovern  <amcgovern@novell.com>
2617         * frameworkelement.cpp: A new measure pass should be made if
2618           either the available width *or* available height has changed
2619           since the last measure pass.
2621 2009-08-10  Andreia Gaita  <avidigal@novell.com>
2623         * ptr.h: fix assignment operators, the copy by reference ones were
2624         causing the pointer to be destroyed prematurely when assigning via
2625         new ()
2627 2009-08-08  Chris Toshok  <toshok@ximian.com>
2629         * fontmanager.cpp (FontManager::AddResource): pass stream->handle
2630         as the first arg to stream->Read, not stream itself.  Also, get
2631         rid of "total" and just pass a 0 offset for each read, since we're
2632         writing the full buffer's contents up to nread each time anyway.
2634 2009-08-07  Andreia Gaita  <avidigal@novell.com>
2636         Fixes drt 2014
2638         * multiscaleimage.cpp: Fix the type of the left shit operations to
2639         avoid overflows. Make it an inline function for easier maintenance.
2640         * tilesource.[h|cpp]: Fix the type of the image width and height,
2641         should be bigger than int.
2643 2009-08-07  Jeffrey Stedfast  <fejj@novell.com>
2645         Fixes drt 337
2647         * textbox.cpp (TextBox::OnPropertyChanged): If setting
2648         SelectedText to "", don't emit TextChanged events if there was no
2649         selection.
2650         (PasswordBox::OnPropertyChanged): Same.
2652 2009-08-06  Chris Toshok  <toshok@ximian.com>
2654         * runtime.cpp (Surface::tick_after_attach_reached): the ordering
2655         of code between this method and Surface::ToplevelLoaded is likely
2656         still somewhat wrong, but moving the Emit here fixes drt #21.
2658 2009-08-06  Chris Toshok  <toshok@ximian.com>
2660         * window-gtk.cpp: move the InvokeTickCalls from here...
2662         * runtime.cpp: to the HandleUI* methods here, so they will be used
2663         in both windowed and windowless codepaths.
2665 2009-08-06  Chris Toshok  <toshok@ximian.com>
2667         * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
2668         another argument now (the data object passed to AddTickCall) so we
2669         can differentiate callbacks properly.
2671         * runtime.h|cpp (Surface::Attach): we don't return true from
2672         IsLoaded until after the first tick, so that our measure pass has
2673         been run (and contentpresenters are created for all content
2674         controls.)  register the tick call here (after removing any that
2675         may have already been added).
2676         (Surface::tick_after_attach_reached): set ticked_after_attach to
2677         true.
2678         (Surface::IsLoaded): we require ticked_after_attach to be true
2679         here.
2681         * cbinding.h|cpp: regen.
2683 2009-08-06  Jeffrey Stedfast  <fejj@novell.com>
2685         * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
2686         selection, just set the selection to the cursor position. This
2687         way, if the control gets programatically Focus()'d again, then the
2688         cursor will be where it was just before the control lost
2689         focus. Partial fix for drt 2003.
2691 2009-08-06  Jackson Harper  <jackson@ximian.com>
2693         * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
2694         property has already been set.
2695         
2696 2009-08-06  Jackson Harper  <jackson@ximian.com>
2698         * xaml.cpp: Its possible that a buffered element can add a new
2699         namespace that start_element_handler will not know about, just
2700         ignore this error and the namespace will be added when the buffer
2701         is parsed.
2703 2009-08-06  Jackson Harper  <jackson@ximian.com>
2705         * xaml.cpp: Handle null in the print_tree debug code. (This can
2706         occur when loading a null template)
2708 2009-08-05  Larry Ewing  <lewing@novell.com>
2710         * frameworkelement.cpp (UpdateLayout): revert an accidental
2711         change.
2713 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2715         * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
2716         should not copy the text buffer to the clipboard if the contents
2717         are secret.
2719 2009-08-05  Larry Ewing  <lewing@novell.com>
2721         * uielement.cpp (ElementRemoved): clear the desired size when
2722         removing the element.
2724         * layoutinformation.cpp: partially revert one of the workarounds.
2726         * frameworkelement.cpp (Arrange): get the old_size from the
2727         RenderSize not the ActualWidth.
2729 2009-08-05  Chris Toshok  <toshok@ximian.com>
2731         * popup.cpp (class GenerationClosure): new closure for emiting the
2732         Opened and Closed events.
2733         (Popup::emit_opened, Popup::emit_closed): pass the generation from
2734         the closure to ->Emit.
2735         (Popup::OnPropertyChanged): for the tick call, pass a closure that
2736         contains the current event generation.
2738         * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
2739         factor out the loop for invoking tick calls here and call it from
2740         the source tick method.
2742         * window-gtk.cpp (MoonWindowGtk::button_press)
2743         (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
2744         (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
2745         (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
2746         (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
2747         TimeManager::InvokeTickCalls from each of these methods before we
2748         call the Surface::HandleUI* method.
2750         * dependencyobject.h (class EventObject): make a couple of api
2751         changes:
2752         (AddTickCall*): add an "EventObject* data" parameter.  if it's
2753         NULL, pass "this", so we have the current behavior.
2754         (DoEmit/Emit): add a "starting_generation" optional argument.  if
2755         it's supplied, we invoke only those handlers with tokens less than
2756         the starting_generation (i.e. those handlers that were registered
2757         before the event was generated.)
2759 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2761         * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
2762         FontSource property when the FontFamily property changes.
2763         (TextBox::OnPropertyChanged): Handle FontSource property changes.
2764         (PasswordBox::OnPropertyChanged): Same.
2766         * textblock.cpp (CleanupDownloaders): Free the font_source string
2767         as well.
2768         (SetFontSource): Update the font_source string based on the
2769         downloader.
2770         (UpdateLayoutAttributes): No longer need to get the font_source
2771         string, we already have it.
2772         (UpdateFontDescriptions): Same.
2773         (OnCollectionItemChanged): Here too.
2774         (OnPropertyChanged): Update the font_source string when the
2775         FontSource property changes.
2777 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
2779         * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
2780         GdkEventButton structure, use the new MouseEventArgs accessors
2781         instead.
2783         * eventargs.cpp (GetButton): Get the id of the button pressed.
2784         (GetClickCount): Get the number of clicks on the button.
2786 2009-08-05  Alan McGovern  <amcgovern@novell.com>
2788         * panel.cpp: The LogicalParent needs to be set before the
2789           element is added, otherwise the Loaded event can be fired
2790           before LogicalParent is set.
2792 2009-08-04  Larry Ewing  <lewing@novell.com>
2794         * uielement.cpp (DoMeasure): invalidate up the tree more
2795         agressively.  Fixes DRT #190 regression.
2797 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
2799         * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
2800         callback for the MultiClick event.
2801         (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
2802         double and triple mouse clicks.
2804         * uielement.h: Added a MosueLeftButtonMultiClickEvent.
2806         * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
2807         (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
2809         * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
2811 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
2813         * utils.cpp (write_all): Changed to just return int (-1 for fail,
2814         0 for success).
2815         (ExtractFile): Don't fsync(). Saves us a lot of time.
2817 2009-08-03  Larry Ewing  <lewing@novell.com>
2819         * shape.cpp (ArrangeOverride): clear the current path.
2821 2009-08-03  Larry Ewing  <lewing@novell.com>
2823         * textbox.cpp (OnModelChanged): InvalidateMeasure when things
2824         change.
2826 2009-08-03  Jeffrey Stedfast  <fejj@novell.com>
2828         * fontmanager.cpp (AddResource): Implemented a version of this
2829         interface that can take a ManagedStreamCallbacks argument.
2831         * application.cpp (GetResourceAsPath): If we are adding the X's
2832         ourselves, use MakeTempDir() instead of CreateTempDir().
2834 2009-07-31  Larry Ewing  <lewing@novell.com>
2836         * layoutinformation.cpp (GetClip): add another hack for layoutclip
2837         on Controls while things are in flux.
2839 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2841         * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
2842         the work was enqueued or not.
2844 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2846         * pipeline.cpp: Media: use the new ClearQueue overload instead of
2847         spreading the logic all over the place.
2849 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2851         * pipeline.cpp: Media: add a ClearQueue overload which optionally
2852         deletes the queue.
2854 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2856         * playlist.cpp: Don't g_warn something which can happen in normal
2857         circumstances.
2859 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2861         * mediaplayer.cpp: Plug a leak in one rare code-path.
2863 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2865         * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
2867 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2869         * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
2871 2009-07-31  Jeffrey Stedfast  <fejj@novell.com>
2873         * fonts.cpp (LoadPortableUserInterface): Always load the en-US
2874         font(s) first, and then load the preferred CJK font, followed by
2875         the rest. This improves drt 414.
2877         * fontmanager.cpp (GetExtents): Improved baseline alignment by
2878         adjusting Descent if Height is larger than Ascent +
2879         Descent. Especially visible with drt 107's Deobfuscated Brauhaus
2880         93 font rendering.
2882 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2884         * deployment.cpp: Dispose: we need to unref and null out the application.
2886 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2888         * error.cpp|h:
2889         * downloader.cpp:
2890         * eventargs.cpp|h: Set the object's type upon construction instead
2891         of using SetObjectType right after. This is useful when tracking
2892         objects by type - the ctor also shows up.
2894         * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
2895         a Type::Kind argument.
2897 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2899         * debug.cpp: Make the stacktrace pipes thread-local. This way
2900         printing stacktraces from several threads at the same time doesn't
2901         result in a big mess.
2903 2009-07-30  Larry Ewing  <lewing@novell.com>
2905         * layoutinformation.cpp (GetClip): add a workaround for the panel
2906         case while layoutinformation is refactored.
2907         
2908 2009-07-30  Larry Ewing  <lewing@novell.com>
2910         * layoutinformation.cpp: repair a merge bug.
2912 2009-07-30  Larry Ewing  <lewing@novell.com>
2914         * layoutinformation.cpp, layoutinformation.h: move layoutinformation
2915         out of uielement.h.  Compute the layout clip on the fly.
2917         * border.cpp:
2918         * dependencyproperty.g.cpp:
2919         * frameworkelement.cpp:
2920         * frameworkelement.h:
2921         * glyphs.cpp:
2922         * media.cpp:
2923         * mediaelement.cpp:
2924         * panel.cpp:
2925         * point.h:
2926         * shape.cpp:
2927         * textblock.cpp:
2928         * textbox.cpp:
2929         * textbox.h:
2930         * uielement.cpp:
2931         * uielement.h: start reworking layout logic at we refactor
2932         layoutinformation.  Use RenderLayoutClip where appropriate.
2934 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
2936         * fontmanager.cpp (GetExtents): Much better fix than the
2937         string-comparison hack. Poke at the TrueType/OpenType OS/2 table
2938         and use the usWinAscent/usWinDescent values since this is what
2939         most Windows applications (brokenly) use according to some info I
2940         found on the web. Low and behold, this also makes the Adobe Caslon
2941         Pro metrics work out exactly like they do in Silverlight, so I'm
2942         guessing that the info I found is accurate :-)
2944 2009-07-30  Larry Ewing  <lewing@novell.com>
2946         * uielement.cpp (DoArrange): revert the parent invalidation change as it
2947         did break things.
2949 2009-07-30  Larry Ewing  <lewing@novell.com>
2951         * control.cpp (OnPropertyChanged): update the layout if the
2952         aligment changes.
2954 2009-07-30  Larry Ewing  <lewing@novell.com>
2956         * uielement.cpp (DoArrange): remove the parent invalidation call
2957         it shouldn't be required now and is contraindicated by DRT #501.
2959         * runtime.cpp: InvalidateMeasure on resize.
2961 2009-07-30  Alan McGovern  <amcgovern@novell.com>
2963         * popup.cpp:
2964         * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
2966         * runtime.cpp:
2967         * dependencyobject.h:
2968         * dependencyobject.cpp: Implement a new method for adding
2969           callbacks to invoke asynchronous events. They can't be
2970           invoked using the regular AddTickCall as that causes the
2971           ordering of mouse events and asynchronous events to be
2972           incorrect preventing drt 333, 476 and some others from
2973           passing.
2975 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
2977         * fontmanager.cpp (GetExtents): Now uses the alternative method of
2978         getting font metrics. Also, when dealing with Adobe fonts, use the
2979         bbox to get metrics rather than using the normal
2980         ascender/descender/height values.
2982 2009-07-30  Jackson Harper  <jackson@ximian.com>
2984         * xaml.cpp: Swallow white space before linebreaks. 
2986 2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2988         * src.mdp: Connect the Build command in
2989         MonoDevelop with 'make install'.
2991 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2993         * multiscaleimage.cpp: leak and initialization fixes
2995 2009-07-30  Andreia Gaita  <avidigal@novell.com>
2997         * shape.cpp: use smart pointer to avoid unreffing by hand
2999 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3001         * timeline.cpp: leak fix
3003 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3005         * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
3006         * Makefile.am: updated
3008 2009-07-29  Larry Ewing  <lewing@novell.com>
3010         * border.cpp (ArrangeOverride): return the input now that it is
3011         correctly sized.
3013         * frameworkelement.cpp: short circuit Measure and Arrange if the
3014         element is collapsed.
3016 2009-07-29  Jeffrey Stedfast  <fejj@novell.com>
3018         * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
3019         of the keyboard event was handled (meaning the state has changed).
3020         (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
3021         here.
3023 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3025         * shape.cpp: Plug a leak.
3027 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3029         * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
3030         semantics as EventObject::Emit: unref the event args at the end of
3031         the Emit method.
3033 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3035         * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
3036         unreffing the reffed media we've got.
3038 2009-07-29  Sebastien Pouliot  <sebastien@ximian.com>
3040         * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
3041         Helper.CheckIntegrity (System.Windows.dll)
3043 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3045         * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
3046         improvement: return true immediately if we've actually managed to
3047         open a demuxer instead of enqueuing another call to
3048         SelectDemuxerAsync.
3050 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3052         * pipeline-asf.cpp:
3054         * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
3055         to the playlist before initializing it, since initializing it may
3056         end up opening it right away and then it must be present in the
3057         playlist.
3059 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3061         * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
3062         created when done with them.
3064 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3066         * pipeline.cpp: printf -> LOG_PIPELINE.
3068 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3070         * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
3071         when we're done with it.
3073 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3075         * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
3076         unref it when done with it.
3078 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3080         * dependencyobject.h: Make EventObject::GetObjectType
3081         non-virtual. No need for a virtual method anymore, since we store
3082         the type on the object itself.
3084 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3086         * application.cpp: unref the downloader when it has finished.
3088 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3090         * utils.cpp|h: Cancellable: use strong typing to store the
3091         downloader and ref it. This way the cancel callback can use the
3092         downloader safely.
3094 2009-07-29  Alan McGovern  <amcgovern@novell.com>
3096         * textbox.h:
3097         * cbinding.h:
3098         * textbox.cpp:
3099         * cbinding.cpp: 1) TextBox cannot hook into Key press events
3100           in unmanaged code otherwise they never propagate to managed
3101           and the user cannot intercept them. Instead of hooking to
3102           the event in native code, just call native
3103           TextBox::OnKeyDown in the managed override.
3104         2) Key press events are actually handled in two different
3105           places. 'Navigation' keypresses like Left/Right/PgUp are
3106           handled when the textbox OnKeyDown virtual method is
3107           invoked. 'Character' keypresses like 'a', 'b', 'c' are
3108           handled after the KeyDown event is emitted
3109         3) If a key press does not affect the textbox state (i.e.
3110           pressing 'left' when the caret is already at the very left),
3111           then the keypress is not handled.
3112         4) The KeyDown event is emitted even if OnKeyDown is overriden
3113           and the base method is not invoked.
3114         5) The tab key should be interpreted as 'Focus next control'
3115           only after the KeyDown event handlers have run and the key
3116           press is not handled.
3118 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3120         * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
3121         know we can't decode. This means that if the user does not have
3122         MS codecs (or any other codecs) installed, he'll get the download
3123         codecs dialog for wmav3 media too.
3125 2009-07-28  Sebastien Pouliot  <sebastien@ximian.com>
3127         * mediaelement.cpp: Add a check if the codecs have already been 
3128         downloaded/installed without refreshing the browser. This will
3129         stop additional dialogs showing up and fix a crash (x86_64) if
3130         the codecs are downloaded/installed a second time in the same 
3131         session.
3133 2009-07-27  Larry Ewing  <lewing@novell.com>
3135         * src/border.cpp:
3136         * src/frameworkelement.cpp:
3137         * src/media.cpp:
3138         * src/shape.cpp:
3139         * src/textblock.cpp:
3140         * src/usercontrol.cpp: Move the alignment logic out of the
3141         controls and into the Arrange call now.
3143         Fixes DRT #335 improves several others.
3144         
3145 2009-07-28  Jackson Harper  <jackson@ximian.com>
3147         * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
3148         another name
3149         - Don't create a Matrix for TRANSFORM properties if "Identity" was
3150         used as the string.  (kinda seems like an SL bug to me).
3152 2009-07-28  Jeffrey Stedfast  <fejj@novell.com>
3154         * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
3156         * window-gtk.cpp (button_press): Revert change to drop
3157         2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
3158         we find a better way (also, 234 is still broken even with this
3159         change, which breaks 337 and possibly makes other
3160         TextBox/PasswordBox drts unfixable).
3162 2009-07-27  Larry Ewing  <lewing@novell.com>
3164         * glyphs.cpp, glyphs.h: Start implmenting glyph layout.  Fixes DRT #442.
3166 2009-07-27  Larry Ewing  <lewing@novell.com>
3168         * frameworkelement.cpp: Always round down when doing layout
3169         rounding.  
3170         
3171         * uielement.cpp (OnPropertyChanged): Invalidate layout on
3172         rounding changes.
3174         Fixes ... a lot.
3175         
3176 2009-07-27  Chris Toshok  <toshok@ximian.com>
3178         * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
3179         handler *after* all registered handlers.  part of the fix for drt
3180         234.
3182         * window-gtk.cpp (MoonWindowGtk::button_press): ignore
3183         double-click and triple click gdk events here.  part of the fix
3184         for drt 234.
3186 2009-07-27  Jackson Harper  <jackson@ximian.com>
3188         * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB.  It
3189         is legal to hydrate a top level managed non DOB class.
3190         * cbinding.cpp|h: regen
3192 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3194         * mp3.cpp: When seeking and we don't have enough data to seek to
3195         the desired pts, try again a bit later. Fixes MS DRT #59.
3197 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3199         * src.mdp: Use Makefile integration.
3201 2009-07-27  Alan McGovern  <amcgovern@novell.com>
3203         * uielement.cpp: Default styles are applied even if the user
3204           applies a style. Fixes some visual glitches in the controls
3205           toolkit site.
3207 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3209         * pipeline.cpp|h: Use Application::GetResource instead of creating
3210         downloaders to get data.
3212 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3214         * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
3215         error.
3217 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3219         * application.cpp: GetResource: set the notify_size callback
3220         on the downloader too. Media must known the size whenever possible.
3222 2009-07-27  Larry Ewing  <lewing@novell.com>
3224         * uielement.cpp (GetTransformToUIElementWithError): signal and
3225         error in the to_element doesn't have a Surface case.
3227 2009-07-26  Larry Ewing  <lewing@novell.com>
3229         * rect.h: make PointInside inclusive on the top/left.
3231 2009-07-24  Larry Ewing  <lewing@novell.com>
3233         * textblock.cpp:  Rework the bounds computation to be the max of
3234         the actual and the framework element settings.  Fixes DRT #245.
3236 2009-07-24  Larry Ewing  <lewing@novell.com>
3238         * border.cpp: Apply the default constraints more carefully.
3240         * src/frameworkelement.cpp, src/frameworkelement.h: add
3241         ApplySizeContraints method, use it.
3243         * src/canvas.cpp:
3244         * src/shape.cpp:
3245         * src/textblock.cpp:
3246         * src/usercontrol.cpp: use ApplySizeContraints method.
3248 2009-07-24  Larry Ewing  <lewing@novell.com>
3250         Rename some of the layout information based on some
3251         of the tests.
3253 2009-07-24  Jeffrey Stedfast  <fejj@novell.com>
3255         * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
3256         width/height properties change, pass those values along to our
3257         TextBoxView as well.
3259 2009-07-24  Jackson Harper  <jackson@ximian.com>
3261         * xaml.cpp: Instead of cloning the element set it's namescope
3262         explicitly so it doesn't get registered in another namescope when
3263         it is used as a property of an element in another namescope.
3265 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
3267         * downloader.cpp (same_domain): Fixed to be safe if/when a uri
3268         host is NULL.
3270 2009-07-23  Alan McGovern  <amcgovern@novell.com>
3272         * animation.cpp: If the initial value is null, create a Value
3273         with the correct type with IsNull set to true.
3275 2009-07-23  Jackson Harper  <jackson@ximian.com>
3277         * xaml.cpp: If we are getting a named item from the app resources
3278         we should clone it since it comes from a different namescope. This
3279         allows you to have named items in app.resources be referenced in
3280         control code as a static resource even if it has the same name as
3281         an object in the control code.
3283 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
3285         * fonts.cpp (LoadPortableUserInterface): Even if we are a
3286         Silverlight 2.0 app, we still need to load Lucida Sans for the
3287         font face extents (Lucida extents seem to be very close to what
3288         Microsoft Silverlight is using).
3290 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3292         * runtime.cpp: HandleUIKeyRelease: add a null check before
3293         accessing toplevel. Apparently toplevel can be null when the
3294         site fails to load completely (mstv.cz / bug #506306).
3296 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3298         * media.h: MarkerReachedEventArgs: make Markers accessible to
3299         managed code.
3301         * cbinding.h:
3302         * cbinding.cpp: Regenerated.
3304 2009-07-22  Chris Toshok  <toshok@ximian.com>
3306         * animation.h|cpp: add some more accessors for AnimationStorages
3307         so we can clone them.
3309         * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
3310         from here, and put it in DependencyObject where (imo) it belonged
3311         all along.
3313         * dependencyobject.h|cpp: move the AnimationStorage stuff here,
3314         and also add support for cloning the storage while we're cloning
3315         the object.  This means that new animations started against
3316         existing objects (with animations) will inherit the right reset
3317         value.  This fixes the button animation regression.
3319 2009-07-22  Jeffrey Stedfast  <fejj@novell.com>
3321         * fonts.cpp (LoadPortableUserInterface): If the application is a
3322         Silverlight 2.0 app, default to Verdana instead of Lucida Sans
3323         Unicode.
3325         * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
3326         is a no-op for ReadOnly TextBox controls.
3328 2009-07-22  Sebastien Pouliot  <sebastien@ximian.com>
3330         * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
3331         the current timemanager.
3333 2009-07-21  Jeffrey Stedfast  <fejj@novell.com>
3335         * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
3336         bit.
3337         (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
3338         Cut/Copy/Paste.
3339         (TextBoxBase::OnKeyDown): If there is no selection and the user
3340         invokes the Cut or Copy commands, do not overwrite the clipboard
3341         buffer with an empty string.
3343 2009-07-21  Jackson Harper  <jackson@ximian.com>
3345         * xaml.cpp: Raise errors from managed SetProperty.
3347 2009-07-21  Jackson Harper  <jackson@ximian.com>
3349         * xaml.cpp: Don't raise errors if we are a managed element, let
3350         the managed SetProperty handle that stuff.
3352 2009-07-21  Alan McGovern  <amcgovern@novell.com>
3354         * geometry.h:
3355         * dependencyproperty.g.cpp: The issue with auto creating
3356           PathGeometry.Figures appears to be fixed so add
3357           AutoCreateValue to FiguresProperty and see how the bots
3358           react...
3360 2009-07-20  Chris Toshok  <toshok@ximian.com>
3362         * application.h|cpp: add a ResourceBase parameter to all the
3363         GetResource calls and to the GetResourceCallback delegate type.
3365         * dependencyobject.h (DependencyObject::SetResourceBase,
3366         DependencyObject::GetResourceBase): new methods.
3368         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3369         "inherit" resource base from our parent (this might be very, very
3370         wrong...)
3371         (DependencyObject::Initialize): init resource_base to null.
3372         (DependencyObject::~DependencyObject): free resource_base.
3374         * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
3375         resource using our resource base.
3377         * template.cpp (FrameworkTemplate::GetVisualTree): use the same
3378         resource base when expanding the template.
3380         * textblock.cpp (Inline::AddFontResource): locate the font using
3381         our resource base.
3382         (TextBlock::AddFontResource): same.
3384         * textbox.cpp (TextBoxBase::AddFontResource): same.
3385         using our resource base.
3387         * glyphs.cpp (Glyphs::SetFontResource): same.
3389         * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
3390         those SetSurface calls, and put it here.  Also, set the resource
3391         base at the same time.
3392         (XamlLoader::Initialize): store off the resource_base.
3393         (XamlLoader::~XamlLoader): and free it.
3394         (xaml_loader_new): take a resourceBase, and pass it along.
3395         (XamlLoader::HydrateFromString): set the ResourceBase on the
3396         toplevel object.
3397         (create_element_info_from_imported_managed_type): remove the
3398         SetSurface call, just call XamlParserInfo::AddCreatedElement.
3399         (XamlElementInstanceNative::CreateItem): same.
3400         (XamlElementInfoManaged::CreateElementInstance): same.
3401         (XamlElementInfoManaged::CreateWrappedElementInstance): same.
3403         * xaml.h (class XamlLoader): add a common Initialize method, and a
3404         ctor overload that takes a "resource base", which is the uri which
3405         we're loading from.  Also add a GetResourceBase() accessor.
3407         * cbinding.h: regen
3409 2009-07-20  Larry Ewing  <lewing@novell.com>
3411         * uielement.cpp (ComputeTransform): add a hack for placing popup
3412         children for now.
3414         * popup.cpp: call updatetransform on our child whenever the offset
3415         values change.  Fixes DRTs #325 #503 
3416         
3417 2009-07-18  Jackson Harper  <jackson@ximian.com>
3419         * xaml.h|cpp: New flag on the loader for determining whether or
3420         not to auto import the default SL namespace.
3421         - Throw the proper error if the default namespace isn't available.
3422         * template.cpp: Templates get the default namespace auto
3423         imported.
3425 2009-07-17  Larry Ewing  <lewing@novell.com>
3427         * runtime.cpp (Attach): copy the current framerate to the new
3428         timemanager.
3430 2009-07-17  Jeffrey Stedfast  <fejj@novell.com>
3432         * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
3433         multiline support.
3434         (TextBoxBase::Paste): Consider the SelectionLength in our
3435         MaxLength overflow calculation.
3436         (TextBuffer::ctor): Instead of taking ownership of a string
3437         buffer, just copy it instead. This keeps memory management more
3438         obvious higher up.
3439         (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
3440         'inserted' string.
3441         (TextBoxUndoActionReplace::ctor): Same, so copy it.
3442         (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
3443         the undo action. I think some of these situations leaked before.
3445 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3447         * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
3449 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3451         * multiscaleimage.cpp: more protections against crash with 31 layers
3453 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3454         
3455         * multiscaleimage.cpp: allow up to 31 layers.
3457 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3459         * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
3461 2009-07-17  Alan McGovern  <amcgovern@novell.com>
3463         * runtime.cpp: Correctly set 'emittingMouseEvent' to
3464           true/false when we receive a mouse event. Fixes some mouse
3465           capture issues in drt 535
3467 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3469         * playlist.cpp|h: Make the *Async methods really async, and add corresponding
3470         non-async methods.
3472         * mediaplayer.cpp: Don't allow Play while we're seeking.
3474         * mediaelement.cpp: When calling any of the async methods on the playlist,
3475         set the expected state immediately, since CurrentState is not async. Also
3476         allow Play/Pause/Stop if we're already in the desired state, since there might
3477         be another state changed pending.
3479 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3481         * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
3483 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3485         * pipeline.cpp|h: Notify the decoder when a seek has completed so
3486         that it can clean its state properly. FillBuffers: the final buffer size
3487         is equal to the smallest buffer size of all the streams, not the buffer
3488         size of the last stream.
3490 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3492         * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
3493         has already finished.
3495 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3497         * playlist.cpp|h: Fix IsSingleFile implementation.
3499         * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
3500         a Stop for non-playlist media.
3502 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3504         * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
3505         it whenever we stop the audio. AdvanceFrame: For media with a specified
3506         duration stop the audio when we've reached the desired duration.
3508 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3510         * mediaelement.cpp: OpenCompletedHander: Before emitting
3511         DownloadProgressChangedEvent get the highest DownloadProgress value
3512         from either our own dependency property or the media. For mms streams
3513         download progress needs to be 1.0 when emitting MediaOpenedEvent,
3514         the mms code sets media's DownloadProgress to 1.0 after parsing the
3515         asf header correctly, but since the media emits the DownloadProgressChanged
3516         event async, the dependency property in MediaElement hasn't been updated
3517         yet in OpenCompletedHandler.
3519 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3521         * pipeline.cpp: Allow buffering progress to go down, not only up.
3522         Also fix progress events to only emit if delta > 0.5% or if equal
3523         to lower/upper limits.
3525 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3527         * pipeline.cpp|h: When we get a decode frame request from another
3528         thread, store the request on the demuxer in a list, instead of on the
3529         media thread's stack. This ensures that decode frame requests are
3530         decoded in the same order they're requested.
3532         * type.h:
3533         * value.h:
3534         * cbinding.h:
3535         * type-generated.cpp: Regenerated.
3537 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3539         * playlist.cpp|h: Added and Emit EntryChangedEvent.
3541         * type-generated.cpp: Regenerated.
3543 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3545         * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
3546         it here.
3548 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3550         * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
3551         buffer level will fluctuate as we play.
3553 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3555         * mediaelement.cpp|h: When we pause, store the current position, which we must return
3556         while paused. It may differ from the actual position when we pause, since the actual
3557         pause is done async.
3559 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3561         * mediaplayer.cpp|h:
3562         * mediaelement.cpp|h: Use a property value provider for
3563         Render/DroppedFramesPerSecond.
3565 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3567         * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
3568         call us from a worker thread.
3570 2009-07-16  Jackson Harper  <jackson@ximian.com>
3572         * xaml.cpp: When creating user controls make sure that we are
3573         hydrating if an x:Class type name is used.
3575 2009-07-16  Jeffrey Stedfast  <fejj@novell.com>
3577         * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
3578         'atomic' argument. If atomic is true, then the buffer is not
3579         growable. This is the behavior we want for TextBoxBase::Paste(),
3580         but not TextBoxBase::Commit() (which needs to allow growable
3581         insert actions so that Undo removes the string of text the user
3582         just typed as opposed to just the most recent character).
3583         (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
3584         TextBoxUndoActionInsert::.ctor().
3586 2009-07-16  Alan McGovern  <amcgovern@novell.com>
3588         * control.h:
3589         * uielement.h:
3590         * control.cpp:
3591         * uielement.cpp: 1) If the Control is not attached to a
3592           subtree which has been loaded, don't propagate IsEnabled to
3593           its children.
3594         2) Whenever a Control is loaded we traverse it's visual
3595           parents until we find another control and propagate the
3596           IsEnabled state.
3598 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3600         * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
3601         properties as AlwaysChange. fix drt #291.
3603 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3605         * dependencyobject.cpp: Retrieve all instance variables we need
3606         into local variables before decreasing the refcount. If the
3607         refcount is > 0 after decreasing it, we can't access instance
3608         variables anymore, since another thread might have unreffed which
3609         would cause the object to be deleted already.
3611 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3613         * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
3614         a comment.
3616 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3618         * dependencyobject.cpp: Add sanity check for refcount < 0.
3620 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3622         * dependencyobject.cpp: Move sanity verification into #if SANITY.
3624 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3626         * dependencyobject.h: Is, GetType, GetTypeName: use the Type
3627         overloads which takes a Deployment and provide our deployment
3628         instance.
3630 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3632         * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
3633         which takes a Deployment argument for when we already have the
3634         Deployment handy.  This way we can avoid hitting
3635         Deployment::GetCurrent on some frequently used methods.
3637         * type.h: Regenerated.
3639 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3641         * runtime.h: Add stack trace to warning.
3643 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3645         * audio.cpp: Underflowed: if we haven't ended and don't have any
3646         more frames, we need to set the Waiting bit so that we start
3647         playing again when we get more frames.
3649 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3651         * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
3652         avoid issues while reusing dlders for the same images, like in drt2013
3654 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
3656         * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
3657         on tilesource InvalidateTileLayer ().
3659 2009-07-16  Jackson Harper  <jackson@ximian.com>
3661         * xaml.cpp: Remove some dead code.
3663 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3665         * deployment.h: DeploymentStack: Added to ease push/pop current
3666         deployment when calling into a browser.
3668 2009-07-15  Chris Toshok  <toshok@ximian.com>
3670         * clock.h|cpp (Clock::CalculateFillTime): split this out from
3671         Clock::Begin since we can seek on a clock that hasn't actually hit
3672         Clock::Begin yet.
3673         (Clock::Begin): call CalculateFillTime.
3674         (Clock::UpdateFromParentTime): change our calculations slightly
3675         for what localTime is in the face of a seek, and update
3676         progress/localtime even when stopped.  Also, call
3677         CalculateFillTime if we're seeking on a clock that hasn't started,
3678         to make sure we get the proper progress.
3679         (Clock::Seek): don't apply the SpeedRatio here, we do it in
3680         UpdateFromParentTime.
3682         * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
3683         never used.
3684         (AnimationStorage::UpdatePropertyValue): pass the stopValue or
3685         baseValue as the defaultDestinationValue to
3686         AnimationClock::GetCurrentValue.
3687         (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
3688         (DoubleAnimation::GetCurrentValue): if there's a correctly typed
3689         defaultDestinationValue, use that before the base case of end =
3690         start.
3691         (ColorAnimation::GetCurrentValue): same.
3692         (PointAnimation::GetCurrentValue): same.
3694 2009-07-15  Jackson Harper  <jackson@ximian.com>
3696         * xaml.cpp|h: Consolidate some of the data passed to
3697         every callback and not used much into a struct.
3699 2009-07-15  Jeffrey Stedfast  <fejj@novell.com>
3701         * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
3702         return NULL, so properly handle this error condition.
3703         (IndexFontFile): Same.
3704         (FontManager::OpenFontFace): Here too.
3705         (OpenSystemFont): Don't destroy the FcPattern until after opening
3706         the font (otherwise the filename will be free'd memory).
3708         * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
3709         get the brush used for rendering the blinking caret. This is a 3.0
3710         feature.
3712 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3714         * control.h:
3715         * control.cpp: Remove the Control::SetVisualParent override
3716           which ensures Control::IsEnabled is propagated correctly as
3717           this needs to be performed in UIElement::SetVisualParent.
3718           Set the subtreeobject before calling
3719           FrameworkElement::ElementAdded otherwise Control::IsEnabled
3720           cannot be propagated.
3722         * uielement.h:
3723         * uielement.cpp: Whenever the visual parent is changed on a
3724           UIElement we need to propagate Control::IsEnabled changes
3725           down the tree. Allows drt 557 to get a lot further.
3727 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3729         * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
3731 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3733         * pipeline.cpp: When seeking, reset buffering progress to 0.
3735 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3737         * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
3738         (that we know of), so initialize DownloadProgress to 1.0.
3740 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3742         * mediaelement.cpp: Don't emit CurrentStateChanged after calling
3743         SetState, since SetState will also emit the event.
3745 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3747         * tabnavigationwalker.cpp: If a child node is disabled, there
3748           is no point in walking its children or attempting to tab to
3749           it.
3751 2009-07-15  Jackson Harper  <jackson@ximian.com>
3753         * xaml.cpp: We don't want to auto import the SL namespaces when
3754         loading files
3755         
3756 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3758         * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
3760         * cbinding.cpp|h: Regenerated.
3762 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3764         * bitmapimage.h|cpp: drop the downloader references, rely on
3765         Application::GetResource () for getting from resource AND downloading. The
3766         old downloader mechanism for v1 js callbacks.
3768 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
3770         * application.h|cpp: Application.GetResource () now try to get the resource
3771         from the managed callback, then fallback to downloading.
3773 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
3775         * utils.h|cpp: Cancellable class, passed as method argument, allows
3776         to abort an async action.
3778 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3780         * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
3781         hook itself in and invalidate the cache
3783 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
3785         * tilesource.h|cpp: stub InvalidateTileLayer
3787 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3789         * control.cpp: Ensure that the control loses focus when it is
3790           disabled even if there are no other focusable controls. Also
3791           ensure the surface is not null before using it, fixes a
3792           regression in 432.
3794 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3796         * error.h: ErrorEventArg: Add accessors that can be pinvoked.
3798         * cbinding.cpp|h: Regenerated.
3800 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3802         * control.cpp: When the focused control is disabled, tab to
3803           the next suitable control.
3805 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3807         * runtime.h:
3808         * runtime.cpp: Implement the default autofocusing behaviour
3809           which silverlight exhibits. Apparently if the root control
3810           is focused, silverlight will keep attempting to focus a
3811           child of that control until it succeeds. Once a child
3812           control is focused, the focus changed events are emitted
3813           immediately, ignoring the usual focusing rules. Fixes DRT
3814           323.
3816 2009-07-15  Alan McGovern  <amcgovern@novell.com>
3818         * uielement.cpp: When clearing the Loaded flag on a UIElement,
3819           we should clear the flag on all visual children too.
3821 2009-07-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3823         * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
3825 2009-07-14  Larry Ewing  <lewing@novell.com>
3827         * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
3828         bounds when the bg changes.  Fixes 641
3830 2009-07-14  Larry Ewing  <lewing@novell.com>
3832         * border.cpp (OnSubPropertyChanged): elements must listen to
3833         subproperty changes for brushes.  Fixes 2020
3835 2009-07-14  Alan McGovern  <amcgovern@novell.com>
3837         * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
3838           called on a Control with the 'Cycle' navigation mode and
3839           none of the children of that node can be tabbed to, then
3840           focus remains on that control.
3842 2009-07-13  Jeffrey Stedfast  <fejj@novell.com>
3844         * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
3845         string array until after we've finished using the hash
3846         table. Prevents FMRs.
3848 2009-07-13  Jackson Harper  <jackson@ximian.com>
3850         * xaml.cpp: Don't allow setting x:Name and Name on the same
3851         element
3852         - Raise an error if we try to set a property to an incompatible
3853         type.
3855 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3857         * runtime.cpp:
3858         * uielement.cpp: If the focused element is removed from the
3859           visual tree, it should lose focus.
3861 2009-07-13  Jackson Harper  <jackson@ximian.com>
3863         * xaml.cpp: Oops, trying to get the element name from the wrong
3864         void*
3866 2009-07-13  Jackson Harper  <jackson@ximian.com>
3868         * xaml.cpp: Handle MoonErrors for AddChild.
3870 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3872         * mp3.cpp:
3873         * pipeline.h:
3874         * playlist.cpp:
3875         * pipeline.cpp:
3876         * pipeline-asf.cpp:
3877         * mms-downloader.cpp: IMediaObject: make the media field
3878           private, and add thread-safe property accessors (using a
3879           mutex and always returning a reffed object). Update all code
3880           which accessed the old accessor to use the new accessor and
3881           unref the media when done.
3883 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3885         * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
3887         * type.h:
3888         * value.h:
3889         * type-generated.cpp: Regenerated.
3891 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3893         * control.cpp: A control does not have to be loaded to be
3894           focusable, the visual tree it's attached to has to be
3895           loaded.
3897 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3899         * cbinding.h:
3900         * cbinding.cpp:
3901         * tabnavigationwalker.h: TabNavigation should activate if the
3902           control does not handle the Tab key
3904 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3906         * src.mdp:
3907         * cbinding.h:
3908         * Makefile.am:
3909         * collection.h:
3910         * collection.cpp:
3911         * tabnavigationwalker.h:
3912         * tabnavigationwalker.cpp: Commit the initial implementation
3913           of the TabNavigationWalker. Supports the three tabbing modes
3914           and also forward/backward tabbing. Passes drt 323 except for
3915           a default focusing issue.
3917 2009-07-13  Alan McGovern  <amcgovern@novell.com>
3919         * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
3920           KeyTab press.
3922 2009-07-13  Jérémie Laval  <jeremie.laval@gmail.com>
3923         * src/xaml.cpp
3924         * src/dependencyproperty.cpp: Added const modifier to local variables.
3925         Fix the build with recent gcc.
3927 2009-07-10  Chris Toshok  <toshok@ximian.com>
3929         * value.h.in|cpp (Value::Clone): new method, clone the DO if the
3930         value contains one, and otherwise just copy the contents.
3932         * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
3933         this is probably wrong, as the mapping needs to reference cloned
3934         objects, not the same objects that existed in the original
3935         mapping.
3937         * collection.h|cpp (Collection::CloneCore): clone the collection
3938         contents.
3940         * dependencyproperty.h|cpp (resolve_property_path): add a
3941         promoted_values hashtable argument.  if the value has already been
3942         promoted, don't do it again. promote the first value we can while
3943         resolving the property path.  Don't promote UIElement subclasses
3944         though.
3945         
3946         * dependencyobject.h|cpp: add api for cloning (deep copying) for
3947         DependencyObjects.  DependencyObject::Clone is the public
3948         interface, with subclasses overriding ::CloneCore if they need to.
3950         * color.cpp (color_to_string): multiply by 255, not 256.
3952         * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
3953         takes a hashtable now so we don't promote values more than
3954         once (doing so causes previous animations to target objects that
3955         are no longer attached anywhere).
3957         * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
3959 2009-07-10  Larry Ewing  <lewing@novell.com>
3961         * shape.cpp (MeasureOverride): start working towards fixing
3962         LayoutShapes with some tweaking here.
3963         (Clip): apply the framework clip to elements in the flow too.
3965 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
3967         * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
3968         instead of Gtk+.
3969         (TextBoxBase::CursorPrevWord): Same.
3970         (TextBoxBase::KeyPressRight): If there is currently a selection
3971         and the user presses ArrowRight by itself, set the anchor and
3972         cursor at the end of the selection.
3973         (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
3974         of the selection.
3976 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
3978         * textbox.cpp: Always set SelectionStart before
3979         SelectionLength. Fixes a bug when selecting backwards from the end
3980         of the buffer.
3982 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3984         * mediaelement.cpp|h: Store the last seeked-to position so that we never
3985         return a value before that as the current Position. MS DRT #486 uses
3986         a MediaStreamSource which returns frames before the seeked to position
3987         after seeking, and the test checks that MediaElement's Position property
3988         never returns a value before the seeked to position.
3990 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3992         * audio.cpp: When we stop, we need to discard any audio data we might
3993         have stored.
3995 2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>
3997         * runtime.cpp|h, type-generated.cpp: Rename 
3998         SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
4000 2009-07-09  Jeffrey Stedfast  <fejj@novell.com>
4002         Fixes DRT #246
4004         * uri.cpp: Don't use a GData for params, instead use a custom
4005         linked-list. This makes it easier to compare param lists.
4006         (operator==): Compare params.
4008         * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
4009         the selection.
4011 2009-07-09  Jackson Harper  <jackson@ximian.com>
4013         * dependencyobject.cpp|h: Add a little more logic for setting
4014         things to NULL and consolidate in it's own function (STRING can
4015         now be set to NULL).
4017 2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>
4019         * downloader.cpp|h: Don't check redirection AFTER downloading the
4020         data. Expose CheckRedirectionPolicy so the plugin can check for
4021         the redirection policy when creating a new stream.
4022         * uri.cpp|h: Add IsAbsolute method and make the return value of
4023         IsScheme const.
4025 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4027         * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
4028         the root takes care of that. (Playlist): loop over all children and
4029         call StopAsync on them, this way all nested playlists are reset properly
4030         (PlaylistRoot): when done stopping, reopen us.
4032 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4034         * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
4036 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4038         * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
4040 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4042         * mediaelement.cpp: Don't go directly into a Buffering state, when
4043         MediaOpened is emitted we must be either in Paused or Playing state.
4045 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4047         * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
4049 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4051         * mediaelement.cpp|h: Emit CurrentState events asynchronously.
4053 2009-07-08  Larry Ewing  <lewing@novell.com>
4055         * frameworkelement.cpp (Arrange): apply min/max values to the
4056         offer.
4058 2009-07-08  Jeffrey Stedfast  <fejj@novell.com>
4060         * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
4061         at opening the requested system font. First, try using the font
4062         name exactly as the user gave it to us. If that fails, fallback to
4063         canonicalizing it and the style values.
4064         (style_diff): Modify the algorithm used to compare the style
4065         difference between 2 fonts.
4067 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4069         * validators.cpp|h:
4070         * mediaelement.h: Add validators for Balance and Volume.
4071         This fixes MS DRT #960.
4073         * value.cpp|in: Add support for changing a value.
4075         * value.h:
4076         * dependencyproperty.g.cpp: Regenerated.
4078 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4080         * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
4081         some casing changes with media attributes. PlayNext: fix logic, after
4082         finishing a nested playlist we must play the next entry in our playlist,
4083         not finish right away. If the pipeline raises a MediaError event due to
4084         missing a codec (which is most likely due to an unsupported media file),
4085         don't propagate the error, just play the next entry. Fix a lot of error
4086         code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
4087         as 99.6% of our playlist tests.
4089 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4091         * pipeline.h:
4092         * playlist.h|cpp: Unify playlist detection into one place and add
4093         support for skipping initial whitespace in the file.
4095 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4097         * playlist.cpp|h: String setters: be consistent: take a const string
4098         and dup inside the setter if required, instead of always when calling
4099         the setter, which may leak.
4101 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4103         * playlist.cpp: OnASXStartElement: null initialize to avoid reading 
4104         random memory.
4106 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4108         * playlist.cpp: Cleanup: cleanup properly since we may continue to live
4109         after this method has been called.
4111 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4113         * playlist.cpp: PlaylistEntry: needs to ref/unref the source. 
4115 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4117         * pipeline.cpp:
4118         * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
4119         the parsing fails, propagate the args up in the pipeline.
4121 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4123         * mediaelement.cpp: We need to populate media attributes before raising
4124         MediaOpened.
4126 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4128         * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
4129         has changed at least a tiny bit.
4131 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4133         * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
4135 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4137         * mediaelement.cpp: Properly set CanPause and CanSeek, and always use 
4138         mediaplayer's duration as NaturalDuration.
4140 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4142         * mediaplayer.cpp: All starting points seem to be allowed now, so don't
4143         throw an error event for starting point > duration anymore. Also duration
4144         is always the entire length of the media, regardless of when we start and
4145         how long we're supposed to play.
4147 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4149         * error.cpp|h: Add custom information to ErrorEventArgs, to provide
4150         better Moonlight debugging and in some cases we need more information
4151         than what MS reports.
4153 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4155         * media.cpp: MediaAttributes are case-insensitive.
4157 2009-07-07  Jeffrey Stedfast  <fejj@novell.com>
4159         * fontmanager.cpp (canon_font_family_and_style): New convenience
4160         function to canonicalize font family & style info, split out of
4161         IndexMatchFace().
4162         (IndexMatchFace): Use the new function.
4164 2009-07-07  Jackson Harper  <jackson@ximian.com>
4166         * style.h: Need an internal setter for IsSealed so we can do the
4167         parser seal/unseal hack.
4169 2009-07-07  Sebastien Pouliot  <sebastien@ximian.com>
4171         * downloader.cpp|h: Add a new FontPolicy since it differs from 
4172         XamlPolicy (which is otherwise *unused*) and fix policies wrt
4173         http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
4174         * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
4175         when downloading
4177 2009-07-07  Alan McGovern  <amcgovern@novell.com>
4179         * namescope.cpp: Once a namescope is locked, don't allow names
4180           to be registered or unregistered. Fixes the case where the
4181           name is changed on a template item.
4183 2009-07-07  Alan McGovern  <amcgovern@novell.com>
4185         * xaml.h:
4186         * xaml.cpp:
4187         * template.cpp: When expanding a template, mark all the
4188           children as TemplateItems so they will be able to look up
4189           the correct namescope.
4191         * control.h:
4192         * control.cpp:
4193         * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
4194           property.
4196         * dependencyobject.h:
4197         * dependencyobject.cpp: Add extra overloads to FindName and
4198           FindNameScope so that we can tell whether we are looking up
4199           a template name or regular name.
4201         * namescope.h:
4202         * namescope.cpp: Add the ability to lock a namescope so it
4203         can be recognised as a template namescope.
4205 2009-07-07  Jackson Harper  <jackson@ximian.com>
4207         * xaml.cpp: Lookup properties on the owner type so attached
4208         properties get looked up properly when setting them via text ie
4209         <Canvas.Left>5</Canvas.Left>
4211 2009-07-06  Jackson Harper  <jackson@ximian.com>
4213         * xaml.cpp: Ignored elements should buffer their contents
4214         - Add in Ignored attributes
4216 2009-07-06  Jackson Harper  <jackson@ximian.com>
4218         * xaml.cpp: Implement ignorable namespaces.
4220 2009-07-06  Larry Ewing  <lewing@novell.com>
4222         * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
4224 2009-07-06  Stephane Delcroix  <sdelcroix@novell.com>
4226         * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
4227         so ZoomAbout *= the target's value for zoom, not the current one.
4229 2009-07-06  Jeffrey Stedfast  <fejj@novell.com>
4231         Fixes drt 249.
4233         * fonts.cpp (LoadPortableUserInterface): Return the index of the
4234         Lucida font face.
4235         (TextFont::Load): If PUI is our first family, keep track of which
4236         face the Lucida face is and use that as our master. Otherwise use
4237         the first face.
4238         (TextFont::UpdateFaceExtents): Use the 'master' face to get the
4239         extents from, rather than the first face.
4241 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4243         * playlist.cpp: PlayNext: play even if previous entry didn't fail.
4244         Fixes our test #136.
4246 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4248         * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
4249         playlist format so we'll never get it, it'll be parsed on the
4250         media server.
4252 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4254         * mediaelement.cpp: Fix warning.
4256 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4258         * src.mdp: Updated.
4260 2009-07-03  Larry Ewing  <lewing@novell.com>
4262         * textblock.cpp (ArrangeOverride): try to get textblock height
4263         stretching closer.  See 295 and 2020 for examples.
4265 2009-07-03  Alan McGovern  <amcgovern@novell.com>
4267         * runtime.cpp: We don't need to change these actually.
4269 2009-07-03  Alan McGovern  <amcgovern@novell.com>
4271         * runtime.cpp: When inside the if statement, we know that
4272           toplevel and element are the same, so use 'element' instead
4273           of 'toplevel' in case the toplevel is removed during the
4274           loaded/resized event. Fixes memorabilia.
4276 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4278         * mms-downloader.cpp: ProcessResponseHeaderCallback:
4279         set current deployment.
4281 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4283         * pipeline-asf.cpp|h:
4284         * mms-downloader.cpp|h: If downloading the mms url
4285         doesn't succeed, raise an error. Fixes MS DRT #222
4286         completely.
4288 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4290         * pipeline-asf.cpp:
4291         * mediaelement.cpp: When playing an mms stream, SL sets
4292         DownloadProgress to 1.0 after downloading the header.
4293         Makes MS DRT #222 reach a bit further.
4295 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4297         * pipeline.cpp: Fix printf.
4299 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4301         * mediaelement.cpp: Handle DownloadProgressChanged events
4302         properly.
4304 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4306         * downloader.cpp|h: Add another downloader API
4307         method, this time to get the DownloaderResponse.
4309         * cbinding.cpp|h: Regenerated.
4311 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4313         * multiscaleimage.h: instruct the generator to do more for us.
4315 2009-07-02  Chris Toshok  <toshok@ximian.com>
4317         * propertypath.h: fix operator== and add operator!=.
4319         * validators.h|cpp: add StoryboardTargetPropertyValidator.
4321         * dependencyproperty.g.cpp: regen.
4323         * animation.h (class Storyboard): use a special validator for
4324         TargetPropertyProperty such that it follows the semantics laid out
4325         in StoryboardTest.SetTargetPropertyTwice*.
4327 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4329        * mediaelement.cpp: Protect against emitting BufferingProgressChanged
4330        when the actual value hasn't changed.
4332        * pipeline.cpp: FillBuffers: don't report any buffering progress
4333        if we don't have any media streams.
4335 2009-07-02  Jeffrey Stedfast  <fejj@novell.com>
4337         * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
4338         argument which is used for loading the preferred default font (by
4339         language) first, before the other fallback fonts.
4340         (TextFont::Load): Pass in the 'lang' argument.
4341         (TextFontDescription): Added methods to get/set a Language
4342         property.
4344         * textblock.cpp (Inline::UpdateFontDescription): Set the language
4345         on the TextFontDescription.
4346         (TextBlock::OnPropertyChanged): If the
4347         FrameworkElement::LanguageProperty changes, reload the fonts and
4348         invalidate.
4350 2009-07-02  Jackson Harper  <jackson@ximian.com>
4352         * xaml.cpp: Fix error code so it gets propogated up when
4353         validating templates.
4355 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4357         * runtime.cpp: Fix printf.
4359 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4361         * multiscaleimage.h|cpp: handle the various motion finished separately
4362         and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
4363         animations are completed.
4365 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4367         * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
4368         use a custom property provider so getting vp origin or width returns
4369         the current value, while setting them sets the animation's targets.
4371 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4373         * pipeline.cpp: FillBuffers: Only take into
4374         account media streams when trying to determine
4375         if all streams have reached its end. Fixes our test
4376         #150.
4378 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4380         * mediaelement.cpp: Reinvalidate everything when
4381         clearing a source. Fixes MS DRT #45 (after setting
4382         the source to an empty string, the media element
4383         shouldn't render anything anymore).
4385 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4387         * pipeline.cpp: FillBuffers: Take into account that
4388         decoders may call SetOutputEnded once SetInputEnded
4389         is called, and update the number of ended streams
4390         immediately. Fixes our test #111.
4392 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4394         * pipeline.cpp:
4395         * playlist.cpp: Make debug output more descriptive.
4397 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4399         * pipeline-asf.cpp|h: Reimplement support for mms seeking.
4401 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4403         * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
4404         try again later.
4406 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4408         * mp3.cpp: Fix parsing of xing vbr headers causing wrong
4409         duration to get calculated of the file.
4411 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4413         * mp3.cpp: FindMpegHeader: fix return value: the offset of
4414         the header goes into the result output variable and we return
4415         success instead of returning a bogus error value.
4417 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4419         * pipeline.cpp: If we couldn't select a demuxer because of
4420         not having enough data yet, try again later.
4422 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4424         * mediaelement.cpp: If Source (or UriSource) is either null
4425         or an empty string, we're only supposed to clean up, not 
4426         trying to play the null/empty string.
4428 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4430         * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
4431         to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
4432         all streams have finished their output, set buffering progress
4433         to 1.0.
4435         * playlist.cpp: Properly forward progress event args.
4437         * mediaelement.cpp: Set buffering progress when it changes,
4438         and raise BufferingProgressChanged. Don't try to autoplay
4439         when buffering progress is < 1.0, wait until it reaches 1.0.
4441 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4443         * audio-pulse.cpp: Fix warning.
4445 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4447         * audio-alsa.cpp: WriteMmap: If we try to write with an audio
4448         source which has ended, call Underflowed, since that's what's
4449         happened.
4451 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4453         * audio-alsa.cpp: If hw setup failed, dump current hw parameters
4454         to stdout (if debug mode is enabled).
4456 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4458         * mms-downloader.cpp: Do better initialization and cleanup of
4459         downloader and state variables to prevent issues when seeking.
4461 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4463         * mms-downloader.cpp: Write: Don't use math when not necessary to
4464         avoid overflows, and if we end up freeing the buffer set the size
4465         accordingly.
4467 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4469         * mms-downloader.cpp: Use thread-safe tick call from media thread.
4471 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4473         * mms-downloader.cpp: Don't leak the uri.
4475 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4477         * downloader.h: Make OpenInitialize public so that the
4478         MmsDownloader can reinitialize it when sending new requests.
4480 2009-06-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4482         * audio.cpp: Play 24 bit audio unconditionally.
4484 2009-07-01  Chris Toshok  <toshok@ximian.com>
4486         * Makefile.am (INCLUDES): turns out we need to include ../plugin
4487         here to deal with type-generated/type.h/etc.
4489         * type.h.in: fix annoying indent problem.
4491         * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
4492         value.h, type.h: regen
4494 2009-07-01  Larry Ewing  <lewing@novell.com>
4496         * textblock.cpp (ArrangeOverride): take alignment into account
4497         when computing our size.
4499 2009-07-01  Jeffrey Stedfast  <fejj@novell.com>
4501         * textblock.cpp (ArrangeOverride): Set the available width on the
4502         layout so that it can properly align the text for center/right
4503         alignment.
4505 2009-07-01  Jackson Harper  <jackson@ximian.com>
4507         * xaml.cpp: Need to set the binding source when we are validating
4508         templates.
4510 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4512         * mediaelement.cpp: SetMarkerTimeout: when unreffing self
4513         use a delayed timeout, since we can be the last ref, this
4514         ensures the stack is unwound first.
4516 2009-06-30  Larry Ewing  <lewing@novell.com>
4518         * border.cpp (Render): get CornerRound rendering closer to the sl
4519         version.
4521 2009-06-30  Chris Toshok  <toshok@ximian.com>
4523         * clock.h|cpp: Seeking doesn't start the clock.  And we have to
4524         support UpdateFromParentTime even while paused, since we can seek
4525         while paused.  Fixes 392 (along with actually fixing the test..)
4527 2009-06-30  Chris Toshok  <toshok@ximian.com>
4529         * clock.h|cpp: fix Seek and SeekAlignedToLastTick.  fixed DRT
4530         tests 393 and 396.
4532 2009-06-30  Jeffrey Stedfast  <fejj@novell.com>
4534         * fontmanager.cpp (style_diff): Improved a bit so that we never
4535         return G_MAXINT if any font by the same name is found, no matter
4536         what style differences there are.
4538 2009-06-30  Jackson Harper  <jackson@ximian.com>
4540         * deepzoomimagetilesource.cpp: Parsers need to be freed.
4542 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4544         * popup.cpp: According to the docs, a popup which is GC'ed
4545           should be closed. Ensure that this happens.
4547 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4549         * popup.cpp: If the child is set after the popup is opened,
4550           make sure it is shown. Ensure that we now only emit the
4551           Opened/Closed events when the popup IsOpen state changes.
4552           Allows 503 to progress further.
4554 2009-06-30  Jackson Harper  <jackson@ximian.com>
4556         * xaml.cpp|h: Add a flag for template validation
4557         - Implement template validation and propogate errors up
4558         * cbinding.cpp: regen
4560 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4562         * multiscaleimage.cpp: drop a debug block that was misinterpreted by
4563         the preprocessor. fir x drt 265.
4565 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4567         * multiscaleimage.cpp: download the first num_dl (6) levels while the
4568         source is ready.
4570 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4572         * control.cpp: Unregress drt 911, EnabledChanged events fire
4573           at the correct time again.
4575 2009-06-29  Jeffrey Stedfast  <fejj@novell.com>
4577         * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
4578         of the GlyphMetrics fields.
4580         * layout.cpp: Updated to keep track of the previous GlyphInfo
4581         rather than the previous GlyphInfo's index.
4583         * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
4584         (TextFont::Kerning): Modified to take GlyphInfo arguments rather
4585         than face indexes since they are worthless w/o knowing which font
4586         face the indexes of each are for.
4588 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4590         * control.cpp: Propagate the IsEnabled changes down the visual
4591           tree in OnPropertyChanged, not in SetValue.
4593 2009-06-29  Jackson Harper  <jackson@ximian.com>
4595         * xaml.cpp: Store enums as INTs.
4597 2009-06-28  Chris Toshok  <toshok@ximian.com>
4599         * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
4600         Clock::Active) to (state != Clock::Stopped) to tell whether or not
4601         we've started (since we can start directly in the filling state.)
4603         Also remove all the idle_hint stuff, since it's no longer used.
4605         * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
4606         why this method is needed at all, but at the very lease we need to
4607         stop calling ClockGroup::UpdateFromParentTime, since this method
4608         very nearly duplicates that one (and we're therefore looping over
4609         the child clocks twice).
4611 2009-06-28  Chris Toshok  <toshok@ximian.com>
4613         * color.cpp (named_colors): update these so that text-colors.xaml
4614         passes.
4616 2009-06-28  Larry Ewing  <lewing@novell.com>
4618         * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
4620 2009-06-27  Jeffrey Stedfast  <fejj@novell.com>
4622         * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
4623         changes, the layout *always* gets dirty. We also always need to
4624         invalidate.
4626         * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
4627         calculate/update the font extents. Only use the extents of the
4628         first face - this fixes a bunch of MS DRTs.
4629         (TextFont::.ctor): Call UpdateFaceExtents().
4630         (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
4631         a number of regressions (like MS DRT #43).
4633 2009-06-27  Chris Toshok  <toshok@ximian.com>
4635         * grid.cpp (Grid::OnCollectionItemChanged): don't
4636         InvalidateMeasure() when the grid's actualwidth or row's
4637         actualheight is set.  this gets us into an infinite loop.
4639 2009-06-26  Chris Toshok  <toshok@ximian.com>
4641         * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
4642         (initialize_enums): and add it to the hashtable.
4644         * grid.h|cpp: make ColumnDefinition.ActualWidth and
4645         RowDefinition.ActualHeight dependencyproperties to make the plugin
4646         binding easier.  get rid of each class's "actual" field.
4647         
4648 2009-06-25  Chris Toshok  <toshok@ximian.com>
4650         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4651         object we're looking the event up on, and a flag as to whether or
4652         not to allow desktop-specific events.  and just look up the event
4653         from the type system instead of having the hardcoded list.
4655 2009-06-25  Chris Toshok  <toshok@ximian.com>
4657         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4658         object we're looking the event up on, and a flag as to whether or
4659         not to allow desktop-specific events.  and just look up the event
4660         from the type system instead of having the hardcoded list.
4662 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4664         * fonts.cpp (LoadPortableUserInterface): Only set that we've
4665         loaded PUI, not each individual fallback face. The other faces may
4666         match user-specified faces, but there may also be a font source
4667         that it is loading them from (which may differ from the locally
4668         installed faces).
4670 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4672         * runtime.cpp: Don't need to call font_init() or font_shutdown()
4673         anymore.
4675         * deployment.cpp: Create a new FontManager per Deployment and
4676         provide an access method to get at it.
4678         * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
4679         loading APIs.
4681         * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
4682         inheritance, these no longer exist.
4684         * fonts.cpp|h: New source files with the higher-level abstraction
4685         for font loading, glyph manipulation, etc.
4687         * fontmanager.cpp|h: New source files containing a FontManager
4688         class which handles caching of font faces and indexing of font
4689         resources. Serves as platform-dependent font loading layer.
4691         * font.cpp|h: Removed.
4693 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
4695         * uri.cpp (ToString): Respct the UriHideQuery flag.
4697 2009-06-26  Larry Ewing  <lewing@novell.com>
4699         * border.h: change the default value.
4701         * cornerradius.h: reorder the bottom* arguments.
4703 2009-06-26  Alan McGovern  <amcgovern@novell.com>
4705         * popup.h:
4706         * popup.cpp: Handle popup hittesting when its closed in a way
4707           that doesn't suck.
4709 2009-06-26  Alan McGovern  <amcgovern@novell.com>
4711         * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
4712           IsOpen state so that hittesting works correctly.
4714 2009-06-25  Chris Toshok  <toshok@ximian.com>
4716         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4717         object we're looking the event up on, and a flag as to whether or
4718         not to allow desktop-specific events.  and just look up the event
4719         from the type system instead of having the hardcoded list.
4721 2009-06-25  Larry Ewing  <lewing@novell.com>
4723         * grid.cpp, grid.h (PostRender): move the grid lines from Render to
4724         PostRender so that the lines are on top of the children (which
4725         appears to be the sl behavior).  Fixes at least 317 and 446.
4726         
4727 2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>
4729         * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
4730         Fix two unnumbered DRT tests.
4732 2009-06-25  Chris Toshok  <toshok@ximian.com>
4734         * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
4735         generate ArgumentExceptions here if start/length are out of range.
4736         This could, in the future, be entirely handled by the setter
4737         methods but for now we don't pass a MoonError to them.
4739         * xaml.h|cpp (xaml_set_property_from_str): this method takes an
4740         additional MoonError parameter so we can communicate back if there
4741         was a problem.  Also, call SetValueWithError.
4743         * cbinding.h|cpp: regen.
4745 2009-06-25  Chris Toshok  <toshok@ximian.com>
4747         * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
4748         can tell in AddedToCollection and RemovedFromCollection if we got
4749         there from using ResourceDictionary's string-based api or
4750         Collection's object-based api.  Take care of adding/removing the
4751         key for the object in those methods if we didn't come from the RD
4752         api.
4754         * type.cpp (Type): quiet valgrind down by using "delete []"
4755         instead of "delete" to free up the interfaces array.
4757 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4759         * mediaplayer.cpp: Improve debug output.
4761 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4763         * pipeline.h: Added a ProgressEventArgs class.
4765         * value.h:
4766         * type.h:
4767         * type-generated.cpp: Regenerated.
4769 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4771         * audio.cpp|h: Add support for having different input (from the
4772         codec) and output (to the device) formats. This is required for
4773         pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
4774         bit. Also add support for multi channel audio.
4776         * audio-alsa.cpp:
4777         * audio-pulse.cpp: Add support for multi channel and 24 bit audio
4778         and update according to audio API changes.
4780 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4782         * audio-alsa.cpp: Fix debug output by not duplicating declarations.
4784 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4786         * audio.cpp|h: Add support for dumping raw audio data to a file.
4788 2009-06-25  Alan McGovern  <amcgovern@novell.com>
4790         * dependencyproperty.g.cpp: Regen
4792 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4794         * downloader.cpp:
4795         * mms-downloader.h:
4796         * file-downloader.h:
4797         * internal-downloader.h: Add a SetFilename abstract method to 
4798         InternalDownloader, provide implementations in FileDownloader
4799         and MmsDownloader and call the abstract method in the downloader
4800         instead of blindly casting an InternalDownloader to a FileDownloader
4801         when it might be an MmsDownloader.
4803 2009-06-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4805         * pipeline.cpp|h: AudioStream: add possibility of having different
4806         input and output formats.
4808         * cbinding.cpp|h: Regenerated.
4810 2009-06-24  Chris Toshok  <toshok@ximian.com>
4812         * xaml.cpp (matrix_from_str): handle "Identity" here.
4813         (value_from_str_with_parser): you can also create TransformGroups
4814         directly using the matrix syntax.  Also, add support for parsing
4815         FontWeight/FontStyle/FontWeight structs here since we can't just
4816         rely on the enum_* stuff alone to do it.
4818         * value.h.in, value.cpp: add support for
4819         FontWeight/FontStyle/FontWeight structs.
4821         * textblock.cpp (Inline::UpdateFontDescription): track the
4822         struct-update.
4823         (TextBlock::Layout): same.
4825         * textbox.cpp (TextBoxBase::Initialize): same.
4826         (TextBoxBase::OnPropertyChanged): same.
4828         * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
4829         structs now for these.
4830         
4831         * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
4832         struct types for properties instead of our internal enums.
4834         * Makefile.am (libmoon_include_headers): add fontstretch.h
4835         fontstyle.h, and fontweight.h
4837         * type-generated.cpp: regen.
4839         * cbinding.h|cppp: regen.
4841         * dependencyproperty.g.cpp: regen.
4843         * value.h: regen.
4844         
4845 2009-06-24  Larry Ewing  <lewing@novell.com>
4847         * panel.cpp (Render): add layout clipping to panel rendering.
4849 2009-06-24  Larry Ewing  <lewing@novell.com>
4851         * grid.h: stop drawing the gridlines by default.  See comment for
4852         details.
4854 2009-06-24  Alan McGovern  <amcgovern@novell.com>
4856         * runtime.h:
4857         * runtime.cpp: Focus changed events should be emitted at the
4858           start and end of any user initiated event.
4859           can_raise_focus_changed is no longer necessary.
4861 2009-06-23  Larry Ewing  <lewing@novell.com>
4863         * frameworkelement.cpp (UpdateLayout): reorder the way we process
4864         the lyout queues. Fixes ms 409.
4866 2009-06-23  Jackson Harper  <jackson@ximian.com>
4868         * xaml.cpp: Handle empty buffers
4869         
4870 2009-06-23  Jackson Harper  <jackson@ximian.com>
4872         * xaml.cpp: ContentControl can not have string content set this
4873         way, if the content object is a string it needs to be set with
4874         attributes.
4876 2009-06-23  Jackson Harper  <jackson@ximian.com>
4878         * xaml.cpp: Another stab at not skipping empty attributes. Fixed
4879         all the unit test regression this caused last night.
4881 2009-06-23  Alan McGovern  <amcgovern@novell.com>
4883         * grid.cpp: A dash length of 4 seems to be more correct.
4885 2009-06-23  Alan McGovern  <amcgovern@novell.com>
4887         * grid.h:
4888         * grid.cpp: Implement Grid.ShowGridlines
4890 2009-06-22  Jackson Harper  <jackson@ximian.com>
4892         * xaml.cpp: Pass the full prop name to managed
4893         - If managed fails to set the property, delete it so unmanaged can
4894         try
4896 2009-06-22  Larry Ewing  <lewing@novell.com>
4898         * provider.cpp: make UIElement::UseLayoutRounding inherited, this
4899         doesn't make it pass 2019 but it does a lot more. 
4901         * shape.cpp: mirror the silverlight logic for canvas children with
4902         only one of w/h set.  Fixes ms test 23.
4904 2009-06-18  Larry Ewing  <lewing@novell.com>
4906         * shape.cpp: try to get the shape flags right once again trap
4907         explicit small values properly.  Add Clipping logic to clip shapes
4908         to the fe values when explicitly set.
4910         * frameworkelement.cpp: look at stretch even when we have no
4911         children.
4913 2009-06-19  Jackson Harper  <jackson@ximian.com>
4915         * xaml.cpp|h: We now have a managed version of AddChild so remove
4916         all the AddToContainer junk and use the managed AddChild instead.
4917         - Add MoonError to all the callbacks. Not handling the errors yet,
4918         but at least they are there now.
4920 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4922         * xaml.cpp: Add comment about absolute/relative paths
4923         for MSI.
4925 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4927         * multiscaleimage.cpp: When an image has been opened,
4928         invalidate everything.
4930 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4932         * multiscaleimage.cpp|h: Emit MotionFinished after
4933         SetViewportWidth/SetViewportOrigin has been called.
4935 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4937         * multiscaleimage.cpp|h:
4938         * deepzoomimagetilesource.cpp|h: Raise error events.
4940 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4942         * multiscaleimage.cpp|h: Add support for methods exposed to JS.
4944         * cbinding.h: Regenerated.
4946 2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>
4948         * textblock.cpp: Avoid crash when using FontSource
4950 2009-06-18  Alan McGovern  <amcgovern@novell.com>
4952         * control.h:
4953         * uielement.h:
4954         * control.cpp: When the visual parent changes on a Control, it
4955           needs to search up the visual tree to find out the Enabled
4956           state of the first Control it finds. When raising the
4957           IsEnabledChanged events, the control must emit its event
4958           before controls in its subtree emit their events. Fixes drt
4959           911.
4961 2009-06-17  Jeffrey Stedfast  <fejj@novell.com>
4963         * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
4964         for single-line entry controls (e.g. PasswordBox), don't allow
4965         multi-line pastes.
4967 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4969         * uielement.cpp: Changing UIElement::Visibility should also
4970           invalidate the parents measure. This allows DRT 2050 to
4971           complete without timing out.
4973 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4975         * uielement.cpp: Changing UIElement.Visibility should result
4976           in the measure being invalidated.
4978 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4980         * font.cpp: When the font cache is destroyed, set it to NULL
4981           so that if a Font is destroyed later it does not try to
4982           re-use the cache.
4983         Null check the the FontFace cache before using it.
4984         If the FT_Face stream is null already, don't try to destroy
4985           it.
4987 2009-06-17  Alan McGovern  <amcgovern@novell.com>
4989         * runtime.cpp: A subset of keypresses are allowed to bubble up
4990           when in fullscreen mode. Fixes drt 175.
4992 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4994         * uri.cpp: Add a null check to prevent a crash.
4996 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4998         * uri.cpp: Flag a lot more characters as url unsafe, and 
4999         fix printf specifiers for url encoded characters to not 
5000         include extra 'ff' sequences for every encoded character.
5002         This fixes parts of MS DRT #641.
5004 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5006         * downloader.cpp|h: Add an Open overload which takes an Uri
5007         instead of a string.
5009         * deepzoomimagetilesource.cpp:
5010         * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
5012 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5014         * playlist.cpp: When we stop, emit the StopEvent.
5016         * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
5018 2009-06-16  Chris Toshok  <toshok@ximian.com>
5020         * xaml.cpp (XamlElementInfoStaticResource,
5021         XamlElementInstanceStaticResource): remove these classes.
5022         (begin_buffering_element_names): remove this unused variable.
5023         (XamlParserInfo::LookupNamedResource): remove.
5024         (DefaultNamespace::FindElement): remove the
5025         XamlElementInfoStaticResource case, and just let the managed
5026         loader create the StaticResource element itself.
5027         (is_static_resource_element): remove.
5028         (XamlElementInstanceNative::SetProperty): defer to the loader if
5029         either the property or the value RequiresManagedSet.
5030         (dependency_object_set_property): defer to the loader if the value
5031         RequiresManagedSet.
5032         (dependency_object_set_attributes): remove all processing of
5033         markup extensions from unmanaged code.
5034         (xaml_markup_parse_argument): remove.
5035         (xaml_markup_extension_type): remove.
5036         (handle_markup_in_managed): remove.
5037         (handle_xaml_markup_extension): remove.
5038         
5039         * panel.h|cpp (Panel::Panel): just set our subtree object here.
5040         (Panel::GetSubtreeObject): remove.
5041         
5042         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
5043         don't notify listeners when creating an auto-created value.
5045         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
5046         only call the property's change callback if we're notifying
5047         listeners.
5049 2009-06-17  Andreia Gaita  <avidigal@novell.com>
5051         * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
5053 2009-06-17  Andreia Gaita  <avidigal@novell.com>
5055         * xaml.cpp: fix typo
5057 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5059         * pipeline.cpp: Remove spurious printfs.
5061 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5063         * deployment.[h|cpp]: Try to dispose types only if there are no
5064         objects pending destruction. If there are, dispose only after
5065         they are all cleared (on DrainUnrefs). This makes sure no properties
5066         are destroyed while objects are still pending.
5067         Added isDead flag, used when doing object tracking to protect against
5068         trying to access type fields when the types have been destroyed
5069         already (when doing ref logging and the final leak report).
5070         Type destruction is slightly delayed when doing object tracking
5071         to allow for the report (otherwise we wouldn't have any type names
5072         on it, and that would be sad)
5074         * type.cpp: fake-clear the properties list by setting it's count to 0
5075         so access by id fails (in case someone wants to access the property
5076         while we're disposing everything).
5077         Delete all the registered types and kill the properties list when
5078         destroying. By this point all properties and objects should be
5079         dead.
5080         * type.h.in: added dispose flag.
5081         * type.h: regenerated
5083 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5085         * uielement.cpp: release all refs on dispose
5087 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5089         * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
5091 2009-06-16  Jeffrey Stedfast  <fejj@novell.com>
5093         * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
5095 2009-06-16  Larry Ewing  <lewing@novell.com>
5097         * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
5098         when properties change in preparation for fixing the autocreated
5099         property notification stuff
5101 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5103         * multiscaleimage.cpp: Add a call to print_stack_trace, looks
5104         like abort () doesn't cause a stack trace.
5106 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5108         * mediaplayer.cpp: Remove circular dependency between MediaPlayer
5109         and MediaElement, clear out the element in Dispose and add a null
5110         check before accessing the element. Fixes crash in MS DRT #238.
5112 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5114         * frameworkelement.cpp: delete UIElement nodes when we're done 
5115         with them
5117 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
5119         * textblock.cpp (SetTextInternal): Get rid of some duplicated
5120         code.
5122 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5124         * uielement.cpp:
5125         * frameworkelement.h:
5126         * frameworkelement.cpp: Give an initial implementation of
5127           FindElementInHostCoordinates (UIElement, Rect) which treats
5128           the rect as a series of points and checks each one until a
5129           hit is found. Allows drt 280 to 
5131 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
5133         * dependencyobject.cpp (Initialize): Initialize is_hydrated to
5134         false.
5136 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5138         * type.[h|cpp]: Dispose method added, to help separate between clearing
5139         all the DPs and actually deleting the types. For now, just clears the
5140         DPs and doesn't touch the type list.
5141         * deployment.cpp: (Dispose) types are disposed here, for now.
5143 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5145         * dependencyproperty.g.cpp: regenerated
5147 2009-06-15  Jackson Harper  <jackson@ximian.com>
5149         * xaml.cpp: Reorder errors.
5151 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5153         * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
5154         inside SetParts, and since we don't store it anywhere else, drop a
5155         ref after the call
5157 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5159         * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
5160         it removes itself from the property list and gets deleted as soon as
5161         possible, otherwise it will not only leak, but blow up once we start
5162         clearing DPs.
5163         Floating status is gone.
5165 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5167         * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
5168         and some extra debugging output for refcounting.
5169         * value.h: regen
5171 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5173         * frameworkelement.cpp: Objects can be hit as long as their
5174           height as greater than zero and the point is in the fill or
5175           stroke.
5177 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5179         * frameworkelement.cpp: Back that change out as it causes some
5180           regressions in the moon-unit tests.
5182 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5184         * frameworkelement.cpp: We can hit an element in both stroke
5185           and fill.
5187 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5189         * playlist.cpp|h: When a media reports that it has been opened
5190         successfully, check if we're the current element, and if not,
5191         don't to anything more until we are the current element. This
5192         fixes an issue with server side playlists where they would
5193         only play the first entry.
5195         * pipeline.cpp|h: Move code out of header.
5197         * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
5198         entry has finished.
5200 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5202         * frameworkelement.cpp: We're hittesting the clip, we use
5203           user-space coordinates, so apply the identity matrix to get
5204           the correct result.
5206 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5208         * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
5210         * cbinding.cpp|h: Regenerated.
5212 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5214         * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
5215         to the enum->str conversion table.
5217 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5219         * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
5220           it's attached to otherwise it can access the element after
5221           the element has been destroyed. Stops 238 crashing.
5223 2009-06-14  Andreia Gaita  <avidigal@novell.com>
5225         * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since 
5226         there are certain refcounted objects that aren't child classes of
5227         DependencyObject.
5228         Wrap null objects but don't try to unref them.
5229         * value.h: regen
5231 2009-06-14  Andreia Gaita  <avidigal@novell.com>
5233         * debug.[h|cpp]: add max frame arg for finer control when getting 
5234         stack traces
5236 2009-06-12  Jackson Harper  <jackson@ximian.com>
5238         * xaml.cpp|h: import_xmlns now validates the namespace so we can
5239         raise an error if it is invalid.
5241 2009-06-12  Jackson Harper  <jackson@ximian.com>
5243         * xaml.cpp: Don't allow dtds.
5245 2009-06-12  Jackson Harper  <jackson@ximian.com>
5247         * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
5249 2009-06-12  Jackson Harper  <jackson@ximian.com>
5251         * xaml.cpp: Use the value attribute parsing for enum types, this
5252         allows them to have x:Key and x:Name attributes.
5254 2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>
5256         * dependencyproperty.g.cpp: Regenerated
5257         * deployment.h: Update ExternalCallersFromCrossDomainProperty
5258         generator-related properties and add unmanaged accessors
5259         * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
5260         dropped after SL2 beta2
5261         * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
5262         * validators.cpp|h: Add new CrossDomainValidator that ensure we
5263         can set only once Deployment::ExternalCallersFromCrossDomainProperty
5265 2009-06-11  Jackson Harper  <jackson@ximian.com>
5267         * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
5268         - Don't try to set managed properties in
5269         dependency_object_add_child.
5270         - Make sure we only create managed property elements for managed
5271         items, even if they are DOBs, otherwise UserControl.Resources gets
5272         a native property info.
5274 2009-06-11  Alan McGovern  <amcgovern@novell.com>
5276         * runtime.h:
5277         * runtime.cpp: The uielements involved in GotFocus/LostFocus
5278           events need to be stored in a queue so that focusing
5279           multiple elements in one tick works correctly.
5281 2009-06-11  Alan McGovern  <amcgovern@novell.com>
5283         * popup.h:
5284         * popup.cpp:
5285         * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
5287 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5289         * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
5291         * security.c: Fix signed/unsigned mismatch warning.
5293         * error.cpp: Fix warning about not initialize in correct order.
5295 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5297         * pipeline.cpp: Fix warning/typo in printf.
5299 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5301         * pipeline.cpp: MarkerStream: if there is no callback, store
5302         the markers in a list instead of just dropping them. Fixes an 
5303         issue with our #150 where we'd lose markers since the stream
5304         had processed them before getting a callback.
5306         * mediaelement.cpp: Check if a marker stream has stored markers
5307         (which would have been added before the calback was set).
5309 2009-06-10  Larry Ewing  <lewing@novell.com>
5311         * frameworkelement.cpp (Arrange): measure containers if they
5312         haven't been at least for now.
5314 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5316         * mediaelement.cpp: When we get a stream as the source, set download
5317         progress immediately to 1.0. Also emit DownloadProgressChanged just
5318         after opening the file (to ensure that we emit DownloadProgressChanged
5319         at least once). This makes MS DRT #420 not time out.
5321 2009-06-10  Larry Ewing  <lewing@novell.com>
5323         * frameworkelement.cpp (UpdateLayout): if we find a unloaded
5324         element while walking the tree emit loaded on it now.
5326 2009-06-10  Larry Ewing  <lewing@novell.com>
5328         * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
5329         place it was supposed to be emitted.
5331 2009-06-10  Jeffrey Stedfast  <fejj@novell.com>
5333         * layout.cpp (Layout): Don't apply font height to the line unless
5334         text has been rendered on that line using that font.
5336 2009-06-10  Jackson Harper  <jackson@ximian.com>
5338         * xaml.cpp|h: Add another param to LookupObject to specify whether
5339         we are looking up a property.  We can't rely on the '.' being in
5340         the name because x:Class names can have namespaces.
5341         - Force USERCONTROL to be looked up in managed so we can
5342         honour x:Class
5343         
5344 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5346         * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
5347         parent entries/playlists too. Also propagate the BufferUnderflow
5348         event.
5350         * pipeline.cpp: Change logic when filling the buffer to request
5351         a frame from the least-buffered stream. This solves an issue with
5352         live streams, we might end up playing audio only when the video
5353         buffer was empty and the audio buffer never full.
5355         * mediaplayer.cpp|h: When determining duration of an entry, check
5356         the entry's parents too for duration. We also need to set
5357         first_live_pts when rendering. This makes MS DRT #129
5358         not time out. Add a BufferUnderflow to inform listeners of any
5359         buffer underflows.
5361         * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
5362         playback and update states accordingly. Remove UpdateProgress,
5363         unused.
5365         * type-generated.cpp: Regenerated.
5367 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5369         * mediaplayer.cpp: use the correct max value for guint64.
5371 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5373         * mediaplayer.cpp|h: Make flags a thread-safe variable, since
5374         we might write to it from an audio thread.
5376 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5378         * playlist.cpp: When checking if an entry has duration, check
5379         the right entry. Fixes a possible crash.
5381 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5383         * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
5384         event too. Allows drt 293 to complete.
5385         
5386 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5388         * uri.cpp: Uris starting with "\\" need to be recognised as
5389           absolute Uris
5391 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5393         * pipeline-asf.cpp: Remove dead code.
5395 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5397         * runtime.cpp: g_warning -> printf to ease breaking on
5398         g_log.
5400 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5402         * dependencyobject.h: Fix IdMask.
5404 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5406         * pipeline.h|cpp: Rework some of the buffer filling algorithm:
5407         we now never have more than one frame pending (to know which
5408         stream a response comes from - if frame parameter to 
5409         ReportGetFrameCompleted is null, we need to mark the corresponding
5410         stream as ended. Also split the 'stream ended' concept in two:
5411         input ended (the demuxer won't give us more data) and output
5412         ended (the decoder won't give us more data). This fixed
5413         MS DRT #19.
5415         * mp3.h|cpp:
5416         * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
5417         need to try again later.
5419         * mediaelement.cpp: CheckMarkers: subtract one to not include
5420         both ends of the range, if the marker matches exactly the end
5421         of a range it will get emitted twice otherwise.
5423         * mediaplayer.cpp:
5424         * audio.cpp: Updated according to IMediaStream changes.
5426 2009-06-09  Jeffrey Stedfast  <fejj@novell.com>
5428         * value.cpp (operator==): Fix a crash if comparing a null
5429         FontSource.
5431         * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
5432         the control is loaded.
5433         (EmitTextChangedAsync): Same.
5435 2009-06-09  Alan McGovern  <amcgovern@novell.com>
5437         * runtime.cpp: The first mouse click will always Focus on the
5438           'default' control. After that we follow the normal focusing
5439           rules and focus on the first eligible control which the
5440           mouse has clicked on.
5442 2009-06-08  Jackson Harper  <jackson@ximian.com>
5444         * xaml.cpp: Add TimeSpan to the primitive types.
5446 2009-06-08  Chris Toshok  <toshok@ximian.com>
5448         * runtime.h (class Surface): add IsZombie.
5450 2009-06-08  Jackson Harper  <jackson@ximian.com>
5452         * error.cpp|h: Add method and fields for line/char positions.
5453         * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
5454         them to get propogated to managed and fixes some of the unit tests.
5456 2009-06-08  Jackson Harper  <jackson@ximian.com>
5458         * xaml.cpp|h: Pass the property xmlns and the element xmlns into
5459         managed when setting properties.
5461 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5463         * runtime.cpp: Un-regress drt 783. We need to raise our cached
5464           focus changed event, then process the focus change itself,
5465           then raise the events for the new change.
5467 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5469         * runtime.h:
5470         * runtime.cpp: If Control.Focus is called from inside a
5471           GotFocus handler, the focus change occurs immediately and
5472           the new GotFocus event is raised as soon as the current
5473           handler is finished.
5475 2009-06-08  Jackson Harper  <jackson@ximian.com>
5477         * xaml.cpp: Bail out after we hit the first attribute parsing
5478         error.
5480 2009-06-08  Jackson Harper  <jackson@ximian.com>
5482         * xaml.cpp: We need to convert path geometry strings from managed.
5484 2009-06-08  Jackson Harper  <jackson@ximian.com>
5486         * xaml.cpp: Little more cleanup now that we don't have to reparse
5487         attributes for x:Class.
5489 2009-06-05  Chris Toshok  <toshok@ximian.com>
5491         * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
5492         element when we aren't hydrating is illegal.  this has the
5493         pleasant side effect of removing the need to reparse attributes,
5494         so axe that code as well.
5496 2009-06-05  Chris Toshok  <toshok@ximian.com>
5498         * textbox.cpp (TextBoxView::Blink): don't set deployments using
5499         the pattern Deployment::SetCurrent (GetDeployment()), as
5500         GetDeployment() issues a warning if the object's deployment
5501         doesn't match the current one.  use
5502         DependencyObject::SetCurrentDeployment(true) instead.
5504 2009-06-04  Chris Toshok  <toshok@ximian.com>
5506         * runtime.cpp (Surface::EmitError): stop unreffing the args after
5507         the Emit call.  Emit unrefs them for us.
5509 2009-06-05  Jeffrey Stedfast  <fejj@novell.com>
5511         * layout.cpp (layout_word_wrap): Stop processing when we come to
5512         open-punctuation if it isn't the first char in the word as this is
5513         a good break opportunity. Fixes the last remaining issue in
5514         OMTextInline DRT.
5516 2009-06-04  Jackson Harper  <jackson@ximian.com>
5518         * xaml.cpp: Track the owner type of properties so we know whether
5519         or not to go into managed when we are dealing with an attached
5520         property.
5522 2009-06-04  Jeffrey Stedfast  <fejj@novell.com>
5524         * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
5525         font face that fontconfig can find for the requested language.
5526         (FontFace::LoadFontFace): Get the lang string and pass it along.
5527         (FontFace::Init): initialize a default font hash table for
5528         non-latin languages.
5529         (FontFace::Shutdown): destroy aformentioned table.
5530         (FontFace::LoadDefaultFaceForLang): New helper method to load the
5531         default font face for a given language code.
5532         (FontFace::GetDefault): If the language in the Fc pattern is
5533         'special', use LoadDefaultFaceForLang().
5534         (TextFontDescription::.ctor): Initialize language.
5535         (TextFontDescription::.dtor): Free language.
5536         (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
5537         appropriate.
5538         (TextFontDescription::UnsetFields): Unset the language field.
5539         (TextFontDescription::Merge): Merge the language field.
5540         (TextFontDescription::GetLanguage): New method to get the language.
5541         (TextFontDescription::SetLanguage): New method to set the language.
5542         (TextFontDescription::ToString): Modified a bit.
5544         * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
5545         as well.
5546         (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
5547         TextFontDescription.
5549 2009-06-04  Jackson Harper  <jackson@ximian.com>
5551         * xaml.cpp: The managed property could be either the property or
5552         the parent.
5554 2009-06-04  Larry Ewing  <lewing@novell.com>
5556         * canvas.cpp (OnCollectionItemChanged): call
5557         InvalidateSubtreePaint on items when their position in the canvas
5558         changes to make sure we clear the old region.  Fixes a couple of
5559         the inkpresenter tests.
5561 2009-06-04  Larry Ewing  <lewing@novell.com>
5563         * shape.cpp (ComputeStretchBounds): reject negative width/height
5564         settings.  Fixes test-shape-negative.xaml
5566 2009-06-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5568         * multiscaleimage.cpp: Add a debugging abort to try to find the
5569         issue with #2014.
5571 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5573         * control.h:
5574         * type-generated.cpp: Actually add IsEnabledChangedEvent
5576 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5578         * control.h: Add IsEnabledChangedEvent to native
5579         
5580         * type-generated.cpp: regen
5582 2009-06-04  Stephane Delcroix  <sdelcroix@novell.com>
5584         * multiscaleimage.cpp: qtree_insert () takes no value. returns
5585         the newly created QTreeNode. qtree_insert_at () renamed to 
5586         qtree_insert_with_value ().
5588 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5590         * cbinding.cpp|h:
5591         * control.cpp|h:
5592         * runtime.cpp:
5593         * uielement.cpp|h: Calling Control.Focus () results in a recursive
5594         check to find a focusable element. A mouse click does a non-recursive
5595         check on the elements which were 'hit'. Fixes two DRTs.
5597 2009-06-03  Jackson Harper  <jackson@ximian.com>
5599         * xaml.cpp: Update some error messages.
5600         - Pass the current namespace in when creating property infos in
5601         managed.
5602         * frameworkelement.h: ActualWidth and ActualHeight are readonly
5603         properties.
5604         * dependencyproperty.g.cpp: regen
5606 2009-06-03  Jeffrey Stedfast  <fejj@novell.com>
5608         * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
5609         bit more than FT_Get_Char_index().
5611         * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
5612         trailing lwsp towards line width, even if underlined.
5613         (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
5614         we are the last glyph cluster on a line.
5615         (GenerateGlyphCluster): Keep track of underline width (calculated
5616         using width up to/including last non-lwsp char).
5617         (word_type_changed): Consider numerics as part of the containing
5618         alphabetic word.
5620 2009-06-03  Jackson Harper  <jackson@ximian.com>
5622         * xaml.cpp|h: We need to look for managed properties on native
5623         types.
5624         - Set the element info for properties to the type of the property.
5625         - Add the ability for properties to force their set to be in
5626         managed even if they come from a native type.
5627         
5628 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5630         * uielement.cpp: Calculate the Transform between two UIElements
5631         correctly.
5633 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5635         * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
5636         we need to populate M11/M12/M21 etc with the correct values.
5638 2009-06-02  Chris Toshok  <toshok@ximian.com>
5640         * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
5641         Type::INVALID as its Kind.  This is another facet to the "we need
5642         to register enum types" work that will need to be done.  The
5643         GetKind() method needs to eventually return a property Kind, but
5644         until then we'll just check for Type::INVALID.
5646 2009-06-02  Sebastien Pouliot  <sebastien@ximian.com>
5648         * security.c: Use the PREVIEW_VERSION for the environment variable
5649         used to turn off security (coreclr and verifier)
5651 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
5653         * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
5654         the run->SetAutogenerated() logic a while back which is causing
5655         some tests to fail.
5657         * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
5658         longer supports this wrapping model.
5660 2009-06-02  Larry Ewing  <lewing@novell.com>
5662         * uielement.cpp (DoArrange): don't poke at unset values.  Fixes
5663         the crash in #421.
5665 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
5667         * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
5668         (x && y || z)'.
5670 2009-06-02  Alan McGovern  <amcgovern@novell.com>
5672         * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
5673         reverse logical order.
5675         * control.h
5676         * uielement.cpp|h: Make Focus a virtual method on UIElement.
5677         
5678         * src/runtime.cpp: When the surface receives a mouse down we need to
5679         focus the first control added to the root element if the user has not
5680         clicked on a control or focused one using Control.Focus (). Then any
5681         pending Focus events are raised before the mouse event is processed.
5682         
5683         * src/window-gtk.cpp: Always pass a right mouse button event into the
5684         Surface so that we can fire any pending Focus events to match the
5685         behaviour of Silverlight.
5687 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5689         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5690         since g_ascii_strtoull isn't available in sled.
5692 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5694         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5695         since g_ascii_strtoull isn't available in sled.
5697 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5699         * type.h:
5700         * value.h:
5701         * cbinding.h:
5702         * type-generated.cpp: Regenerated.
5704         * downloader.h: Removed streaming_features, not used here anymore.
5706         * utils.cpp
5707         * enums.h:
5708         * playlist.cpp|h:
5709         * pipeline.cpp|h:
5710         * pipeline-asf.cpp|h:
5711         * mms-downloader.cpp|h: Implement support for server side playlists.
5713 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5715         * pipeline.cpp: Check queued_requests for null after locking too.
5717 2009-06-02  Alan McGovern  <amcgovern@novell.com>
5719         * runtime.cpp|h: Focus changed events are emitted synchronously right
5720         before a MouseLeftButtonDown or MouseRightButtonDown event.
5722 2009-06-01  Chris Toshok  <toshok@ximian.com>
5724         * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
5725         here too so xaml.cpp knows if the type is creatable.
5727         * type.h, cbinding.cpp|h: regen
5729 2009-06-01  Chris Toshok  <toshok@ximian.com>
5731         * xaml.cpp (dependency_object_add_child): only do this check for
5732         non-Type::MANAGED children.
5734 2009-06-01  Chris Toshok  <toshok@ximian.com>
5736         * grid.cpp|h: the row/columndefinitioncollections do not permit
5737         definitions to be inserted more than once.
5738         
5739         * type.h.in (class Type): add IsCtorVisible method and ctor arg.
5741         * type.h, type-generated.cpp: regen.
5743         * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
5744         the instance if the ctor is visible.
5745         (dependency_object_add_child): if the ctor for the child isn't
5746         visible, error out even if it's the same type/kind as the
5747         property.
5749 2009-06-01  Jeffrey Stedfast  <fejj@novell.com>
5751         * deployment.cpp (Dispose): Properly chain up to
5752         DependencyObject::Dispose().
5754         * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
5756         * brush.cpp (ImageBrush::Dispose): Chain up to
5757         TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
5758         crash in GlyphsManagedDRT
5760         * dependencyobject.cpp (WildcardListener): Uh, this needs to
5761         subclass Listener or we can't go around casting it to a Listener.
5762         (CallbackListener): Same.
5764 2009-06-01  Chris Toshok  <toshok@ximian.com>
5766         * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
5767         end_idx == 0) return early.
5769         * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
5770         the toplevel object as hydrated if parser_info->hydrating == true.
5771         this fixes some managed parsing stuff since XamlReader.Load was
5772         using the same codepath (just passing NULL into
5773         XamlReader::HydrateFromString.)
5775 2009-05-29  Jeffrey Stedfast  <fejj@novell.com>
5777         * application.cpp (GetResourceAsPath): Fixed extra
5778         XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
5779         for us.
5781 2009-05-29  Alan McGovern  <amcgovern@novell.com>
5783         * control.cpp: When Control.Focus () is called, if the control itself
5784         is not focusable, we need to check it's visual children. The call will
5785         complete successfully if any of the children are focusable, and that
5786         child will become the focused element.
5788 2009-05-29  Alan McGovern  <amcgovern@novell.com>
5790         * control.cpp|h: If a control becomes disabled, it loses mouse capture
5791         and cannot regain it later. If CaptureMouse is called on a disabled
5792         control, the mouse is successfully captured and then immediately
5793         released which fires the LostMouseCapture event.
5795         * runtime.cpp|h: If control A captures the mouse, control B can't steal
5796         the capture or release the capture. Add an explicit ReleaseMouseCapture
5797         function to accomodate this behaviour.
5798         
5799         * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
5800         function which signifies whether or not the current UIElement can keep the
5801         mouse captured.
5803 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
5805         * textbox.h (class PasswordBox): Marked PasswordProperty as
5806         AlwaysChange so that setting this property (even to the same
5807         value) will force a PasswordChanged event to be emitted.
5808         (class TextBox): Marked SelectedTextProperty as AlwaysChange to
5809         fix moon-unit test: SetIdenticalSelectedText()
5811         * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
5812         printfs for utf8->ucs4 conversion errors.
5814 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
5816         * textbox.h (class TextBox): Added the AlwaysChange metadata to
5817         SelectionStart/Length properties.
5819         * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
5820         to asynchronously emit SelectionChanged events.
5821         (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
5822         (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
5823         (TextBox::EmitSelectionChanged): Simply emit the event now, don't
5824         bother updating state which is now handled elsewhere.
5825         (TextBox::EmitTextChanged): Same.
5826         (TextBox::OnPropertyChanged): When clamping the SelectionLength
5827         value due to a SelectionState property change, block events - we
5828         should only emit a single SelectionChanged event. Also modified to
5829         avoid emitting a TextBoxModelChanged event if the values didn't
5830         actually change. Same for SelectionLength changes.
5832 2009-05-28  Chris Toshok  <toshok@ximian.com>
5834         * value.h.in, value.cpp: add a copy assignment operator.
5836         * value.h: regen.
5838 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5840         * control.cpp: When changing Control.IsEnabled, create the
5841         new value properly.
5843 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5845         * animation.cpp: Fix a double free caused by the line
5846         converted = Value (*value);
5848 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5850         * pipeline-ui.cpp: Protect against a null surface.
5852         * mediaelement.cpp: Get the surface from the deployment (which should
5853           always have a surface) instead of the media element's surface
5854           (which is not guaranteed to be set always).
5856 2009-05-28  Alan McGovern  <amcgovern@novell.com>
5858         * control.cpp|h: Control.IsEnabled propagates to its children
5859         when the control is Loaded.
5861 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5863         * src.mdp: Updated.
5865 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5867         * mms-downloader.cpp: Custom headers must be requested before
5868           opening the downloader.
5870 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5872         * multiscaleimage.h|cpp: replace the hash cache on uri by
5873         a set of qtree, one per subimage. This should speed stuffs
5874         a lot, as uri crating/parsing/hashing was taking up to 20%
5875         of msi time.
5877 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5879         * multiscalesubimage.h: GetId (). Get subimage id, used as
5880         cache index in msi.
5882 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
5884         * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
5885         qtree_insert, etc. The Q(uad)Tree data structure is a tree with
5886         4 child nodes, matching the tree-ish pyramid of MSI tiles.
5888 2009-05-28  Andreia Gaita  <avidigal@novel.com>
5890         * timeline.cpp: Stop the clock when you call Stop.
5892 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5894         * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
5895         argument which defaults to true. If not set, we avoid calling
5896         SyncText() even if emit has the TEXT_CHANGED bit set.
5897         (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
5898         false if the value was just set to null.
5900 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5902         * control.h:
5903         * control.cpp: Implement correct propagation of
5904           Control.IsEnabled. Children of disabled controls are
5905           disabled. When their parent is re-enabled, they go back to
5906           their previous state.
5908 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5910         Fixes to make sure that an TextChanged and SelectionChanged events
5911         are emitted after each and every change to the Text/Selection
5912         properties occurs.
5914         * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
5915         batch operation. Prevents SyncAndEmit() from doing anything until
5916         all nested batch operations are completed.
5917         (TextBoxBase::BatchPop): Call at the end of each
5918         batch operation.
5919         (TextBoxBase::*): Instead of using inkeypress, use the more
5920         generic BatchPush()/Pop().
5921         (TextBox::OnPropertyChanged): Call SyncAndEmit() after
5922         Text/Selection changes.
5923         (PasswordBox::OnPropertyChanged): Same.
5925 2009-05-27  Geoff Norton  <gnorton@novell.com>
5927         * runtime.cpp|h: Support the splash progress/completed events.
5928         * cbinding.h:
5929         * type-generated.h: Regen
5931 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
5933         * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
5934         if the TextBox is loaded and unset the emit state.
5935         (TextBox::EmitTextChanged): Same.
5937 2009-05-27  Geoff Norton  <gnorton@novell.com>
5939         * deployment.cpp|h: Allow reinitializing the appdomain if our
5940         Source has changed, or we're switching from the splash screen to
5941         the XAP.
5943 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5945         * font.cpp:
5946         * textblock.cpp: Fix warnings.
5948 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5950         * debug.h:
5951         * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
5953 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5955         * textbox.cpp:
5956         * textblock.cpp:
5957         * pipeline.cpp:
5958         * mms-downloader.h:
5959         * mms-downloader.cpp:
5960         * internal-downloader.h:
5961         * file-downloader.h:
5962         * file-downloader.cpp:
5963         * pipeline-asf.cpp: Updated according to downloader API changes.
5965         * downloader.h:
5966         * downloader.cpp: Add support for retrieving response headers
5967           and disable caching. Initialize the downloader interface methods
5968           to their default/dummy methods statically.
5970         * value.h:
5971         * type.h:
5972         * type-generated.cpp:
5973         * cbinding.h:
5974         * cbinding.cpp: Regenerated.
5976 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5978         * resources.cpp: Wait til AddedToCollection returns success
5979         before adding the item to the hashtable.
5981 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5983         * resources.cpp: Propagate the error (if there is one) from
5984         Collection::AddWithError. If there is an error, clear the item
5985         from the hashtable before returning.
5987 2009-05-27  Alan McGovern  <amcgovern@novell.com>
5989         * control.h:
5990         * control.cpp:
5991         * dependencyproperty.g.cpp: Control.Enabled needs to be
5992           created in native code as it's required for hittesting. A
5993           disabled control and its visual children do not receive
5994           mouse events and are not visible to
5995           VisualTreeHelper.FindElementInHostCoordinates.
5997 2009-05-26  Jeffrey Stedfast  <fejj@novell.com>
5999         * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
6000         on the StyleSimulations value.
6001         (Layout): No longer need to pass along StyleSimulations to
6002         GetGlyphInfo().
6004         * font.cpp (style_weights): Added more style weight name mappings.
6005         (style_slants): Same.
6006         (FontFace::IsItalic): New method to query the font face to see if
6007         it is italic or not.
6008         (FontFace::IsBold): Same idea.
6009         (TextFont::TextFont): Now takes a TextFontDescription so that we
6010         can initialize the new 'simulate' member variable which tells us
6011         if we have to simulate bold or italics due to not finding a
6012         suitable font.
6013         (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
6014         argument. Instead, it now uses the 'simulate' member variable to
6015         pass to FontFace::LoadGlyph().
6016         (TextFontDescription::CreatePattern): Always add Weight and Slant
6017         to the pattern now, even if it is the default font
6018         family. Silverlight 2.0 no longer restricts bold/italics to
6019         non-PUI.
6021 2009-05-26  Chris Toshok  <toshok@ximian.com>
6023         * xaml.cpp (XamlElementInstance::SetName): if it's a
6024         dependencyobject, add it to the container here.
6025         (XamlElementInstance::SetKey): same.
6026         (end_element_handler): only do the AddToParentContainer call here
6027         if the element is not a dependencyobject.
6029 2009-05-25  Jeffrey Stedfast  <fejj@novell.com>
6031         * glyphs.cpp: Changed 'style' to be unsigned.
6033 2009-05-25  Andreia Gaita  <avidigal@novel.com>
6035         * timeline.h|cpp (DispatcherTimer): reset the clock properly when
6036         restarting a dispatcher timer. also, rename Run to Restart.
6037         note: if a timer is not stopped or started during it's tick event,
6038         the time spent on the tick is counted for the next tick on the
6039         Restart method.
6041 2009-05-25  Chris Toshok  <toshok@ximian.com>
6043         * runtime.h|cpp (Surface::EmitError): add an overload so
6044         Application.cs can cause an error to be emitted on the surface.
6046         * cbinding.h|cpp: regen.
6048 2009-05-25  Andreia Gaita  <avidigal@novel.com>
6050         * border.cpp (OnPropertyChanged): Invalidate when background is
6051         updated
6053 2009-05-25  Chris Toshok  <toshok@ximian.com>
6055         * uielement.cpp (UIElement::GetTransformToUIElementWithError):
6056         this method fails incorrectly when you call it on the toplevel
6057         element of a surface.
6059 2009-05-25  Chris Toshok  <toshok@ximian.com>
6061         * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
6062         for separate resource dictionary name registration.  this isn't
6063         exactly right, since the name *should* be unregistered.
6065 2009-05-25  Chris Toshok  <toshok@ximian.com>
6067         * validators.cpp (Validators::TemplateValidator): this is causing
6068         DRT 438 to throw an exception and subsequently timeout.  its
6069         removal doesn't seem to break anything else, so ifdef it out with
6070         a comment.
6072 2009-05-25  Alan McGovern  <amcgovern@novell.com>
6074         * cbinding.cpp
6075         * cbinding.h: Regen
6077         * dependencyobject.cpp
6078         * dependencyproperty.cpp
6079         * dependencyproperty.g.cpp
6080         * dependencyproperty.h
6081         * uielement.h: There are two types of DependencyProperty. 
6082         Core properties and custom properties. Custom properties
6083         do not set the parent on a DO. This makes the old 
6084         'SetsParent' property redundant, so remove it.
6086 2009-05-22  Chris Toshok  <toshok@ximian.com>
6088         * xaml.cpp (XamlElementInstance::SetName): don't call
6089         AddToContainer here.  in case the element is a value type, and
6090         we're adding it to a RD on a managed type (like StackPanel), the
6091         managed xaml loader will marshal the value type to C# and we'll
6092         lose any further updates to the value typed object by the parser.
6093         That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
6094         ManagedXamlLoader will see a color with #00000000 as its value, as
6095         the content hasn't been parsed by the time we create the managed
6096         object.
6097         (XamlElementInstance::SetKey): same.
6098         (end_element_handler): call AddToParentContainer here instead.
6100 2009-05-22  Chris Toshok  <toshok@ximian.com>
6102         * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
6103         were missing the case where HydratedFromXaml elements weren't
6104         updating their parent namescope on name changes, only their
6105         private ones.  Adding the parent namescope fix fixes FaceMonkey's
6106         button grid.
6108 2009-05-22  Jackson Harper  <jackson@ximian.com>
6110         * xaml.h|cpp: New callback for registering elements in
6111         containers, we need to do this earlier on in the parse than
6112         setproperty because other elements could reference these elements
6113         before they've been set.
6114         
6115 2009-05-21  Alan McGovern  <amcgovern@novell.com>
6117         * src/cbinding.cpp
6118         * src/cbinding.h: regen
6119         
6120         * dependencyproperty.c:
6121         * dependencyproperty.h: We can either register a 'core' property or a
6122         'custom' property from managed code. Core properties are part of the
6123         framework itself, custom properties are user-created. Custom properties
6124         don't set the parent or register names in namescopes.
6125         
6126 2009-05-21  Stephane Delcroix  <sdelcroix@novell.com>
6128         * deepzoomimagetilesource.h:
6129         * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
6130         without listening to the event, if a tilesource is ready to be
6131         consumed.
6132         * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
6133         size from a subimage source.
6135 2009-05-21  Larry Ewing  <lewing@novell.com>
6137         * multiscaleimage.cpp (RenderCollection): reoorder the max level
6138         test so that we only call get_tile_func once in that case.  Speeds
6139         up hardrock and the moment.
6141 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6143         * debug.h: Added LOG_ASF.
6145 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6147         * runtime.h: Don't use 64 bit constants for the runtime debug enum.
6149 2009-05-21  Alan McGovern  <amcgovern@novell.com>
6151         * src/cbinding.cpp
6152         * src/cbinding.h
6153         * src/dependencyproperty.g.cpp: regen
6154         
6155         * dependencyobject.cpp:
6156         * dependencyproperty.cpp:
6157         * dependencyproperty.h:
6158         * uielement.h: Add the ability to set a DP as non-parenting and
6159         apply it to FrameworkElement::TagProperty
6161 2009-05-20  Larry Ewing  <lewing@novell.com>
6163         * multiscaleimage.cpp (RenderCollection): fix bug introduced in
6164         earlier tile size fix.  Fixes covertocover.
6166 2009-05-20  Larry Ewing  <lewing@novell.com>
6168         * brush.cpp:
6169         * bitmapsource.cpp: when creating a cached surface use the group
6170         target type not the overall target.
6172 2009-05-20  Larry Ewing  <lewing@novell.com>
6174         * frameworkelement.cpp (ComputeActualSize): avoid making a
6175         IsLayoutContainer call here.
6177 2009-05-20  Stephane Delcroix  <sdelcroix@novell.com>
6179         * multiscaleimage.cpp: support different tile sizes for the collection
6180         and the individual images. Fixes "the moment" 2D.
6182 2009-05-20  Larry Ewing  <lewing@novell.com>
6184         * xaml.cpp: update the parser error numbers and strings to match 2.0.
6186 2009-05-20  Larry Ewing  <lewing@novell.com>
6188         * multiscaleimage.cpp: small change to avoid getting the property
6189         so often.
6191 2009-05-20  Alan McGovern  <amcgovern@novell.com>
6193         * type.h:
6194         * value.h:
6195         * value.h.in:
6196         * type-generated.cpp: Register 'float' as a known type
6198 2009-05-20  Chris Toshok  <toshok@ximian.com>
6200         * type.h.in: a few changes.  We no longer pass the kind name to
6201         the ctor, since nothing ever uses it, and the type name is enough.
6202         add both an interface array and array count to the Type ctor, as
6203         well as a is_interface bool.  Lastly, add IsAssignableFrom
6204         overloads.
6206         * dependencyobject.cpp (DependencyObject::IsValueValid): switch
6207         from using a direct comparison on Kinds to using
6208         Type::IsAssignableFrom.  this makes interfaces work.
6210         * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
6212         * animation.cpp (AnimationClock::HookupStorage): instead of
6213         comparing kinds, use Type::IsAssignableFrom to see if we can
6214         animate the property using a particular timeline type.
6215         (DoubleAnimation::GetCurrentValue,
6216          DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
6217          ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
6218          PointAnimation::GetTargetValue): add code to deal with the start
6219          value not being the same type as the animation uses (this can
6220          happen if we're animating an interface property like
6221          IComparable.)  The start values in that case are 0.0, Point(0.0),
6222          and Color(0,0,0,0), respectively.
6224 2009-05-19  Larry Ewing  <lewing@novell.com>
6226         * collection.cpp: avoid some GetDeployment calls in looping cases.
6228 2009-05-19  Larry Ewing  <lewing@novell.com>
6230         * frameworkelement.cpp (UpdateLayout): clear the needs flags when
6231         we restart in case they we're properly cleared before.
6233 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6235         * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
6236         function pointers to call whenever the corresponding virtual method
6237         is called.
6239         * enums.h: Move enums from the pipeline here (makes it easier to 
6240         create c bindings for methods taking enums)
6242         * mp3.cpp:
6243         * pipeline-asf.cpp:
6244         * pipeline-ffmpeg.cpp: Update accccording to enum changes.
6246         * codec-version.h.in: Bump ABI version.
6248         * value.h:
6249         * cbinding.cpp|h:
6250         * type-generated.cpp: Regenerated.
6252 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6254         * audio.cpp:
6255         * mediaplayer.cpp:
6256         * mp3.cpp:
6257         * pipeline-asf.cpp:
6258         * pipeline-ffmpeg.cpp:
6259         * pipeline.cpp|h: Add accessors for fields in VideoStream,
6260         AudioStream and MediaFrame.
6261         * cbinding.cpp|h: Regenerated.
6263 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6265         * cbinding.cpp|h: Regenerated.
6267 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6269         * security.h: Include <mono/metadata/assembly.h>.
6270         Fixes a warning (and the build with MD).
6272 2009-05-19  Alan McGovern  <amcgovern@novell.com>
6274         * animation.cpp: Add some optimisations to ObjectKeyFrames.
6275           Don't call back into managed when the value is null or when
6276           the the value is already of the exact right kind. This will
6277           need to be reviewed once unmanaged code understands
6278           interfaces so we can fastpath interfaces too.
6280 2009-05-18  Larry Ewing  <lewing@novell.com>
6282         * dirty.cpp:
6283         * uielement.cpp:
6284         * frameworkelement.cpp: for the time being use the needs* flags on
6285         surface to skip the UpdateLayout logic when the tree is clean.
6286         Optimize a couple of the property reads inside the deep walk.
6287         
6288         * provider.cpp (GetPropertyValue): rework some more of the checks
6289         to remove some other remaining unneeded checks.
6291 2009-05-18  Chris Toshok  <toshok@ximian.com>
6293         * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
6294         regen.
6296 2009-05-18  Larry Ewing  <lewing@novell.com>
6298         * bitmapsource.cpp (GetSurface): use the content type of the image
6299         when creating the native surface.
6301 2009-05-18  Larry Ewing  <lewing@novell.com>
6303         * provider.cpp (GetPropertyValue): reorder the framework element
6304         property lookup to avoid an extra type inquiry in a potentially
6305         common case.
6307 2009-05-18  Larry Ewing  <lewing@novell.com>
6309         * xaml.cpp (dependency_object_set_attributes): move the types
6310         lookup outside the loop.
6312 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6314         * cbinding.h|cpp: 
6315         * type.h: Regenerated.
6316         
6317         * application.h:
6318         * dependencyobject.h:
6319         * dependencyproperty.h:
6320         * downloader.h:
6321         * easing.h:
6322         * frameworkelement.h:
6323         * pipeline.h:
6324         * tilesource.h:
6325         * type.h: Sprinkle CBindingPrequisite around. Also use ints
6326         instead of Type::Kind values in function pointers.
6327         
6328 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6330         * window-gtk.h: Add a GetNativeWidget which returns a void 
6331         pointer instead of GtkWidget* so that we don't need to include
6332         gtk for the c bindings.
6334 2009-05-18  Alan McGovern  <amcgovern@novell.com>
6336         * contentcontrol.cpp: For contentcontrols, the applied
6337           template is only cleared if the old or new content is a
6338           UIElement (frameworkelement?). The fallback 'template' of a
6339           Grid + TextBlock is also reused every time.
6341 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6343         * utils.h: Use c++-style structs to please the generator.
6345 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6347         * window-gtk.h: Add a GetNativeWidget which returns a void
6348         pointer instead of GtkWidget* so that we don't need to include
6349         gtk for the c bindings.
6350         * cbinding.h|cpp: Updated.
6352 2009-05-16  Chris Toshok  <toshok@ximian.com>
6354         * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
6355         be g_strstrip'ed, but we can't do it until right before we use it,
6356         so we do it here.
6358 2009-05-16  Chris Toshok  <toshok@ximian.com>
6360         * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
6361         XamlElementInfo::IsCDataVerbatim): new methods to set and get a
6362         flag telling the cdata_handler to not collapse/remove
6363         whitespace. <clr:String> requires this.
6364         (PrimitiveNamespace::FindElement): for the "String" case, call
6365         XamlElementInfo::SetIsCDataVerbatim(true).
6366         (char_data_handler): if the current element IsCDataVerbatim, just
6367         append the input string and return.
6369 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6371         * security.c: Bump the security env var to _04
6373 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6375         * cbinding.h:
6376         * animation.h:
6377         * cbinding.cpp:
6378         * animation.cpp:
6379         * application.h:
6380         * application.cpp:
6381         * dependencyproperty.g.cpp: Add type converting to
6382           ObjectKeyFrame. The conversion is done during the Resolve
6383           phase. If the type conversion can't be completed an
6384           exception is thrown.
6386 2009-05-15  Chris Toshok  <toshok@ximian.com>
6388         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
6389         in the hydrated case we still need to register our name.
6390         (DependencyObject::ProviderValueChanged): don't swallow the error
6391         when we SetParent on the new_as_dep.
6392         (DependencyObject::SetParent): if we're adding a Hydrated
6393         element (i.e. one that was loaded using LoadComponent), we need to
6394         register its name into the parent namescope.  Also, move the
6395         quickest check to the top so we don't do the family check on every
6396         SetParent call if the before/after parent are the same.  Lastly,
6397         we only register names if the current parent is NULL.  That is, if
6398         a named brush is a property on an element already, and its name is
6399         registered, we don't register it in the new namescope when it's
6400         set as a property on a second element.  Odd but it matches SL
6401         behavior.
6402         (DependencyObject::FindName): no longer walk up the namescope
6403         hierarchy, and don't look up things in the toplevel's namescope
6404         either.
6406         * dependencyobject.h (class DependencyObject): add
6407         SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
6409         * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
6410         object as being hydrated.
6411         (everywhere): we don't need GetParentNamescope for anything.  we
6412         always use the toplevel namescope of the subtree the parser is
6413         currently parsing.
6415         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6416         don't pass a null error to ProviderValueChanged.
6417         
6418 2009-05-15  Larry Ewing  <lewing@novell.com>
6420         * frameworkelement.cpp (UpdateLayout): just warn if the element is
6421         loaded don't skip it for now since it causes regressions in the
6422         control tests.
6424 2009-05-15  Chris Toshok  <toshok@ximian.com>
6426         * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
6427         change that gets automatic storyboards with zero length children
6428         to have a zero length themselves.
6430 2009-05-15  Larry Ewing  <lewing@novell.com>
6432         * grid.cpp (OnCollectionItemChanged): invalidate on column
6433         definition changes.
6435 2009-05-15  Larry Ewing  <lewing@novell.com>
6437         * debug.h (LOG_LAYOUT): use printf.
6439         * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
6441         * frameworkelement.cpp: reorder the updated_list and clean up some
6442         debug spew.
6444         * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
6445         loaded here since it will break delayed queuing of loaded events
6446         when the tree is modified inside the event handler.  Improves
6448 2009-05-15  Jackson Harper  <jackson@ximian.com>
6450         * xaml.cpp: Use the property element's type instead of parsing out
6451         the name, this fixes setting propertys of imported managed types.
6453 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6455         * animation.h:
6456         * dependencyproperty.g.cpp: The Keyframes property of
6457           ObjectAnimationUsingKeyframes needs to be autogenerated.
6459 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6461         * type-generated.cpp:
6462         * frameworkelement.h: Properly handle exceptions when updating
6463           the source in a 2 way binding. Raise the
6464           BindingValidationError event in the right place.
6466 2009-05-14  Jackson Harper  <jackson@ximian.com>
6468         * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
6470 2009-05-14  Larry Ewing  <lewing@novell.com>
6472         * xaml.cpp (lookup_named_item): make this nonrecursive.
6474 2009-05-14  Jeffrey Stedfast  <fejj@novell.com>
6476         * frameworkelement.cpp (OnPropertyChanged): Do a
6477         FullInvalidate(true) when the Horizontal or Vertical Alignment
6478         properties change.
6480 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6482         * dependencyobject.cpp: unref: only try to delete
6483         us if we had a 0 refcount after decrementing refcount.
6484         Also use an atomic fetch when checking if the object
6485         was resurrected.
6487 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6489         * dependencyobject.cpp: when printing stack traces
6490         first get all the lines to print, then print them.
6491         This way it's a lot less probable to get other lines
6492         in between when printing stacktraces from multiple threads.
6494 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6496         * dependencyobject.cpp: Print typename for object creation
6497         too, now that we don't have to call a virtual method to 
6498         get the type.
6500 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6502         * timesource.h: G_PRIORITY_IDLE doesn't exist, use
6503         G_PRIORITY_HIGH_IDLE.
6505 2009-05-13  Chris Toshok  <toshok@ximian.com>
6507         * xaml.cpp (class XamlContextInternal): allow for a parent context
6508         so that we can track context's (and resources) across multiple
6509         template instantiations.
6510         (create_resource_list): just stuff the FrameworkElement on the
6511         list and leave the GetValue(UIElement::Resources) for when we look
6512         up the actual resource.
6513         (end_element_handler): when creating a new XamlContext pass in our
6514         current XamlContext.
6515         (XamlContextInternal::LookupNamedItem): handle both changes (FWE
6516         in our resources list, and parent context chaining.)
6518 2009-05-13  Jackson Harper  <jackson@ximian.com>
6520         * xaml.cpp: We need to dup the top_element since this can be
6521         deleted elsewhere.
6523 2009-05-13  Chris Toshok  <toshok@ximian.com>
6525         * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
6526         clocks (those with Duration=00:00:00) we weren't emitting
6527         completed (or switching to Fill/Stop).
6529 2009-05-13  Jackson Harper  <jackson@ximian.com>
6531         * xaml.h|cpp: use a Value* for top level objects, this lets us get
6532         rid of the gchandle hack in the managed xaml loader for non DOB
6533         top level objects.
6535 2009-05-13  Larry Ewing  <lewing@novell.com>
6537         * canvas.cpp: make IsLayoutContainer nonrecursive using
6538         DeepTreeWalker.
6539         
6540         * frameworkelement.cpp:
6541         * uielement.cpp, uielement.h:
6542         * panel.h: 
6543         * shape.cpp: start reworking the container layout logic to avoid
6544         expensive calls.
6546         * collection.cpp: don't ref elements inside DeepTreeWalker use
6547         UnsafeUIElementNode instead.
6548         
6549         * dirty.cpp (UpdateLayout): remove some dead code.
6551 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6553         * value.cpp: Ensure we don't explode when checking null uris
6555 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6557         * validators.cpp: If StyleProperty has a value and it is
6558           'null', that is allowed to be replaced.
6560 2009-05-12  Chris Toshok  <toshok@ximian.com>
6562         * timeline.cpp (DispatcherTimer::Start): when resetting the clock
6563         we need to make sure to reset the root parent time, or else the
6564         timer will tick immediately when started (if it's previously hit
6565         its tick).
6567 2009-05-12  Larry Ewing  <lewing@novell.com>
6569         * collection.cpp, collection.h: Add a SkipBranch method to avoid
6570         computing walking into the tree when we can.
6572         * frameworkelement.cpp (UpdateLayout): Use the new skip branch
6573         logic in deeptreewalker to avoid invisible elements.
6575 2009-05-12  Larry Ewing  <lewing@novell.com>
6577         * frameworkelement.cpp (UpdateLayout): revert the visibility change
6578         for now.
6580 2009-05-12  Larry Ewing  <lewing@novell.com>
6582         * frameworkelement.cpp (ComputeBounds): make sure the bounds are
6583         the size of the full element, and skip elements based on the
6584         actual visibility setting not the computed one.
6586 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
6588         * textbox.cpp (InvalidateCursor): New helper method which applies
6589         the absolute transform to the cursor before invalidating the
6590         cursor's region.
6591         (ShowCursor): Use InvalidateCursor().
6592         (HideCursor): Same.
6593         (UpdateCursor): Here too.
6595 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
6597         * textbox.cpp (OnKeyDown): Need to set the handled flag on the
6598         routed event args in the case where the key event is handled by
6599         GtkIMContext too.
6600         (OnKeyUp): Set the handled flag in both cases here.
6602 2009-05-11  Alan McGovern  <amcgovern@novell.com>
6604         * control.h:
6605         * control.cpp:
6606         * contentcontrol.cpp: Recommit r133738 as it's not causing the
6607           timeouts.
6609 2009-05-09  Andreia Gaita  <avidigal@novell.com>
6611         * uielement.h: Add GenerateJSBinding annotation to 
6612         CaptureMouse, ReleaseMouseCapture and
6613         GetTransformToUIElementWithError (TransformToVisual)
6615 2009-05-09  Chris Toshok  <toshok@ximian.com>
6617         * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
6618         this check so we're buildable on SLED10.
6620 2009-05-08  Jeffrey Stedfast  <fejj@novell.com>
6622         * layout.cpp (layout_word_wrap): If we can't find a suitable place
6623         to wrap in the first time through the loop, make sure to respect
6624         the 'force' state the second time through.
6626         * application.cpp (GetResourceAsPath): Updated.
6628         * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
6629         to specify whether the filename should be lowercased as it is
6630         canonicalized.
6631         (ExtractAll): The 'canon' argument has been renamed to 'lower'
6632         which more accurately reflects its purpose. Pass this on to
6633         CanonicalizeFilename().
6635 2009-05-08  Alan McGovern  <amcgovern@novell.com>
6637         * control.h:
6638         * control.cpp:
6639         * contentcontrol.cpp: Revert the changes in r133738 until I
6640           can figure out why the x86 bot doesn't like them. It's
6641           causing the extended controls tests to time out.
6643 2009-05-07  Alan McGovern  <amcgovern@novell.com>
6645         * control.h:
6646         * control.cpp:
6647         * contentcontrol.cpp: If the content property changes, the
6648           Template is cleared if it has already been applied.
6650 2009-05-07  Andreia Gaita  <avidigal@novell.com>
6652         * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
6653         the to_element is the top level element.
6655 2009-05-06  Chris Toshok  <toshok@ximian.com>
6657         * xaml.cpp (dependency_object_set_attributes): we can't assume
6658         that a NULL value for @v means it hasn't been set, since {x:Null}
6659         could have been specified.  we need another flag to make it work.
6661 2009-05-06  Jeffrey Stedfast  <fejj@novell.com>
6663         * textbox.cpp (OnPropertyChanged): Guard against calling
6664         ResetIMContext in the middle of some keyboard input.
6666 2009-05-05  Chris Toshok  <toshok@ximian.com>
6668         * collection.cpp (Collection::InsertWithError): we need to make a
6669         further copy because the caller could remove the element in a
6670         handler, which causes us to delete the value (values aren't ref
6671         counted.)
6673 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
6675         * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
6676         false since we're not rendering the preedit strings ourselves.
6677         (TextBoxBase::SetSurface): Update the GtkIMContext's client
6678         GdkWindow.
6679         (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
6680         where the cursor is at.
6682 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6684         * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
6685           elements to be added to ResourceDictionarys in managed land.
6687 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
6689         * layout.cpp (Select): Fixed some selection logic.
6691         * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
6692         and hook up some callbacks. Also init need_im_reset to false.
6693         (TextBoxBase::~TextBoxBase): Kill the IMContext.
6694         (TextBoxBase::OnKeyDown): Filter the event key through the
6695         IMContext. If it handles the key, don't do anything more.
6696         (TextBoxBase::DeleteSurrounding): New callback method for
6697         IMContext stuff.
6698         (TextBoxBase::RetrieveSurrounding): Same.
6699         (TextBoxBase::Commit): New IMContext callback method to commit the
6700         input-method chars into the TextBox.
6701         (TextBoxBase::ResetIMContext): New helper method to reset the
6702         IMContext.
6703         (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
6704         (TextBoxBase::OnFocusIn): Same.
6705         (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
6706         changes, update the GtkIMContext state accordingly. Same with the
6707         various Selection states and Text property.
6709         * eventargs.cpp (GetEvent): New method to get access to the
6710         original GdkEventKey event for use with GtkIMContext.
6712 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6714         * geometry.h:
6715         * animation.h:
6716         * dependencyproperty.g.cpp: Back out the default value fix
6717           until the parser can be updated to handle this.
6719 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6721         * geometry.h:
6722         * animation.h:
6723         * dependencyproperty.g.cpp: PathGeometry.Figures and
6724           ObjectAnimationUsingKeyframes.KeyFrames both need to be
6725           autogenerated. This allows them to pass their respective
6726           DefaultValues tests (when those tests are run).
6728 2009-05-05  Alan McGovern  <amcgovern@novell.com>
6730         * template.h: Remove the forward decls for TemplateBinding and
6731           XamlTemplateBinding as they don't exist in unmanaged anymore
6733 2009-05-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6735         * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
6737 2009-05-04  Geoff Norton  <gnorton@novell.com>
6739         * codec-version.h.in: Bump
6740         * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
6742 2009-05-04  Jeffrey Stedfast  <fejj@novell.com>
6744         * debug.cpp (Frame::ToString): fixed compile warning.
6746         * uielement.cpp (UpdateLayout): Need to return a bool here, we
6747         can't return void.
6749         * textbox.cpp (Blink): Set the deployment.
6751 2009-05-03  Chris Toshok  <toshok@ximian.com>
6753         * everywhere (NotifyListenersOfPropertyChange): add a MoonError
6754         arg here.
6755         
6756         * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
6757         can hook up TemplateBindings in managed code.  Also, change all
6758         the loader callback types to take a loader pointer so we can get
6759         the context.
6761         * template.h|.cpp: remove all the lists of bindings, the
6762         two different template binding types (XamlTemplateBinding and
6763         TemplateBinding) and their respective List::Node containers.  all
6764         this is handled in managed land now, where it belongs.
6766         * dependencyproperty.h|.cpp: move
6767         PropertyChangedEventArgs to dependencyproperty.h, and unify the
6768         two types for property change handlers into simply
6769         PropertyChangeHandler.
6771         * dependencyobject.h: remove the PropertyChangedEventArgs struct
6772         from here, it now lives in dependencyproperty.h
6774         * dependencyobject.cpp (class CallbackListener): pass a MoonError
6775         to the callback.
6776         (DependencyObject::ProviderValueChanged): reuse the
6777         PropertyChangedEventArgs since property change callbacks take them
6778         now instead of splitting up the old_value/new_value/property.
6780         * control.cpp (Control::Control, Control::~Control,
6781         Control::ApplyTemplate): remove all reference to the list of
6782         bindings.
6784         * control.h (class Control): remove the list of bindings.
6786         * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
6787         regen.
6789 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
6791         * runtime.h (InMainThread): check main_thread_inited.
6793         * runtime.cpp: All flags variables are now 32bit. Split _EX flags
6794         into a second debug_flags_ex. Also added a new bool var to keep
6795         track of whether or not main_thread has been initialized since we
6796         can't necessary compare against NULL.
6798         * debug.h: Updated.
6800 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
6802         * debug.cpp: #include <unistd.h>
6804         * *.h: Don't #include stdint.h or unistd.h (only cpp files should
6805         include unistd.h).
6807 2009-05-02  Jeffrey Stedfast  <fejj@novell.com>
6809         * downloader.h: 
6810         * runtime.h:
6811         * color.h:
6812         * clock.h:
6813         * geometry.h:
6814         * value.h[.in]: Don't include stdint.h
6816 2009-05-01  Jackson Harper  <jackson@ximian.com>
6818         * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
6819         handle this also).
6821 2009-05-01  Larry Ewing  <lewing@novell.com>
6823         * collection.cpp: rework the sorting invalidation logic so that we
6824         don't do it quite as often.
6826 2009-05-01  Larry Ewing  <lewing@novell.com>
6828         * collection.h:
6829         * collection.cpp: cache the deployment more and add a
6830         VisualTreeWalker interface to help with that.
6832 2009-05-01  Larry Ewing  <lewing@novell.com>
6834         * type.h:
6835         * type.in.h:
6836         * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
6837         add a static version that handles looking up the deploy for us.
6839         * value.h
6840         * value.h.in
6841         * value.cpp: Make it possible to use a cached deployment when
6842         retriving values using the ::As* methods and calling 
6843         Types::IsSubclassOrSuperclassOf.
6845         * style.cpp: when sealing the style use the cached deployment logic.
6847 2009-05-01  Larry Ewing  <lewing@novell.com>
6848         
6849         * dependencyobject.h:
6850         * xaml.cpp: use types more directly in a few more places to reduce
6851         calls to Deployment::GetCurrent even more.
6853 2009-05-01  Jackson Harper  <jackson@ximian.com>
6855         * validators.cpp|h:
6856         * dependencyobject.cpp|h: Move the name validation check to a
6857         validator (phase one of moving NameProperty to frameworkelement).
6858         * dependencyproperty.g.cpp: regen
6859         
6860 2009-05-01  Jackson Harper  <jackson@ximian.com>
6862         * type.h.in:
6863         * value.h.in: Sync with their .h's
6865 2009-04-30  Jackson Harper  <jackson@ximian.com>
6867         * xaml.cpp: Use the type system for detecting if we should be in
6868         buffering mode, anything that is a FrameworkTemplate
6869         should be buffered.  This fixes custom types that inherit from
6870         DataTemplate not getting buffered properly.
6872 2009-04-30  Jackson Harper  <jackson@ximian.com>
6874         * xaml.cpp: We need to pass the object to GetPropertyName because
6875         non DOB objects can have content properties now.
6877 2009-04-30  Jackson Harper  <jackson@ximian.com>
6879         * xaml.cpp: Don't require a content property name when we are
6880         trying to set a managed content property.  This could be the
6881         content of a managed collection.
6883 2009-04-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6885         * bitmapimage.cpp: Make sure we clean up any previous
6886           downloaders when we create new ones.
6888 2009-04-29  Larry Ewing  <lewing@novell.com>
6890         * frameworkelement.cpp:
6891         * uielement.cpp (DoMeasure): reorder some calls to improve speed
6892         until the new logic lands.
6894 2009-04-29  Larry Ewing  <lewing@novell.com>
6896         * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
6897         reduce Deployment::GetCurrent calls.
6899         * type.h:
6900         * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
6901         for value checking.
6903 2009-04-29  Larry Ewing  <lewing@novell.com>
6905         * xaml.cpp:
6906         * dependencyobject.cpp: reuse types to reduce calls to
6907         Deployment::GetCurrent ().
6909 2009-04-29  Alan McGovern  <alan.mcgovern@gmail.com>
6911         * popup.cpp: Forgot to call the base Dispose method.
6913 2009-04-29  Geoff Norton  <gnorton@novell.com>
6915         * debug.cpp: Not everyone in the world is 32-bit intel.
6917 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
6919         * textblock.cpp (SetTextInternal): Protect everything from
6920         reentrancy and never replace the autocreated InlineCollection with
6921         a newly allocated one. Instead, Clear() the old one and add the
6922         new Run.
6923         (OnCollectionChanged): If !setvalue, then it means we are updating
6924         stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
6926 2009-04-29  Andreia Gaita  <avidigal@novell.com>
6928         * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
6929         parseable stacktraces for later visualization
6931 2009-04-29  Andreia Gaita  <avidigal@novell.com>
6933         * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
6934         calls in a nice way, for later parsing and visualization.
6936 2009-04-29  Geoff Norton  <gnorton@novell.com>
6938         * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
6939         nicely crashes on a incomplete .so (thanks).  As such we're going to 
6940         sha1 the expected binary before blindly installing it to gatekeep
6941         against this.
6943 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
6945         Fixes some cursor position/selection bugs
6947         * layout.cpp (TextLayoutLine): Initialize a new member variable
6948         'count' to 0.
6949         (Layout): Update line->count (needed for the reworking of
6950         GetCursor) and line->length (which was the case of the bugs)
6951         variables as we go. Switch to doing this for run->length too.
6952         (GetCursor): Reworked a bit to use character indexes to help us
6953         find the correct cursor position rather than using byte offsets
6954         which were more awkward.
6956 2009-04-29  Alan McGovern  <amcgovern@novell.com>
6958         * popup.h:
6959         * popup.cpp: Remove the attached layer correctly when the
6960           surface is being nulled on a Popup. 
6962 2009-04-29  Geoff Norton  <gnorton@novell.com>
6964         * style.cpp:
6965         * provider.cpp: GetIterator returns a ref'd iter, we need to delete
6966         it when we're done to clean it up.
6967         * dependencyproperty.g.cpp: You raise me up.
6968         * deployment.cpp|h: Deployment has a cyclic reference to things 
6969         stored in it (AssemblyParts, NameScope), we need to break this cycle
6970         in our disposer so they can be properly cleand up.
6971         * xaml.cpp: If we create a new collection, and set the collection as
6972         some objects value, it will have a refcount of 2.  We need to unref
6973         the collection once we've handed it off.
6975 2009-04-28  Geoff Norton  <gnorton@novell.com>
6977         * popup.cpp: We cannot access this local value here since its been
6978         cleared in our dispose call.
6980 2009-04-28  Geoff Norton  <gnorton@novell.com>
6982         * deployment.cpp: Now that we properly shut down the clocks and 
6983         media threads, we can finalize the domain here instead of pumping
6984         the GC.
6986 2009-04-28  Chris Toshok  <toshok@ximian.com>
6988         * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
6989         address of a temporary.
6991 2009-04-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6993         * audio.h:
6994         * audio.cpp: When looping over playing nodes, don't include
6995           nodes in the Waiting state.
6997         * audio-alsa.cpp: when Played, update the poll list. The state
6998           might not actually have changed if only the Waiting flag was
6999           switched.
7001 2009-04-28  Larry Ewing  <lewing@novell.com>
7003         * uielement.cpp
7004         * uielement.h:
7005         * dirty.cpp:
7006         * runtime.cpp:
7007         * runtime.h:
7008         * frameworkelement.h:
7009         * frameworkelement.cpp: add FrameworkProvider for actual*
7010         values.  Rework layout using the actual* values and add a first
7011         pass at looping layout.
7013         * collection.cpp:
7014         * collection.h: Add a deep tree walker that allows you to walk the
7015         entire tree without recursing.
7016         
7017         * media.cpp:
7018         * media.h:
7019         * shape.cpp:
7020         * shape.h:
7021         * canvas.h:
7022         * canvas.cpp: rework layout logic for the new providers and handle
7023         more of the corner cases.
7025         * textblock.h:
7026         * textblock.cpp: Remove the old Actual* provider since we use the
7027         generic one now.  Go a bit crazy with Invalidations until they can
7028         be reworked.
7030         * eventargs.cpp: stop using IsAnythingDirty.
7031         
7032 2009-04-28  Larry Ewing  <lewing@novell.com>
7034         * dependencyobject.cpp:
7035         * mediaelement.cpp:
7036         * mediaplayer.cpp:
7037         * textbox.cpp:
7038         * timesource.cpp:
7039         * timesource.h: rework the priority of our event queue so that
7040         we end up being more responsive to input and give the browser a
7041         chance to do things like repaint.
7043 2009-04-28  Jackson Harper  <jackson@ximian.com>
7045         * xaml.cpp: Don't allow x:Class on non top level elements.
7047 2009-04-28  Jackson Harper  <jackson@ximian.com>
7049         * dependencyproperty.cpp: When resolving property paths if we
7050         don't have enough info to lookup the correct managed type we just
7051         verify that the current lookup object has the correct type name,
7052         excluding namespace.
7054 2009-04-28  Alan McGovern  <amcgovern@novell.com>
7056         * cbinding.h:
7057         * cbinding.cpp:
7058         * contentcontrol.h:
7059         * contentcontrol.cpp: Add the ability to stop ContentControl
7060           from automatically setting the LogicalParent when a
7061           FrameworkElement is added as the Content.
7063 2009-04-27  Jackson Harper  <jackson@ximian.com>
7065         * value.cpp: property path's have expanded paths that need to be
7066         copied, freed, ect now.
7067         * propertypath.h: Add an expanded path to the property path, this
7068         is a path with managed types marked with namespaces expanded into
7069         full names. So 'moon:MyType' becomes something like
7070         'MoonNamespace.MyType'.
7071         * dependencyproperty.cpp: If an expanded path is available use
7072         that for property path parsing.  Also added support for the ' mark
7073         for escaping full type names (otherwise full names could not have
7074         '.'s). The ' can only be used in expanded paths.
7075         * xaml.cpp: When parsing property paths expand out managed
7076         namespaces if possible.
7078 2009-04-27  Geoff Norton  <gnorton@novell.com>
7080         * value.cpp: Its possible for these pointers to be 0x0 here, so
7081         we need to guard against a invalid dereference causing a SIGSEGV
7082         fixes moon-unit with toggleref on.
7084 2009-04-27  Geoff Norton  <gnorton@novell.com>
7086         * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
7088 2009-04-24  Chris Toshok  <toshok@ximian.com>
7090         It turns out the granularity of overriding in styles is at the
7091         setter level, not the style level.  so if you have a local style
7092         with a setter for Background, it doesn't overwrite the default
7093         style setters for, say, Foreground.  We handle this by having two
7094         style providers, with the local style provider overriding the
7095         default style provider.
7096         
7097         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
7098         initialize both of the style providers (at both LocalStyle and
7099         DefaultStyle levels.)
7100         (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
7101         style (so that values are converted in managed-land), and seal it
7102         at the local style level.
7103         (FrameworkElement::SetDefaultStyle): same blob here, but seal it
7104         at the default style level.
7106         * dependencyobject.cpp (DependencyObject::Initialize): pass
7107         precedences to the providers in their ctors, and also don't
7108         initialize a style provider here.  This saves us from having a
7109         style provider on anything except frameworkelement subclasses.
7111         * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
7112         precedence ctor arg to property value providers.
7114         * provider.h: provider ctors now take both an object and a
7115         precedence level.  that way they know what precedence level to
7116         notify changes on (this is mostly for the style provider, but it
7117         moves all the precedence level logic to the spot where we create
7118         the provider, not in the provider code itself.)
7120         * provider.cpp: add all the precedence ctor args.
7121         (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
7122         with the precedence we were initialized with.
7123         (AutoCreatePropertyValueProvider::GetPropertyValue): same.
7124         
7125 2009-04-24  Alan McGovern  <amcgovern@novell.com>
7127         * runtime.cpp: When a layer is being detached, don't try to
7128           invalidate its bounds if the active window has already been
7129           torn down. Fixes the case where a popup is open while the
7130           window is being torn down.
7132 2009-04-24  Alan McGovern  <amcgovern@novell.com>
7134         * popup.h:
7135         * popup.cpp: When the popup is detached from the surface, it
7136           should automatically close if it is open.
7138 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7140         * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
7141         lwsp after going beyond the width constraint. Fixes the
7142         tests in the far right in MS DRT 206.
7144 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7146         * font.cpp (GetGlyphInfo): Don't special-case
7147         ZeroWidthNonBreakingSpace anymore. Rely on the font for this
7148         glyph. That seems to be what SL2 does now...
7150         * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
7151         implemenetd a forced-wrap if we can't find a suitable place to
7152         wrap.
7154 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7156         * layout.cpp (layout_word_wrap): Don't treat special numeric
7157         punctuation as the start of a numeric word until we see what lays
7158         beyond it.
7160 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7162         * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
7163         anymore, that was a 1.0-thing and can no longer be used. Also
7164         added support for non-breaking-glue classes as well as rules for
7165         breaking on combining-marks, open-punctuation, contingents,
7166         quotations, prefixes, and words starting with an infix.
7168 2009-04-23  Chris Toshok  <toshok@ximian.com>
7170         * animation.cpp|.h, clock.cpp|.h: remove
7171         OnSurfaceAttach/OnSurfaceDetach.  They're no longer used.
7173 2009-04-23  Chris Toshok  <toshok@ximian.com>
7175         * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
7176         clock state and use that to tell whether to update the child
7177         clocks on this tick.  Clock::UpdateFromParentTime will change it
7178         out from under us, and child clocks won't get updated the last
7179         time when we switch to Filling or Stopped.
7181 2009-04-23  Chris Toshok  <toshok@ximian.com>
7183         * animation.cpp (Animation::AllocateClock): remove the name
7184         setting from here, since it only works here if the target/property
7185         were set on the animation itself.
7186         (AnimationClock::HookupStorage): and move it here, when we know
7187         both the target and property.
7189         * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
7190         Class::Event instead of instance->Event.  also set the name of the
7191         storyboard in debug mode.
7192         (MultiScaleImage::SetViewportOrigin): same.
7193         (motion_finished): make static.
7195 2009-04-23  Chris Toshok  <toshok@ximian.com>
7197         * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
7198         clocks (not clockgroups, mind you) if we're active and not paused.
7199         Fixes animations reverting in lutz's deep zoom demo.
7201 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7203         Lots of fixage for MS DRT #209
7205         * layout.cpp (layout_word_wrap): Fixed for inseparables,
7206         exclamations, ambiguous, and postfix. Also removed the
7207         glyph->index == 0 hack that was there for Silverlight 1.0
7209 2009-04-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7211         * dependencyobject.h:
7212         * dependencyobject.cpp: Add a way to mark allow objects to be
7213           deleted on any thread, not just the main thread.
7215         * pipeline.cpp: MediaClosures can be deleted on any thread.
7217 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7219         * layout.cpp (layout_word_wrap): Add a bit more logic for infix
7220         separators. Finishes off MSDRT 208.
7222 2009-04-22  Chris Toshok  <toshok@ximian.com>
7224         * xaml.cpp (value_from_str): permit empty int32's (they're 0).
7225         add comment about empty doubles.
7227 2009-04-22  Chris Toshok  <toshok@ximian.com>
7229         * xaml.cpp (dependency_object_add_child): guard against adding an
7230         empty Value to a resource dictionary.  this happen when you have
7231         no content on a primitive type (<sys:Bool></sys:Bool>) and
7232         value_from_str can't deal with parsing an empty string.
7233         (value_from_str): for non-object/non-string types, we need to
7234         strip leading/trailing whitespace before attempting to parse. this
7235         allows things like: <sys:Bool> true </sys:Bool>
7236         (class XamlElementInstanceValueType): for empty elements the value
7237         will have never been set.  try to set it here using an empty
7238         string.
7240 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7242         * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
7243         SelectionLength values as they come in. Apparently this is what
7244         Silverlight does too.
7246 2009-04-22  Chris Toshok  <toshok@ximian.com>
7248         * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
7249         with true meaning "i need another tick."
7250         (ClockGroup::UpdateFromParentTime): same.
7252         * timeline.cpp (DispatcherTimer::Start): use the timemanager to
7253         add the clock.
7254         (DispatcherTimer::Run): use the root_clock's parent clock here to
7255         simplify the code a bit.
7256         (DispatcherTimer::~DispatcherTimer): same.
7258         * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
7259         we don't care about groups, just add it to the deployment's
7260         timemanager.
7262         * timemanager.h|cpp (class RootClockGroup): new class to represent
7263         the root clock group created by a time manager to house all other
7264         clocks in a surface.  It has slightly different behavior from a
7265         noprmal clock group, particularly wrt putting the timemanager to
7266         sleep.
7267         (TimeManager::TimeManager): create a RootClockGroup.
7268         (TimeManager::RemoveTickCall): if we're putting the time manager
7269         to sleep, check to see if this was the last tick call, and clear
7270         the flag (and stop the source if the flags are now empty).
7271         (TimeManager::NeedRedraw): now that clock smoothing isn't used,
7272         source->SetTimerFrequency() can't be called with whatever timeout
7273         we like and have it migrrate back to the user-specified time.  so
7274         change 0 to current_time.
7275         (TimeManager::NeedClockTick): same.
7276         (TimeManager::AddTickCall): same.
7277         (TimeManager::SourceTick): remove the #if'ed out version with
7278         clock smoothing, and add back in the stuff to put the time manager
7279         to sleep (currently ifdef'ed out still)
7280         (TimeManager::AddClock): move the logic to delay the root clock
7281         group here out of Storyboard::Begin.  This is because we also want
7282         to do this with DispatcherTimers as well.  Given that there is no
7283         TimeManager::GetRootClock anymore, this is the only api to add
7284         child clocks.
7286 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7288         * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
7289         the 'in' ptr to inend.
7291         * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
7293 2009-04-22  Rusty Howell  <rhowell@novell.com>
7295         * building libmoonxpi for the FF plugin
7297 2009-04-21  Chris Toshok  <toshok@ximian.com>
7299         * provider.cpp:
7300         (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
7301         but hopefully worth the hotspot reduction.  do fast checks to see
7302         if we're even dealing with a property that's inheritable first.
7303         cache the Types* pointer instead of indirectly fetching it
7304         repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
7305         directly instead.)
7307 2009-04-21  Jeffrey Stedfast  <fejj@novell.com>
7309         * glyphs.cpp (Layout): Fixed scaling calculation.
7311         * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
7312         and LayoutWrap. The different word-wrapping behaviors are, as
7313         before, handled in different subroutines but the outer loops are
7314         all now merged.
7316 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
7318         * textblock.cpp (SetTextInternal): Don't break the string into
7319         multiple inlines, Silverlight shoves the entire string into a
7320         single Run no matter what.
7321         (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
7322         character instead of \n to match Silverlight behavior.
7324         * layout.cpp: Fixed various loops and checks to properly handle
7325         any type of unicode line-breaking character.
7327 2009-04-21  Alan McGovern  <amcgovern@novell.com>
7329         * collection.h: HitTestCollection should override
7330           RemovedFromCollection the same way it overrides
7331           AddedToCollection so that items added/removed from the
7332           collection are not reparented.
7334 2009-04-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7336         * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
7338 2009-04-20  Chris Toshok  <toshok@ximian.com>
7340         * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
7341         this method.  Also, don't multiply to compute localTime only to
7342         turn around and divide to compute normalizedTime.  normalizedTime
7343         is always the factor we multiply natural_duration_timespan by.
7345 2009-04-20  Chris Toshok  <toshok@ximian.com>
7347         * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
7348         textblock autocreator here, and stop using TextBlock vs. Control
7349         for the font size names, as both textblock and controls have the
7350         varying font size.  There's also no reason to make them public
7351         anymore.  if you want the font size, just call GetFontSize().
7353         * control.h: FontSize uses an autocreator now, and remove the
7354         #define.
7356         * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
7357         of the #define, and while we're at it just replace the other
7358         defines with calls to the getters too.
7360         * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
7361         now), and the #define for font_size.
7363         * dependencyproperty.g.cpp: regen.
7364         
7365 2009-04-20  Chris Toshok  <toshok@ximian.com>
7367         * security.c (security_enable_coreclr): version the
7368         MOON_DISABLE_SECURITY variable.
7370 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
7372         * textblock.cpp (TextBlock): Removed cached TextFontDescription
7373         since it's only ever used in 1 place and even then it's a corner
7374         case.
7376 2009-04-20  Chris Toshok  <toshok@ximian.com>
7378         * timeline.cpp: fix up DispatcherTimers after I broke them by
7379         removing the clock event.
7381 2009-04-19  Chris Toshok  <toshok@ximian.com>
7383         * eventargs.h|.cpp: add RenderingEventArgs type.
7385         * timemanager.cpp (TimeManager::SourceTick): the render event
7386         takes a RenderEventArgs, even though the type of the event is
7387         EventHandler.  Goes a long way toward fixing DRT #394 and fixes
7388         DRT #905.
7390         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
7391         regen.
7392         
7393 2009-04-19  Chris Toshok  <toshok@ximian.com>
7395         * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
7396         default for the various shapes (Fill if a rectangle or ellipse,
7397         None for all other types).  Fixes part of DRT #508.
7398         (Rectangle::Rectangle): don't set the default value as a local
7399         value.
7400         (Ellipse::Ellipse): same.
7402 2009-04-19  Jeffrey Stedfast  <fejj@novell.com>
7404         * textblock.cpp (DefaultFontSize): New function to get the default
7405         font size for a TextBlock (or Inline) based on the Silverlight
7406         context (XAP vs XAML).
7408 2009-04-19  Chris Toshok  <toshok@ximian.com>
7410         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7411         inlines inherit their Language from the textblock, and textblocks
7412         inherit it from frameworkelements.  part of fix for drt #952.
7414 2009-04-18  Chris Toshok  <toshok@ximian.com>
7416         * clock.h|.cpp: move to the holy grail of a functional clock
7417         setup.  this removes Clock::Tick and related additive machinery
7418         that introduces errors into various calculations.  instead we use
7419         the fact that a child's time can be expressed as a function of its
7420         parent's time.  more calculation per-frame, perhaps, but less
7421         problems wrt inflection points like autoreverse/repeat points.
7422         This removes *tons* of difficult to read and impossible to
7423         understand code, and brings clocks and clockgroups a lot closer.
7424         Docs coming soon to a source file near you.
7426         * timeline.h|.cpp: various clock-related changes.  2 notables are
7427         the fact that all Timelines have a completed event now instead of
7428         just storyboards (because Clocks are also emitting completed now,
7429         not just ClockGroups), and DispatcherTimers now subclass from
7430         Timeline instead of TimelineGroup.  We also use a virtual method
7431         instead of an event handler for ticking DispatcherTimers.
7432         
7433         * animation.h|.cpp: more clock fallout.  Also, rewrite
7434         HookupAnimationsRecurse so that we propagate the current
7435         target/property as parameters instead of requiring a search back
7436         up the tree at ever level.
7438         * timemanager.cpp: more clock rewrite stuff.  Set the surface
7439         clockgroup's duration to forever instead of automatic, and switch
7440         from ->Tick to ->UpdateFromParentTime.
7441         
7442         * multiscaleimage.cpp: track changes to storyboard api (basically
7443         i removed the non-WithError methods.. maybe i should put them
7444         back?)
7446         * cbinding.h|.cpp, type-generated.cpp: regen.
7448 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7450         * glyphs.cpp (Layout): Pass our StyleSimulations along to
7451         GetGlyphInfo() so that we can simulate Bold or Italics as the user
7452         has requested.
7454         * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
7455         argument (which defaults to None). Adjust the glyph for Bold
7456         and/or Italics if requested.
7457         (TextFont::GetGlyphInfo): Now takes a StyleSimulations
7458         argument (which defaults to None). When looking up the glyph in
7459         the cache, make sure that the simulations also match. When loading
7460         a new glyph, pass along the StyleSimulations.
7462 2009-04-17  Larry Ewing  <lewing@novell.com>
7464         * runtime.cpp (Surface): remove references to removed variable.
7466 2009-04-17  Chris Toshok  <toshok@ximian.com>
7468         * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
7469         getter/setter here, and move XapLocation from surface to here.
7471         * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
7473         * downloader.cpp: use Deployment::GetXapLocation
7475         * cbinding.h|chinding.cpp: regen.
7477 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7479         * font.h: Changed the glyph cache size to be #defined rather than
7480         hard-coded everywhere.
7482 2009-04-17  Jackson Harper  <jackson@ximian.com>
7484         * xaml.cpp: When we are setting the Name property use the same
7485         trick we are using for setting the x:Name property.  Grabbing the
7486         parent element and making sure we get registered in that
7487         namescope.  This isn't perfect, but should fix 95% of the managed
7488         namescope problems.
7490 2009-04-17  Alan McGovern  <amcgovern@novell.com>
7492         * popup.h:
7493         * type-generated.cpp: Correctly mark Popup.Child as its
7494           Content property.
7496 2009-04-17  Geoff Norton  <gnorton@novell.com>
7498         * media.cpp: Ensure that we invalidate the image if the
7499         BitmapImage has already been parsed (like from a SetSource call)
7501 2009-04-17  Geoff Norton  <gnorton@novell.com>
7503         * error.cpp: Image errors use the code 4001, fixes #97
7505 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7507         * glyphs.cpp (Layout): Don't bail if we have something other than
7508         StyleSimulationsNone.
7510         * enums.h (enum StyleSimulations): Added Bold, Italic, and
7511         BoldItalic.
7513 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7515         * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
7516           already unref them upon destruction.
7518 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7520         * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
7521         of our inlines' fonts have changed - if they all override the font
7522         family, then there's no need to redraw.
7524 2009-04-16  Jackson Harper  <jackson@ximian.com>
7526         * dependencyobject.cpp: Unregister the old name when we set an
7527         objects name.
7529 2009-04-16  Sebastien Pouliot  <sebastien@ximian.com>
7531         * openfile.cpp|h: Add a dialog requester to increase isolated
7532         storage quota. Add function to recursively compute the total size
7533         of a directory, which is used to check quota in IS.
7535 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7537         * deployment.cpp: mono_gc_invoke_finalizers may cause the
7538           current appdomain to change, so restore it afterwards. Fixes
7539           a rare, random crash upon shutdown.
7541 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7543         * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
7544         invalidating the TextBoxBase, we need to emit an event to let the
7545         TextBoxView know our font has changed.
7546         (TextBoxView::OnModelChanged): Reset state on the layout when the
7547         font changes (since it has no way of knowing that the font has
7548         changed otherwise).
7550         * textblock.cpp (Inline::UpdateFontDescription): Return true if
7551         the font has changed or false otherwise.
7552         (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
7553         return true and reset the state on the TextLayout.
7555         * font.cpp (TextFontDescription::Set*): Return true if the font
7556         has changed or false otherwise.
7558         * layout.cpp (TextLayout::ResetState): New method to reset the
7559         state of a TextLayout. Normally the state only gets reset if a
7560         layout property chanegs, but sometimes it is necessary to notify
7561         the TextLayout engine of a state change in one of the
7562         TextLayoutAttributes.
7564 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7566         * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
7567         xap resource, download it from the web.
7569         * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
7570         resource, download it from the web.
7572 2009-04-15  Larry Ewing  <lewing@novell.com>
7574         * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
7575         correctly.
7577 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7579         * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
7580         glib until 2.10, so so guard to allow building on systems with
7581         older versions of glib. Also merged BREAK_NEXT_LINE and
7582         BREAK_UNKNOWN into the BREAK_AFTER group.
7584 2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7586         * runtime.cpp: Don't support versions of the type "1.0..0".
7587           Fixes a test case in MS DRT #21.
7589 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7591         * downloader.cpp (Downloader::Open): fix the argument passed to
7592         validate_policy
7594 2009-04-15  Alan McGovern  <amcgovern@novell.com>
7596         * utils.cpp: We need to increment the pointer otherwise we
7597           loop forever.
7599 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7601         * downloader.cpp (Downloader::Open): make the relative uris relative to
7602         the xaplocation
7603         (check_redirection_policy, Downloader::Write): don't use
7604         uri->originalString, but uri->ToString ()
7606 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7608         * runtime.h|cpp (Surface): xap_location, Get() and Set()
7610 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7612         * layout.cpp (layout_word_wrap): Fixed word-break logic for
7613         ambiguous break-types. Fixes second column of text in test #208.
7615 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7617         * layout.cpp (layout_word_wrap): Fixed word-breaking around a
7618         BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
7620 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
7622         * deepzoomimagetilesource.h: expose IsDownloaded()
7623         * multiscaleimage.cpp: download the tile source for the subimage before
7624         downloading the un-shared tiles.
7626 2009-04-14  Andreia Gaita  <avidigal@novell.com>
7628         * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
7629         indicates frame could not be decoded. fixes uninitialized buffer
7630         size leading to huge memory allocation and abort. kudos to
7631         Alp Toker for spotting this.
7633 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7635         * layout.cpp (layout_word_wrap): Added support for Hangul and
7636         ideographic word breaking. Improves test #208 quite a bit.
7638 2009-04-14  Larry Ewing  <lewing@novell.com>
7640         * control.h:
7641         * control.cpp (InsideObject): always return fals controls don't
7642         handle the testing.  Fixes MSI navigation in
7643         http://playboy.covertocover.com/
7644         
7645         * panel.h:
7646         * panel.cpp: remove HitTest stubs.
7648 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7650         * layout.cpp (layout_word_wrap): Added logic to for breaking after
7651         more break-types including BREAK_AFTER, BREAK_HYPHEN, and
7652         BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
7653         behavior on test #206.
7655 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
7657         * layout.cpp (utf8_strlen): Removed, this has never been sued.
7658         (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
7659         no longer has this wrapping bug.
7660         (layout_word_wrap): Don't need to check if we're at the last word
7661         in the textblock because Silverlight 2.0 fixed this bug.
7662         (FindLastWord): Removed, no longer needed.
7664 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7666         * pipeline.h:
7667         * playlist.cpp: Don't try to open the media if an error has
7668           been reported.
7670 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7672         * mediaelement.h:
7673         * mediaplayer.cpp:
7674         * mediaelement.cpp: Check for markers with a timeout instead
7675           of after rendering a frame, this way markers also work with
7676           audio-only media.
7678 2009-04-14  Jackson Harper  <jackson@ximian.com>
7680         * dependencyobject.cpp|h: Add a return value for SetName with
7681         namescope, returns false if there is an error.
7682         * xaml.cpp: Check the return value of SetName
7684 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
7686         * uri.cpp (Combine): strip leading ../ as we're already cutting the
7687         filename off the base uri
7689 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7691         * type.h:
7692         * size.h:
7693         * xaml.h:
7694         * utils.h:
7695         * value.h:
7696         * stylus.h:
7697         * value.cpp:
7698         * type.h.in:
7699         * runtime.h:
7700         * value.h.in:
7701         * openfile.h:
7702         * transform.h:
7703         * tilesource.h:
7704         * downloader.h:
7705         * timemanager.h:
7706         * downloader.cpp:
7707         * timemanager.cpp: Added @GeneratePInvoke to all methods used
7708           in managed code. For C++ methods also generate the
7709           corresponding C method.
7711         * cbinding.h:
7712         * cbinding.cpp: Regenerated.
7714 2009-04-13  Jeffrey Stedfast  <fejj@novell.com>
7716         * textblock.cpp (SetFontResource): If we cannot get the resource
7717         from within the xap, then we need to spawn a downloader to fetch
7718         it from the web.
7720 2009-04-13  Geoff Norton  <gnorton@novell.com>
7722         * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
7723         centrally.
7725 2009-04-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7727         * src.mdp: Updated.
7729 2009-04-12  Jeffrey Stedfast  <fejj@novell.com>
7731         * debug.cpp (hexdump_addr): New function to help toshok print a
7732         hexdump of memory from gdb.
7734         * textbox.cpp (TextBoxBase::SetFontResource): Set the font
7735         filename/guid based on the resource provided.
7736         (TextBoxBase::OnPropertyChanged): If a font resource is named in
7737         the FontFamily property, then call SetFontResource() with the
7738         provided resource name.
7739         (TextBox::ClearFontSource): Clear the FontSourceProperty.
7740         (PasswordBox::ClearFontSource): Same.
7742 2009-04-11  Chris Toshok  <toshok@ximian.com>
7744         * provider.h|.cpp, dependencyobject.cpp: get rid of
7745         PropertyPrecedence_Animation and the associated provider.  in SL,
7746         animations are considered local values (and a choir of angels was
7747         heard moaning as they fell on their swords).
7749 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
7751         * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
7752         FT_Streams and setup their own FT_Open_Args instead. This solves
7753         the crasher problems in the silverlight2 test harness.
7755         * textblock.cpp (Inline::SetFontResource): New method to update
7756         our FontFilenameProperty and FontGUIDProperties.
7757         (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
7758         that reference a resource.
7759         (Inline::UpdateFontDescription): Parse out the family name from
7760         the FontFamily::Source.
7762 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
7764         * textblock.cpp (TextBlock::SetFontResource): Renamed from
7765         SetFontSource() to be more accurate.
7767         * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
7768         fail. This is probably what was causing the crash on
7769         font_shutdown().
7771         * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
7772         than a string and returns a bool argument hinting at whether we
7773         succeeded or not.
7774         (OnPropertyChanged): Only fall back on creating a downloader for
7775         the font if the uri is not a resource.
7777 2009-04-11  Jackson Harper  <jackson@ximian.com>
7779         * xaml.cpp: If we are hydrating we don't need the extra ref.
7781 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7783         * uri.cpp (ToString): Made to accept const Uri*
7785         * textblock.cpp (SetFontSource): Parse the resource string into a
7786         Uri and pass that along to GetResourceAsPath().
7788         * glyphs.cpp (SetFontResource): Parse the resource string into a
7789         Uri and pass that along to GetResourceAsPath().
7791         * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
7792         GetResource().
7794         * application.cpp (GetResource): Oops, this really does need a Uri
7795         argument.
7796         (GetResourceAsPath): Use a Uri here too, and convert any ';' into
7797         a '/'.
7799 2009-04-10  Jackson Harper  <jackson@ximian.com>
7801         * xaml.cpp: Let the XamlElementInstances cleanup their Values.
7803 2009-04-10  Chris Toshok  <toshok@ximian.com>
7805         * timemanager.cpp (TimeManager::SourceTick): just for kicks
7806         completely rip out the clock smoothing code, and also emit all
7807         tick calls (don't worry about how much time we're taking in them).
7808         Lastly, emit tick calls *before* rendering.  we need to do this or
7809         else the Loaded event won't be posted before we draw (when we
7810         delay the loaded event, that is.) which leads to a great many
7811         VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
7812         flag for the initial children z-sorting.
7814         * collection.cpp (VisualTreeWalker::Step): add a special case for
7815         collection::count == index == 1, which is what we end up with on
7816         uielement's with a subobject.  it won't be a collection child of a
7817         panel, so it'll never be z-sorted, but since it's only 1 element
7818         it doesn't need to be anyway.
7820         * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
7821         to Panel.  Also, move the ZIndex OnCollectionItemChanged code into
7822         panel as well.
7824         * panel.h|.cpp: remove a couple of unused
7825         decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
7826         canvas.h|cpp here.
7828 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7830         * font.cpp (OpenFaceByIndex): New helper function split out from
7831         FontFace::LoadFontFace() which performs the FT_Open_Face() and
7832         family name matching.
7833         (OpenFaceByFamily): If we don't have an index, this function opens
7834         all faces in the file and finds a matching font face based on
7835         family.
7836         (LoadFontFace): Use our new helper functions.
7838         * textblock.cpp (SetFontSource): On fail, set the font filename to
7839         NULL and call UpdateFontDescriptions() no matter what.
7841         * font.cpp (UnsetFields): Allow unsetting of the font index.
7842         (Merge): Merge the index separately.
7843         (SetIndex): Set/unset the FontMaskIndex bit.
7845         * glyphs.cpp (SetFontResource): New internal method to set a font
7846         resource stream.
7847         (OnPropertyChanged): Handle non-absolute Uris as resource streams.
7849 2009-04-10  Larry Ewing  <lewing@novell.com>
7851         * multiscaleimage.cpp: add a translucency check before calling
7852         cairo_paint_with_alpha.
7854 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>a
7856         * textblock.cpp (SetFontSource): New method for setting a font
7857         source via a resource name.
7858         (OnPropertyChanged): When the FontFamily changes, parse out the
7859         resource name (if it exists) and set that as our font source.
7861         * bitmapimage.cpp (UriSourceChanged): Updated.
7863         * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
7865         * application.cpp (GetResourceAsPath): New helper method to get a
7866         specified resource as a filesystem path.
7867         (GetResource): Now takes a resource name rather than a Uri.
7869         * utils.cpp (CanonicalizeFilename): New function to canonicalize a
7870         filename.
7871         (ExtractAll): New helper function to extract all files from a zip
7872         archive into a specified directory.
7874 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
7876         * textblock.cpp (CleanupDownloader): New helper method.
7877         (SetFontSource): Use CleanupDownloader() and also clear the
7878         FontSourceProperty since this will override that source.
7879         (OnPropertyChanged): Parse the FontFamily name.
7880         (DownloaderComplete): Use SetValue() correctly.
7882         * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
7883         handler.
7885 2009-04-10  Sebastien Pouliot  <sebastien@ximian.com>
7887         * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
7888         all coreclr-related code from being compiled.
7890 2009-04-09  Chris Toshok  <toshok@ximian.com>
7892         * uielement.cpp (UIElement::WalkTreeForLoaded): be more
7893         descriptive with the "attempting to use a null application" thing.
7895         * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
7896         that were missing.  we need to make this less fragile, and have it
7897         use the event strings in type-generated.cpp.
7898         (end_element_handler): add more text to the line about attempting
7899         to use a null application, so we can differentiate it from the
7900         other one.
7902         * timeline.h (class Timeline): BeginTime has, in fact, a default
7903         value (of 0.)
7905         * dependencyproperty.g.cpp: regen.
7907 2009-04-09  Jeffrey Stedfast  <fejj@novell.com>
7909         * textblock.h, textbox.h: Added FontSourceProperty.
7911         * value.cpp|h: Added FontSource support.
7913         * fontsource.h: Added.
7915 2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>
7917         * cbinding.cpp|h: regenerated
7918         * openfile.cpp|h: Add save_file_dialog_show to implement
7919         SaveFileDialog (SL3) and refactor the filter code to be shared.
7920         * runtime.cpp|h: Rename can_full_screen to user_initiated_event
7921         since we need it for SaveFileDialog (and elsewhere too). Rename
7922         setter and add a getter with a c binding.
7924 2009-04-09  Jackson Harper  <jackson@ximian.com>
7926         * xaml.cpp|h: We need to create Value*'s from strings/files now
7927         instead of just creating dependencyobjects, it's legal to create a
7928         managed object from xaml that isn't a DOB.
7929         - Add a couple utility methods for creating just DOBs from
7930         strings/files.
7931         * cbinding.cpp: regen
7932         * xap.cpp:
7933         * template.cpp:
7934         * runtime.cpp: Updated method names
7935         
7936 2009-04-08  Geoff Norton  <gnorton@novell.com>
7938         * downloader.cpp: Ensure that when someone subscribes to NotifySize
7939         they actually will get notified of the size.
7941 2009-04-08  Geoff Norton  <gnorton@novell.com>
7943         * glyphs.cpp:  Ensure we dont pass an unitialized pointer to 
7944         TextFontDescription::SetFilename
7946 2009-04-08  Andreia Gaita  <avidigal@novell.com>
7948         * dependencyobject.cpp: enable toggleref
7949         conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
7951 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7953         * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
7954         isn't a .odttf file.
7956 2009-04-08  Geoff Norton  <gnorton@novell.com>
7958         * pipeline.cpp: Ensure we dont try to decode if our stream has been
7959         disposed.
7961 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7963         * downloader.cpp (validate_policy): Don't delete source here, we
7964         don't own it.
7966         * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
7967         the file extension is .odttf. Also no need to stat() anymore.
7969         * textblock.cpp (DownloaderComplete): Same.
7971 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
7973         * provider.cpp (InheritedPropertyValueProvider): We need to
7974         inherit FontGUIDProperty for Inlines as well.
7976         * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
7977         deobfuscation features.
7979         * glyphs.cpp (DownloaderCompleted): Don't need to call
7980         downloader_deobfuscate_font() anymore. We only need to get the
7981         GUID to set on the FontDescription.
7983         * textblock.cpp (DownloaderCompleted): Same.
7985         * font.cpp: Implemented our own FT_Stream that can handle reading
7986         obfuscated fonts directly without the need to rewrite the file
7987         first.
7988         (TextFontDescription): Now has a GUID property for Glyphs and
7989         TextBlock to use.
7991         * downloader.cpp: Fixed to autogenerate the accessors and changed
7992         the UriProperty type to a Uri to be consistent with other classes.
7993         (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
7995 2009-04-08  Geoff Norton  <gnorton@novell.com>
7997         * deployment.cpp: Ensure that we restore to the current MonoDomain
7998         after creating a new deployment.
8000 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8002         * multiscaleimage.h|cpp: Set IsDownloading property according to the
8003         status of the downloaders
8005 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8007         * multiscaleimage.cpp (MultiScaleImage::RenderSingle, 
8008         MultiScaleImage::RenderCollection): do not start any new download if
8009         AllowDownlodingProperty is false.
8011 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8013         * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
8015 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8017         * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
8018         and move on
8020 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8022         * multiscaleimage.cpp: some additional debug info printing the state of
8023         each BitmapImage
8025 2009-04-07  Chris Toshok  <toshok@ximian.com>
8027         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8028         almost had it that last time.  In the case where the parent has
8029         that property, use GetValue on it instead of ReadLocalValue, which
8030         won't pick up styles.
8032 2009-04-07  Chris Toshok  <toshok@ximian.com>
8034         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8035         rewrite this substantially to make it work correctly and be more
8036         efficient.  we no longer look up the hierarchy for properties
8037         which aren't inheritable, and we only loop up the visual tree, not
8038         the logical one (since that has issues when it comes to
8039         templates).
8040         (get_parent): nuke, it was a broken way to deal with parents.
8042 2009-04-07  Chris Toshok  <toshok@ximian.com>
8044         * uielement.h|.cpp (class UIElement): scrap that ill-advised
8045         AutoCreator crap.  it's much simpler.  the default is actually
8046         NULL, and the managed layer does the stupid mapping from NULL to
8047         new MatrixTransform.
8049 2009-04-07  Chris Toshok  <toshok@ximian.com>
8051         * uielement.h|.cpp (class UIElement): use an AutoCreator for
8052         RenderTransformProperty.
8054         * dependencyproperty.g.cpp: regen.
8055         
8056 2009-04-07  Larry Ewing  <lewing@novell.com>
8058         * grid.cpp (MeasureOverride): use the star fraction of the
8059         available size when measuring.
8061         * border.cpp: restrict the return value to available size.
8063 2009-04-07  Geoff Norton  <gnorton@novell.com>
8065         * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
8066         to the media thread from any thread.  Fixes seeking on SmoothHD
8067         sites.
8069 2009-04-07  Geoff Norton  <gnorton@novell.com>
8071         * bitmapimage.cpp|h: Ensure we stop getting events from any 
8072         active downloaders once we're disposed.
8073         * brush.cpp|h: Ensure we stop getting events from any 
8074         active BitmapImages once we're disposed.
8076 2009-04-07  Jeffrey Stedfast  <fejj@novell.com>
8078         * glyphs.cpp (CleanupDownloader): New helper method.
8079         (DownloadFont): Don't delete the uri after we're done, we do not
8080         own this object!
8081         (OnPropertyChanged): Use Uri::IsNullOrEmpty().
8083 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8085         * runtime.cpp: layers is an EventObject, unref instead of
8086           delete.
8088         * collection.h: Have a protected dtor so that nobody can
8089           delete this class directly ever again.
8091 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8093         * runtime.cpp: Add a few null checks.
8095 2009-04-07  Stephane Delcroix  <sdelcroix@novell.com>
8097         * application.cpp: uri->ToString() allocates memory, free it after
8098         use.
8100 2009-04-06  Chris Toshok  <toshok@ximian.com>
8102         * runtime.cpp|.h (Surface::Attach): split this method effectively
8103         in half: stuff we do before the loaded events are fired, and stuff
8104         we do after.  The second half is in Surface::ToplevelLoaded.  This
8105         fixes playboy.covertocover.com coming up, as the alert that
8106         vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
8107         to screw with our async events.
8109 2009-04-06  Chris Toshok  <toshok@ximian.com>
8111         * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
8112         flesh this method out some.  I don't like the walks we have to do
8113         here.  Also, rename this to *WithError so we can report the error
8114         back to managed land from here instead of doing it in C#.
8116         * cbinding.cpp|.h: regen.
8118 2009-04-06  Chris Toshok  <toshok@ximian.com>
8120         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
8121         in case we didn't notify listeners, output the moon error if there
8122         was one.
8124 2009-04-06  Chris Toshok  <toshok@ximian.com>
8126         * xaml.cpp (value_from_str): quiet spew (which in this case
8127         indicates an error when there isn't one.)
8129 2009-04-06  Chris Toshok  <toshok@ximian.com>
8131         * brush.h: include imagesource.h, not bitmapimage.h
8133         * brush.cpp: include bitmapimage.h here.
8135 2009-04-06  Geoff Norton  <gnorton@novell.com>
8137         * bitmapimage.cpp: Stop leaking the resource here.
8139 2009-04-06  Geoff Norton  <gnorton@novell.com>
8141         * codec-version.h.in: Bump
8143 2009-04-06  Geoff Norton  <gnorton@novell.com>
8145         * application.cpp: We want ToString here, not just the path of the
8146         uri.
8147         * bitmapimage.cpp|h: We need to do this async, since the events
8148         might be registered in managed code before a yield.
8150 2009-04-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8152         * security.c: Add jtr.dll to the list of platform assemblies,
8153           it's an assembly used by managed tests which contains unsafe
8154           code and pinvoke methods.
8156 2009-04-06  Stephane Delcroix  <sdelcroix@novell.com>
8158         * multiscaleimage.h: ad the 3.0 DPs and property accessors
8160 2009-04-05  Chris Toshok  <toshok@ximian.com>
8162         * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
8163         managed subclasses can register a delegate.
8165         * cbinding.cpp|.h: regen.
8167 2009-04-04  Geoff Norton  <gnorton@novell.com>
8169         * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
8171 2009-04-04  Geoff Norton  <gnorton@novell.com>
8173         * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
8175 2009-04-04  Geoff Norton  <gnorton@novell.com>
8177         * media.h: Removed unused define
8178         * mediaplayer.cpp|h: We need to support RGBA video formats now, so 
8179         lets track what the decoder is giving us (pass-thru is the only decoder
8180         which will provide RGBA from MSS, we still pass around yuv and rgb
8181         internally).  If the format is RGBA we have to incur a one-frame penalty
8182         to recreate our cairo surfaces.
8183         * pipeline.cpp|h: Support RGBA pixel formats.  Don't support RGB from 
8184         MediaStreamSource.  Mark the pass-thru frames as decoded.
8186 2009-04-04  Chris Toshok  <toshok@ximian.com>
8188         * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
8190         * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
8191         cbinding.h|.cpp: regen.
8192         
8193 2009-04-03  Chris Toshok  <toshok@ximian.com>
8195         * animation.h: add EasingFunctionProperty to
8196         Color/Double/PointAnimation.
8198         * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
8199         easing function, apply it to progress.
8200         (ColorAnimation::GetCurrentValue): if there's an easing function,
8201         apply it to progress.
8202         (PointAnimation::GetCurrentValue): if there's an easing function,
8203         apply it to progress.
8205         * easing.h, easing.cpp: implementations of all the easing
8206         functions.  still missing are BounceEase and ElasticEase.
8208         * enums.h, enums.cpp (enum EasingMode): new enum.
8210         * Makefile.am: add easing.h/easing.cpp
8212         * type.h, type-generated.cpp, cbinding.h|.cpp,
8213         dependencyproperty.g.cpp, value.h: regen.
8214         
8215 2009-04-03  Geoff Norton  <gnorton@novell.com>
8217         * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
8218         which renders garbage on the screen on amd64.
8220 2009-04-03  Aaron Bockover  <abockover@novell.com>
8222         * cbinding.h:
8223         * runtime.h:
8224         * dependencyproperty.g.cpp:
8225         * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
8226         by Moonlight.Gtk.XamlHost
8228 2009-04-03  Larry Ewing  <lewing@novell.com>
8230         * popup.h:
8231         * popup.cpp: Make sure that we hide any active layers when Child
8232         changes and that we show any new ones.  Fixes part of
8233         PopupExample2.  Give IsOpen a default value.
8235         Regenerate.
8237 2009-04-03  Chris Toshok  <toshok@ximian.com>
8239         * animation.h: remove a couple of ancient (and unused) method and
8240         function declarations, and re-order
8241         public/private/protected (seriously, this makes my eyes bleed.)
8242         Also move the "internal classes" to the end.
8244 2009-04-03  Chris Toshok  <toshok@ximian.com>
8246         * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
8247         since that's for compatability with 1.0, which we no longer are.
8248         
8249 2009-04-03  Alan McGovern  <amcgovern@novell.com>
8251         * textbox.h: TextBox does validation in both the getter and
8252           setter of its TextProperty, so we have to manually implement
8253           it.
8255 2009-04-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8257         * security.c: Include "config.h" to get
8258           MONO_ENABLE_CORECLR_SECURITY.
8260 2009-04-02  Aaron Bockover  <abockover@novell.com>
8262         Do not build code that requires Mono 2.5 or better in the case where
8263         we want Moonlight to run only in an embedded desktop app scenario; in
8264         this case, CoreCLR security and non-default app domains are not needed
8266         * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
8267         is not defined, this function is now a noop
8269         * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
8270         not implement app domain loading/unloading; factor out all common init
8271         code that was duplicated in both ctors into InnerConstructor
8272         
8273         * deployment.h: Define InnerConstructor
8275 2009-04-02  Larry Ewing  <lewing@novell.com>
8277         * uielement.h:
8278         * uielement.cpp: move the bulk of the paint ftb logic from surface
8279         to here since we will be using this in more places.  Make some of
8280         the ftb logic protected now.
8282         * bitmapsource.h:
8283         * writeablebitmap.h:
8284         * writeablebitmap.cpp: Land Geoff's initial Render implementation
8285         with a few changes.
8287         Regenerate.
8288         
8289 2009-04-02  Larry Ewing  <lewing@novell.com>
8290         
8291         * dirty.cpp:
8292         * runtime.h:
8293         * runtime.cpp: Treat full_screen_message as another layer.  Make
8294         sure that we mark layers as loaded.  Popups should render now.
8296 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8298         * runtime.cpp: the real toplevel element must always be at
8299           position 0 in the layers list. Fixes the situation where we
8300           open a popup before setting attaching the surface.
8302 2009-04-02  Stephane Delcroix  <sdelcroix@novell.com>
8304         * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
8305         linear animation, animate for 4 secs instead of .4, use steep spline
8306         to start fast finish smoothly. For botn panning and zooming.
8308 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8310         * popup.h:
8311         * popup.cpp:
8312         * dependencyproperty.g.cpp: The Child property has similar
8313           validation to a ContentControl. Fixes three tests.
8315 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8317         * popup.h:
8318         * popup.cpp:
8319         * dirty.cpp:
8320         * runtime.h:
8321         * cbinding.h:
8322         * runtime.cpp:
8323         * cbinding.cpp:
8324         * dependencyproperty.g.cpp: Popups are treated as top level
8325           elements which are rendered on top of all other elements. To
8326           handle this a list of all toplevel elements (layers) is kept
8327           in the surface. Mouse events are captured within a toplevel
8328           element and not visible to other toplevel elements.
8330 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8332         * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
8333         not to the center of the control
8335 2009-04-01  Andreia Gaita  <avidigal@novell.com>
8336     
8337         * window-gtk.cpp: Only connect the scroll-event signal if we're
8338         not running on the desktop (otherwise, gecko won't get the
8339         signals)
8341 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8343         * uri.h: no longer expose GetOriginalString(), it leads to buggy
8344         code.
8346 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8348         * mediaelement.cpp:
8349         * bitmapimage.cpp:
8350         * deepzoomimagetilesource.cpp: g_free the memory allocated by
8351         uri->ToString()
8353 2009-04-01  Chris Toshok  <toshok@ximian.com>
8355         * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
8356         the (desktop extension -ized) button check here.  this wouldn't be
8357         necessary if the plugin could insert its signal handler before the
8358         window's, but alas, gtk...
8360 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8362         * application.cpp (GetResource): use the uri path, not
8363         originalstring
8365 2009-04-01  Jeffrey Stedfast  <fejj@novell.com>
8367         * expression.cpp|h: Removed from the build.
8368         not running on the desktop (otherwise, gecko won't get the
8369         signals)
8371 2009-04-01  Chris Toshok  <toshok@ximian.com>
8373         * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
8374         extensions are turned on, allow button 3 (right mouse).
8375         (Surface::HandleUIButtonPress): same.
8377         * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
8378         non-button 1 presses here.
8380 2009-04-01  Chris Toshok  <toshok@ximian.com>
8382         * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
8383         sign here so we have the same behavior that lutz's demo expects
8384         from windows.
8386 2009-04-01  Geoff Norton  <gnorton@novell.com>
8388         * uri.cpp|h: Add IsNullOrEmpty
8389         * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
8391 2009-04-01  Geoff Norton  <gnorton@novell.com>
8393         * bitmapimage.cpp: Ensure we deregister the events too.
8395 2009-04-01  Geoff Norton  <gnorton@novell.com>
8397         * bitmapimage.cpp: If the UriSource is changed, then we should abort
8398         and clean up any existing downloaders.
8400 2009-04-01  Geoff Norton  <gnorton@novell.com>
8402         * brush.cpp: ImageSource is a nullable property so we need to new
8403         one up here if we dont have one already.
8405 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8407         * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
8408         and creating cairo surfaces.
8410 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8412         * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
8413         property changed.
8415 2009-04-01  Chris Toshok  <toshok@ximian.com>
8417         * uielement.h (class UIElement): add
8418         MouseRightButton{Down,Up}Event and MouseWheelEvent.
8420         * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
8421         extensions.
8422         (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
8424         * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
8426         * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
8427         wheel action.
8428         (MoonWindowGtk::EnableEvents): connect the scroll-event.
8429         (MoonWindowGtk::InitializeCommon): if desktop extensions are
8430         enabled, add GDK_SCROLL_MASK.
8432         * xaml.cpp (xaml_is_valid_event_name): if we're running with
8433         desktop extensions, expose the right button events and mouse
8434         wheel.
8436         * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
8438 2009-03-31  Jeffrey Stedfast  <fejj@novell.com>
8440         * enums.h: Well what do ya know... TextWrapping enum wasn't the
8441         same as the TextWrapping.cs enum, this is likely the case of some
8442         text layout wonkyness.
8444         * textblock.cpp (TextBlock::MeasureOverride): Set the
8445         ActualWidth/Height DP values here after calling Layout(), this
8446         seems to be what Silverlight does (can't be set in FWE::Measure()
8447         because it doesn't have the actual extents, it just has the
8448         desiredSize). Also don't reset dirty back to true after laying out
8449         the text.
8450         (TextBlock::Layout): Restructured slightly.
8452 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8454         * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
8455         originalstrings aren't updated on Uri::Combine ().
8457 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8459         * bitmapimage.h: Set a DefaultValue for ProgressProperty
8461 2009-03-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8463         * src.mdp: Updated some project files.
8465 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8467         * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages 
8468         added/removed
8470 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8472         * multiscaleimage.h|.cpp: remove the AddTickCall workaround for 
8473         the race while emitting ImageOpenSucceded. Test if the source is
8474         a deepzoom before casting (avoid g_warnings on the console). Change a 
8475         printf to LOG_MSI.
8477 2009-03-30  Chris Toshok  <toshok@ximian.com>
8479         * timemanager.cpp|.h: split this out from clock.cpp|.h
8481         * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
8482         libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
8483         timeline.cpp, uielement.cpp: track the above change.
8485         * Makefile.am: add timemanager.cpp|.h
8487         * cbinding.h, type-generated.cpp: regen
8489 2009-03-30  Geoff Norton  <gnorton@novell.com>
8491         * bitmapsource.cpp: When caching a native surface ensure we dont
8492         destroy it on every GetSurface pass, but we do clean it up in
8493         Invalidate.
8495 2009-03-30  Chris Toshok  <toshok@ximian.com>
8497         * application.h, border.h, contentcontrol.h, control.h,
8498         cornerradius.h, deployment.h, expression.h, frameworkelement.h,
8499         grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
8500         transform.h, type.h, usercontrol.h: remove @SilverlightVersion
8501         metadata attributes.
8504 2009-03-30  Chris Toshok  <toshok@ximian.com>
8506         * downloader.h: add pinvokes for a few of the downloader_* C
8507         functions.
8509         * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
8510         AddTickCall, and remove the manual implementation.
8512         * dependencyobject.h (class EventObject): add a PInvoke for
8513         event_object_get_surface.
8515         * cbinding.h, cbinding.cpp: regen
8517 2009-03-30  Sebastien Pouliot  <sebastien@ximian.com>
8519         * security.c: Ensure mono_assembly_setrootdir is always called
8520         while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
8521         variable and the availability of a platform directory.
8523 2009-03-30  Geoff Norton  <gnorton@novell.com>
8525         * brush.h: Brush.ImageSource is stupid, and of course not consistent
8526         with Image.Source
8527         * bitmapimage.cpp: Nuke some debug spew.
8528         * dependencyproperty.g.cpp: Funky cold medina.
8530 2009-03-30  Larry Ewing  <lewing@novell.com>
8532         * brush.cpp (OnPropertyChanged): check for the right property and
8533         fixup a harmless typo.
8534         
8535         * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
8537 2009-03-30  Jeffrey Stedfast  <fejj@novell.com>
8539         * font.cpp (FontFace::GetExtents): Instead of calculating our
8540         ascent/descent and height values from 2 different ways, calculate
8541         ascent/descent the same way we calculated height. This seems to
8542         give slightly more accurate results (previous logic rounded up to
8543         the nearest whole pixel for ascent/descent).
8545 2009-03-30  Geoff Norton  <gnorton@novell.com>
8547         * media.h: Hide some API that never should have been public.
8548         * media.cpp: ImageBrush no longer uses a image internally.
8549         * bitmapimage.cpp|h: Part name is a const char * since we dup
8550         it here.
8551         * brush.cpp|h: Migrate away from using a Image internally
8552         and consume the new BitmapImage API.
8554 2009-03-30  Geoff Norton  <gnorton@novell.com>
8556         * bitmapimage.cpp: Ensure we fall back to downloading if we 
8557         cannot find the image as a resource.
8559 2009-03-30  Chris Toshok  <toshok@ximian.com>
8561         * deployment.h|.cpp: combing the desktop and browser cases (the
8562         desktop case coming from jeff's patch) into one method, where the
8563         different root_domain behavior is determined by the boolean
8564         argument.
8566         * runtime.cpp (runtime_init): pass an initial boolean to
8567         Deployment::Initialize to tell whether or not we should create the
8568         root domain (i.e. whether or not we should initialize mono.)
8569         (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
8571 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8573         * security.c: Revert latest fix, the buildbots aren't ready
8574           for this yet.
8576 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8578         * security.c: Always call mono_assembly_setrootdir, even if
8579           CoreCLR is disabled. This should fix buildbots where
8580           mono/mcs and moonlight are installed into different
8581           prefixes.
8583 2009-03-30  Geoff Norton  <gnorton@novell.com>
8585         * media.cpp: Stop leaking a cairo pattern in Image::Render
8587 2009-03-30  Stephane Delcroix  <sdelcroix@novell.com>
8589         * deepzoomimagetilesource.cpp: revert latest change, don't advance
8590         twice. Fixes collections.
8592 2009-03-29  Chris Toshok  <toshok@ximian.com>
8594         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8595         add a sanity check here to make sure the autocreated value is of a
8596         compatible type.
8598         * animation.h|.cpp: remove the /*Timeline*/ comments from
8599         everywhere -- stop pretending the type names are the same as WPF.
8601 2009-03-29  Geoff Norton  <gnorton@novell.com>
8603         * media.cpp: Ensure that the ImageSource we get is a BitmapImage
8604         before treating it as such.
8606 2009-03-29  Geoff Norton  <gnorton@novell.com>
8608         * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
8609           writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
8610           imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
8611         Update the image based source to have a properly implemented
8612         BitmapImage.  I've also moved all this code to the SL3 API which
8613         injects a BitmapSource in between ImageSource and BitmapImage,
8614         and adds support for WriteableBitmap.
8616         Basically now all the cairo logic lives in ImageSource and 
8617         BitmapSource.  All the pixbuf loader logics and downloader logic
8618         is isolated in BitmapImage.
8620         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
8621           type.h, value.h: Regenerate  
8623 2009-03-29  Chris Toshok  <toshok@ximian.com>
8625         * provider.h, provider.cpp, dependencyproperty.h: change
8626         AutoCreator signature to take the DependencyObject as the first
8627         parameter.
8629 2009-03-29  Chris Toshok  <toshok@ximian.com>
8631         * dependencyproperty.h|.cpp: rework the autocreate functionality.
8632         instead of a boolean flag, we pass a function pointer.  We keep
8633         IsAutoCreated() around (just func != NULL) and add
8634         GetAutoCreator() so the AutoCreateProvider can call the method
8635         when it needs a value.
8637         Also, remove the empty ctor since it doesn't initialize any
8638         fields (and it also isn't called.)
8640         * provider.h (class AutoCreators): new class, containing the
8641         default autocreator which just calls type->CreateInstance().
8643         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8644         call the property's AutoCreator function if there is one.
8645         (AutoCreators::default_autocreator): new function for the default
8646         case.  basically some code that was ripped out of
8647         ::GetPropertyValue
8649         * dependencyproperty.g.cpp: regen.
8651 2009-03-29  Chris Toshok  <toshok@ximian.com>
8653         * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
8654         tree in OnLoaded, don't do anything at all if we're already
8655         Loaded.
8657 2009-03-29  Chris Toshok  <toshok@ximian.com>
8659         * eventargs.h: consistenfy everything, and make
8660         CollectionChangedEventArgs fields private, not public.  add
8661         accessors.
8663         * dependencyobject.h (PropertyChangedEventArgs): make
8664         old_value/new_value private and add accessors.
8666         * *.cpp|.h: track the above changes.
8667         
8668 2009-03-29  Chris Toshok  <toshok@ximian.com>
8670         * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
8672         * dependencyobject.cpp:, provider.cpp: track above change.
8674 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
8676         * deployment.cpp|h (Initialize): If a platform directory is
8677         specified then we initialize the CoreCLR security model.
8678         * runtime.cpp|h: Initialize the runtime using the plugin
8679         directory (when applicable, i.e. browser mode).
8680         * security.c|h: New. Handle the CoreCLR security model 
8681         initialization and platform code detection.
8682         * Makefile.am: Add security.[c|h] to the build
8684 2009-03-28  Jeffrey Stedfast  <fejj@novell.com>
8686         * frameworkelement.cpp (OnPropertyChanged): Instead of setting
8687         ActualWidth/Height to 0 in the non-LayoutContainer case, use
8688         ClearValue() those properties instead. Fixes some TextBlock cases.
8690         * textblock.cpp (GetSize): Check isnan() rather than 0.
8691         (Render): The dirty flag should never be set at this point, so
8692         don't bother with it. Set TextLayout's AvailableWidth to our
8693         ActualWidth value.
8694         (ArrangeOverride): Don't set dirty back to true after we've
8695         arranged, this is why dirty was true in ::Render()
8697 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8699         * textblock.cpp (Layout): Fixed the special-case logic. If no text
8700         has ever been set, then the extents should be 0,0. However, if
8701         they have ever been set but the text is currently empty, then use
8702         the font height as the ActualHeight value. Use a state variable to
8703         check if the text has ever been set rather than trying to check
8704         other things which are not reliable.
8706 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8708         * size.h (Size::GrowBy): If the width or height are infinite going
8709         in, then leave them infinite going out.
8711         * textblock.cpp (TextBlock::GetSize): New method to get the
8712         TextBlock's size.
8713         (TextBlock::Render): Use GetSize() instead of GetRenderSize().
8714         (class TextBlockDynamicPropertyValueProvider): Same.
8716 2009-03-27  Chris Toshok  <toshok@ximian.com>
8718         * uielement.h (class UIElement): add LostMouseCaptureEvent.
8720         * type-generated.cpp: regen.
8722 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8724         * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
8725         subimage collection items changed.
8727 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8729         * multiscalesubimage.h|.cpp:
8730         * multiscaleimage.cpp: remove the link to msi parents and don't try to
8731         Invalidate from subimage.
8733 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8735         * collection.cpp: do not use generated cbinding in
8736         MultiScaleSubImageZIndexComparer.
8738 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8740         * multiscalesubimage.h: set a default ZIndex value
8742 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8744         * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
8745         update the TextLayout's text and attributes.
8746         (TextBlock::OnPropertyChanged): If the Text or Inlines properties
8747         change, immediately call UpdateLayoutAttributes().
8748         (TextBlock::Layout): No longer sets up the TextLayout's attributes
8749         as this is already done. Also no longer takes a cairo_t argument
8750         since it's never used, instead it now takes a Size constraint
8751         argument.
8752         (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
8753         (TextBlock::MeasureOverride): Rewritten / simplified.
8754         (TextBlock::ArrangeOverride): Same.
8755         (class TextBlockDynamicPropertyValueProvider): Updated.
8756         (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
8757         on the Inline that changed.
8758         (TextBlock::UpdateFontDescriptions): New method to update the font
8759         descriptions on all inlines.
8760         (TextBlock::OnPropertyChanged): Update the font descriptions on
8761         all inlines whenever a font property changes.
8762         (TextBlock::SetFontSource): Call UpdateFontDescriptions().
8763         (TextBlock::DownloaderComplete): Same.
8765         * textbox.cpp (TextBoxView::Render): Set the layout's
8766         AvailableWidth to the render size width.
8767         (TextBoxView::Layout): Don't worry about constraint.width being
8768         INFINITY anymore, TextLayout() now handles INFINITY.
8770         * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
8771         and max width/height constraints, use NAN and
8772         INFINITY (respectively). This will prevent TextBox/Block from
8773         having to use hacks if their width/height constraints are
8774         INFINITY.
8775         (TextLayout::HorizontalAlignment): Since MaxWidth might be
8776         INFINITY, we need to base this on a new property called
8777         AvailableWidth, which is the width available for rendering (where
8778         MaxWidth is only used for wrapping).
8780 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8782         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8783         After finding the baseUri's filename, advance beyond the / before
8784         passing it to uri->Combine().
8786         * uri.cpp (Uri::Combine): If the uri has no path and the
8787         relative_path does not begin with a /, don't prepend one.
8789 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
8791         General cleanup of the TextBoxBase abstraction.
8793         * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
8794         of PasswordBox.
8795         (PasswordBox::SyncDisplayText): Generate a masked password string
8796         using the specified PasswordChar.
8797         (PasswordBox::SyncText): Call SyncDisplayText ().
8798         (PasswordBox::OnPropertyChanged): When the PasswordProperty
8799         changes, call SyncDisplayText().
8800         (PasswordBox::GetDisplayText): Override TextBoxBase's to return
8801         our masked password string.
8802         (PasswordBox::ctor): Initialize display text
8803         (PasswordBox::dtor): Delete display text.
8804         (TextBox::GetDisplayText): Simply return GetText ()
8806 2009-03-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8808         * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
8809           double free.
8811 2009-03-27  Jackson Harper  <jackson@ximian.com>
8813         * xaml.cpp: Despite the docs saying differently
8814         (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
8815         sys:Boolean is also legal. (I wonder what else is).
8817 2009-03-27  Jackson Harper  <jackson@ximian.com>
8819         * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
8820         correct value.
8821         - When we are populating the context resource dictionaries we need
8822         to include elements that are resource dictionaries not just
8823         elements have have dictionaries.  This fixes elements looking up
8824         items in their top level RD (like in generic xaml).
8826 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8828         * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
8829         '/', are relative uris.
8831 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8833         * multiscaleimage.cpp: if a tile is already being downloaded, don't
8834         start a 2nd downloader for the same uri.
8836 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8838         * deepzoomimagetilesource.cpp: Uris composed of a single file name
8839         are fine too. don't discriminate !
8841 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8843         * uri.cpp: fix Combine when the original path is a single file,
8844         without a leading '/'
8846 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8848         * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
8849         the overloaded ctor now that we have a proper Uri struct
8851 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8853         * uri.h, uri.cpp: add Combine (const Uri*).
8855 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
8857         * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
8859 2009-03-26  Chris Toshok  <toshok@ximian.com>
8861         * deployment.h|.cpp: be a little more fragile (and a lot less
8862         evil) about the way we're exposing Mono types in our headers.
8863         just put a typedef for MonoDomain in deployment.h instead of
8864         including appdomain.h.  Include appdomain.h from deployment.cpp.
8866 2009-03-26  Chris Toshok  <toshok@ximian.com>
8868         * uielement.h|.cpp (class UIElement): add the ability to do
8869         instant and delayed emission of Loaded events.
8870         (UIElement::PostSubtreeLoad): perhaps poorly named, but the
8871         @load_list is a list of UIElement which will be walked in order in
8872         a tick call, emitting OnLoaded on all of them.
8873         (UIElement::EmitSyncLoaded): walk the same list as would be passed
8874         to PostSubtreeLoad, emitting it now.
8875         (UIElement::WalkTreeForLoaded): this does a post-order tree walk
8876         building up the list which is passed to PostSubtreeLoad or
8877         EmitSubtreeLoad.  The out bool parameter tells us whether we
8878         should delay the emission or not. Currently the only thing that
8879         delays emission is a control with a style applied (even a default
8880         style.)  We also set a PENDING_LOADED flag on all elements during
8881         the walk.
8882         (UIElement::OnLoaded): no longer walk the tree here.  only emit
8883         Loaded on this one element.  Clear the PENDING_LOADED flag while
8884         we're at it.
8885         (UIElement::ElementAdded): complicate matters slightly here so
8886         that it follows the following two rules:
8888         1) if @this is loaded, walk the tree and either emit or post the
8889         load based on what the out param tells us to do.
8891         2) if @this is pending_loaded, walk the tree and always post.
8892         
8893         * frameworkelement.h (class FrameworkElement): unfortunately we
8894         need access to "default_style_applied" from UIElement.
8896         * control.h|.cpp: remove OnLoaded implementation from here.
8898         * runtime.cpp (Surface::Attach): move the Loaded handling *after*
8899         the zombie check.  not sure why we were ever doing it before.  but
8900         most importantly, this always Posts the loaded state, it doesn't
8901         emit it synchronously.  This allows us to do the changes in
8902         Application.cs/Deployment.cs that are needed to get ncaa working.
8904 2009-03-26  Chris Toshok  <toshok@ximian.com>
8906         * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
8907         out the code that allows other events to be used.  Maybe in SL3
8908         they'll allow it.
8910 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8912         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8913         from a new TextBoxBase class which handles almost all of the logic
8914         for us.
8916 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8918         * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
8920 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8922         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8923         from a new TextBoxBase class which handles almost all of the logic
8924         for us.
8926 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
8928         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8929         Use the new Uri::Combine() method.
8931         * uri.cpp (Uri::Combine): New method to combine a relative path to
8932         an existing Uri.
8934 2009-03-26  Chris Toshok  <toshok@ximian.com>
8936         * animation.cpp, clock.cpp: move some class-static fields around
8937         so they make more sense.
8939 2009-03-26  Chris Toshok  <toshok@ximian.com>
8941         * clock.h: move enum FillBehavior...
8943         * enums.h: ... to here.
8945 2009-03-26  Chris Toshok  <toshok@ximian.com>
8947         * animation2.h: nuke, moving everything into animation.h.
8949         * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
8950         the timesource/timeline stuff into separate files to reduce
8951         clock.cpp's size/complexity a bit.
8953         * mediaplayer.cpp, mediaelement.cpp, media.cpp,
8954         mms-downloader.cpp: track new locations of things (that were moved
8955         out of clock.h|.cpp)
8956         
8957         * cbinding.h, cbinding.cpp, type-generate.cpp,
8958         dependencyproperty.g.cpp: regen.
8959         
8960         * Makefile.am: add/remove files.
8961         
8962 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8964         * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
8965         with an aspect_ratio < 1.0 (portrait images).
8967 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8969         * multiscaleimage.h|.cpp: replace the single downloader code by
8970         a list of downloader, speed up downloading a lot. (Set --arbitrary--
8971         to 6 dlders for now)
8973 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8975         * multiscaleimage.h|.cpp: Download directly from Render*
8977 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8979         * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
8980         as cache key, use the new get_image_uri_func everywhere.
8982 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
8984         * tilesource.h:
8985         * deepzoomimagetilesource.h|.cpp: change the signature of
8986         get_image_uri_func. It returns a bool indicating success, the Uri is
8987         now a method arg, and no longer returned as a string pointer. Fixes 
8988         some random crashes with managed tilesoources.
8990 2009-03-25  Chris Toshok  <toshok@ximian.com>
8992         * uri.h (struct Uri): add accessor methods for all of the fields.
8993         The fields are still public for now, since a few places (e.g.,
8994         plugin-debug, playlist), make direct modifications.
8996         * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
8997         glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
8998         accessors when getting values.
8999         
9000 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9002         * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
9003         hash_tables.
9005 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
9007         * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
9008         argument to enums_int_to_str() anymore.
9010         * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
9011         no longer exists, don't bother checking it. If the target is other
9012         than the Loaded event, we need to treat the whole thing as
9013         Silverlight2 anyway.
9015         * runtime.cpp (Surface::Surface): No longer takes a silverlight2
9016         argument or keeps such a flag.
9017         (Surface::EmitEventOnList): Don't need to care about the
9018         silverlight2 flag.
9019         (Surface::HandleUIKeyPress): Same.
9020         (Surface::HandleUIKeyRelease): Here too.
9022         * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
9023         (enums_int_to_str): Same.
9025         * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
9026         argument.
9027         (value_from_str): Same.
9028         (convert_value_type): Same.
9029         (xaml_set_property_from_str): Same.
9031 2009-03-25  Geoff Norton  <gnorton@novell.com>
9033         * Makefile.am: 
9034         * binding.cpp: 
9035         * binding.h: 
9036         * cbinding.cpp: 
9037         * cbinding.h: 
9038         * frameworkelement.cpp: 
9039         * frameworkelement.h: 
9040         * type-generated.cpp: 
9041         * type.h: 
9042         * value.h: 
9043         * xaml.cpp:  Bindings live 100% in managed land now
9045 2009-03-25  Alan McGovern  <amcgovern@novell.com>
9047         * animation.cpp: Revert the changes in r130133 as they
9048           resulted in double frees of the Value *.
9050 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
9052         * value.cpp (Value::FreeValue): Don't dereference uri if it is
9053         NULL.
9055 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9057         * multiscaleimage.cpp: emit ViewportChanged
9059 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9061         * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
9063 2009-03-25  Jackson Harper  <jackson@ximian.com>
9065         * xaml.cpp: Can put this back now that bindings are convertering
9066         strings properly.  Don't try to create a value object if we are
9067         just going into managed anyways.
9069 2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9071         * runtime.h:
9072         * runtime.cpp: Move IsVersionSupported implementation here,
9073           add GetBackgroundColor and sprinkle generator annotations.
9075         * cbinding.h:
9076         * cbinding.cpp: Regenerated.
9078 2009-03-25  Alan McGovern  <amcgovern@novell.com>
9080         * uri.cpp: Scheme was being used uninitialised if the if
9081           (!*start) check succeeded.
9083 2009-03-24  Chris Toshok  <toshok@ximian.com>
9085         * playlist.cpp (PlaylistParser::OnASXStartElement): use
9086         uri->IsScheme()
9087         (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
9089         * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
9090         *scheme)" so we can stop twiddling internals.
9092 2009-03-24  Chris Toshok  <toshok@ximian.com>
9094         * downloader.cpp: s/protocol/scheme for Uris
9096         * playlist.cpp: s/protocol/scheme for Uris
9098         * uri.h, uri.cpp: s/protocol/scheme for Uris.
9100 2009-03-24  Chris Toshok  <toshok@ximian.com>
9102         * uri.cpp: do as much as we can to get isAbsolute set correctly.
9104 2009-03-25  Andreia Gaita  <avidigal@novell.com>
9106         * clock.h: remove unused timeline field
9108 2009-03-25  Andreia Gaita  <avidigal@novell.com>
9110         * clock.cpp: Refresh the clock's duration, it might have changed
9111         after it's creation
9113 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
9115         * value.cpp (Value::Value): If the input value has a NULL uri,
9116         don't call Uri::Copy(), simply set the new uri to NULL too.
9118         * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
9119         members in the 'to' argument. This should never happen anymore,
9120         but if it does, don't allow 'to' to have invalid pointers.
9122 2009-03-24  Jackson Harper  <jackson@ximian.com>
9124         * xaml.cpp: Need to make this a little smarter, revert for now
9125         because it breaks hardrock.
9127 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
9129         * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
9130         actual_height extents if the text is "".
9132         * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
9133         set NULL text on the layout so that we won't crash inside
9134         TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
9136 2009-03-24  Jackson Harper  <jackson@ximian.com>
9138         * xaml.cpp: Don't attempt to convert values if we are going to
9139         managed anyways. This prevents things that can be created easily
9140         from strings being created from expressions.
9142 2009-03-24  Jackson Harper  <jackson@ximian.com>
9144         * animation2.h:
9145         * animation.cpp: Use an OBJECT for the Value property.
9146         * dependencyproperty.g.cpp: Regen
9147         
9148 2009-03-24  Stephane Delcroix  <sdelcroix@novell.com>
9150         * uri.h|uri.cpp: new Equals () methods, so we can use its generated
9151         cbinding as GCompareFunc.
9153 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9155         * pipeline.cpp: Fix breakage.
9157 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9159         * pipeline.h:
9160         * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
9161           gives ready-to-present data. Make it handle pcm, rgb, rgba
9162           and yv12 formats.
9164         * type.h:
9165         * value.h:
9166         * type-generated.cpp: Regenerated.
9168 2009-03-23  Stephane Delcroix  <sdelcroix@novell.com>
9170         * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
9171         changes to keep working
9173 2009-03-23  Jeffrey Stedfast  <fejj@novell.com>
9175         * uri.cpp (Uri::operator==): If all the != compares pass, return
9176         true. Don't let control reach the end of a non-void function!
9178         * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
9179         position changed event.
9181 2009-03-23  Chris Toshok  <toshok@ximian.com>
9183         * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
9184         due to vertigo doing some weird stuff that I don't fully
9185         understand :) but in the interest of not requiring every usage to
9186         include a null check, init originalString to g_strdup("") here.
9188 2009-03-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9190         * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
9191           Dispose.
9193 2009-03-23  Chris Toshok  <toshok@ximian.com>
9195         * uri.cpp (Uri::Copy): return immediately if @from == null.
9197 2009-03-21  Chris Toshok  <toshok@ximian.com>
9199         * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
9200         to Application:GetResource.
9202         * application.[h,cpp] (Application::GetResource): this takes a Uri
9203         instead of a string now.
9205 2009-03-21  Chris Toshok  <toshok@ximian.com>
9207         * uri.[h,cpp]: a few changes:
9208           1. Add "bool isAbsolute" and "char* originalString" fields.
9209           2. Remove Clone and add a static Copy method which Value can use
9210              to copy all the internal fields.
9211           3. Add Free method.
9212           4. make it a struct so we'll only box when explicitly asked to in
9213              Value.cs.
9214           5. add an operator== so we can do non-reference comparisons in
9215              value.cpp
9217         * dependencyobject.h,
9218         dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
9219         remove.
9221         * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
9223         * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
9224         
9225         * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
9226         string.
9227         
9228         * media.cpp: source->GetUriSource() returns a Uri*
9229         
9230         * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
9232         * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
9233         use Uris more.
9235         * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
9236         the Value ctor does that for us.
9238         * xaml.cpp (value_from_str): add Type::URI case, and rework the
9239         Type::BITMAPIMAGE case to use a Uri object.
9241         * validators.[h,cpp]: rename NonNullStringValidator to
9242         NonNullValidator.  All uses before didn't depend on the
9243         "string"-ness of the value, and we can make use of it for the Uri
9244         stuff.
9246         * value.h.in, value.cpp: add Uri support, and remove
9247         Value::Unmarshal.
9249         * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
9250         value.h: regen.
9252         * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
9254 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9256         * textbox.cpp (TextBoxView::UpdateText): Split out from
9257         TextBoxView::Layout(). Sets the text on the layout engine.
9258         (TextBoxView::Layout): Moved most of the logic into UpdateText()
9259         and the rest into Render(). We now just set the MaxWidth and lay
9260         out the text.
9261         (TextBoxView::Render): If dirty, after calling Layout(), call
9262         UpdateCursor(false) and clear the dirty flag.
9263         (TextBoxView::OnModelChanged): If the text changes, update it
9264         immediately on our layout context by calling UpdateText().
9265         (TextBoxView::SetTextBox): Call UpdateText() here as well and make
9266         it more robust against a NULL textbox argument.
9268 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9270         * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
9271         context argument since it never actually uses it anyway.
9272         (TextBoxView::MeasureOverride): Don't create a temporary cairo
9273         context since it never gets used.
9274         (TextBoxView::ArrangeOverride): Same.
9276 2009-03-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9278         * pipeline.h:
9279         * pipeline.cpp:
9280         * pipeline-asf.cpp: Re-implement fallback to http when mms
9281           fails.
9283 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9285         * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
9286         better.
9288 2009-03-20  Jackson Harper  <jackson@ximian.com>
9290         * xaml.cpp: Make sure we go to managed when using property element
9291         syntax for setting properties of managed kinds.
9293 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9295         * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
9296         larger than the current ActualWidth (and no wrapping has been
9297         done), then no need to re-layout. This should help improve
9298         performance of many cases of TextBox/Block MeasureOverride() and
9299         ArrangeOverride().
9300         (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
9301         set is_wrapped to true.
9302         (TextLayout::LayoutWrap): Same.
9303         (TextLayout::Layout): Reset is_wrapped to false before laying out
9304         the text.
9306 2009-03-19  Larry Ewing  <lewing@novell.com>
9308         * multiscaleimage.cpp (RenderSingle): move the clipping to the
9309         outer loop here too.
9311 2009-03-19  Larry Ewing  <lewing@novell.com>
9313         * multiscaleimage.cpp (RenderCollection): rework the collection
9314         rendering slightly by moving the subimages out of the loop.
9316 2009-03-18  Chris Toshok  <toshok@ximian.com>
9318         * dependencyobject.cpp (unregister_depobj_names): another side of
9319         the TagProperty coin.  don't unregister names from it, since we
9320         aren't registering names from it.
9321         (DependencyObject::SetParent): remove the USERCONTROL extra
9322         registration from here.  it's not necessary now that jackson has
9323         fixed where we register the names.
9325         * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
9326         freeze the default value if the property is not custom.
9328 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
9330         Fixes a crash in the Microsoft.SilverlightControls
9331         ControlsExtended unit tests (specifically the DatePickerTest).
9333         * control.h (class Control): Set a DefaultValue for the Foreground
9334         property.
9336         * textblock.h (class TextBlock): Same.
9338 2009-03-18  Jackson Harper  <jackson@ximian.com>
9340         * xaml.cpp: When we use x:Name to set an elements name, make sure
9341         that it gets set in the namescope of it's containing element.
9342         * dependencyobject.cpp|h: New method that allows setting objects
9343         name in a different namescope, this will also result in the name
9344         being set in the objects namescope.
9345         - Allow duplicate objects if they are the same object
9346         * namescope.cpp: Allow duplicates if they are the same object.
9348 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
9350         * textbox.cpp (TextBox::Initialize): Don't bother connecting to
9351         MouseEnter/Leave, we don't care.
9352         (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
9353         (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
9354         parent TextBox control.
9355         (TextBoxView::OnMouseLeftButtonUp): Same.
9357         * runtime.cpp (Surface::FocusElement): Don't do all the checks
9358         here, they are now done in Control::Focus().
9359         (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
9360         now expect this to be done in the MouseLeftButtonDown event
9361         callback.
9363         * control.cpp (Control::Focus): New method to focus a control.
9365 2009-03-18  Jb Evain  <jbevain@novell.com>
9367         * deployment.cpp: add a MOON_PROFILER environment variable
9368         to control profiling of the embedded mono.
9370 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9372         * pipeline.h:
9373         * pipeline.cpp: Remove unused field.
9375 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9377         * pipeline-asf.cpp: Fix visitmix.
9379 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9381         * debug.h:
9382         * debug.cpp:
9383         * deployment.cpp: Add signal handlers for crash detection in
9384           libmoon instead of libshocker, this way there's not a race
9385           condition between loading mono and installing a signal
9386           handler in libshocker (the signal handler has to get
9387           installed before loading mono, otherwise we'll crash for
9388           real due to managed exceptions getting caught by the signal
9389           handler).
9391 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9393         * pipeline.cpp: More asserts.
9395 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9397         * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
9398         lowercase.
9400 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9402         * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
9403         shadow the fname method argument, and don't leak if
9404         finfo.external_fa has the 4th bit set.
9406 2009-03-17  Chris Toshok  <toshok@ximian.com>
9408         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9409         don't do the SetParent stuff (even when the value is a
9410         DependencyObject) if the property is UIElement::TagProperty.  This
9411         fixes the cyclic tree warning in RichTextBox.  Right now it's
9412         hardcoded to check for that property, but we need to move it to
9413         the DP metadata, and do an audit of other "typeof(object)" DP's to
9414         make sure we aren't setting parent where we shouldn't be.
9416 2009-03-17  Stephane Delcroix  <sdelcroix@novell.com>
9418         * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
9420 2009-03-16  Jackson Harper  <jackson@ximian.com>
9422         * template.cpp: It doesn't really change anything because
9423         templates are never parented, but technically they should be in non
9424         temporary namescopes.
9426 2009-03-16  Jeffrey Stedfast  <fejj@novell.com>
9428         * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
9429         go up/down 'n' lines instead of always 1 if n wouldn't overflow.
9431 2009-03-16  Stephane Delcroix  <sdelcroix@novell.com>
9433         * multiscaleimage.cpp:
9434         * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
9435         it on VP origin or width changed.
9437 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9439         * multiscaleimage.cpp: fix the clipping issue for collections
9441 2009-03-13  Chris Toshok  <toshok@ximian.com>
9443         * type.h, type-generated.cpp: regen.
9445 2009-03-13  Chris Toshok  <toshok@ximian.com>
9447         * xaml.cpp (value_from_str): in the int32 and int64 case, we need
9448         to parse until we get an invalid character, and return the value
9449         parsed up to that point.  it's only an error if there's no valid
9450         characters.
9452 2009-03-13  Chris Toshok  <toshok@ximian.com>
9454         * textblock.h (class Inline): inlines don't permit multiple
9455         parents (Fixes RunTest.RunMultipleParents).
9457 2009-03-13  Geoff Norton  <gnorton@novell.com>
9459         * xap.cpp: Zip files can contain directory entires, we shouldn't
9460         try to open them as files.
9462 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9464         * xaml.cpp:
9465         * control.cpp: Added a null check to prevent crashes.
9467 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9469         * mediaelement.h:
9470         * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
9471           and clean up upon shutdown.
9473         * pipeline.h:
9474         * pipeline.cpp: Remove a broken attempt to ensure that we
9475           don't leave Media threads running after having shut down.
9477 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9479         * playlist.cpp: Dispose: fix a typo - dispose the media not
9480           ourselves.
9482 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9484         * playlist.cpp: DownloadProgressChangedHandler: Don't do
9485           anything if we've been disposed. Fixes a warning. 
9487 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9489         * mediaelement.cpp: Dispose: We need to dispose the media
9490           player too.
9492 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9494         * downloader.h: DownloaderResponse: Add virtual ref/unref
9495           methods.
9497 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9499         * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
9500           crashes when we can't find a time manager. Also if we can't
9501           remove a timeout, we have to leak ourselves, otherwise the
9502           timeout might get called after we're destroyed.
9504 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9506         * deployment.h:
9507         * deployment.cpp:
9508         * type-generated.cpp: Added Deployment::ShuttingDownEvent.
9509           This will be used by MediaElement to ensure that all media
9510           threads are cleaned up even if the MediaElement itself is
9511           leaked.
9513 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9515         * multiscaleimage.cpp: no longer use precompiled table for morton
9516         layout, but use short and fast function in place.
9518 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9520         * multiscaleimage.cpp: check for null tiles uri returned by
9521         get_tile_func
9523 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9525         * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
9526         having to loop over all the tiles on every tick.
9528 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9530         * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
9531           toplevel element before disposing it, since the SetSurface
9532           will be propagated to all descendants, while Dispose will
9533           detach descendants (preventing subsequent SetSurface calls
9534           to reach them).
9536 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9538         * mediaplayer.cpp: Open: when we add an event handler to the
9539           video stream's FirstFrameEnqueued event, the first frame
9540           might already be in the queue, so just call LoadVideoFrame
9541           once always. Fixes test-canvas-no-size.html.
9543 2009-03-12  Geoff Norton  <gnorton@novell.com>
9545         * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
9547 2009-03-12  Geoff Norton  <gnorton@novell.com>
9549         * deepzoomimagetilesource.cpp: Ensure we dont override default values
9550         if nothing has been provided in the XML
9552 2009-03-12  Geoff Norton  <gnorton@novell.com>
9554         * animation.cpp:
9555         * animation.h: Implement SkipToFill
9557 2009-03-12  Larry Ewing  <lewing@novell.com>
9559         * canvas.cpp: don't chain up the FE in the overides that is very
9560         wrong these days.
9562 2009-03-12  Chris Toshok  <toshok@ximian.com>
9564         * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
9565         text demo when you click on the buttons.  we need to be creating
9566         RoutedEventArgs, not EventArgs.
9568 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9570         * codec-version.h.in: Bump.
9572 2009-03-12  Alan McGovern  <amcgovern@novell.com>
9574         * dependencyproperty.cpp: 1) Refactor the code so that
9575           open/closing parens are parsed in a separate step to
9576           typename/property name. Then merge the codepaths for the
9577           default and '(' case.
9578         2) Attached properties can only be specified inside parens. So
9579           "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
9580         3) For non-attached properties both "Rectangle.RadiusX" and
9581           "(Rectangle.RadiusX)" are acceptable.
9583 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9585         * pipeline.cpp: Add a null check.
9587 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9589         * audio.cpp: Use media's thread-safe event handling.
9591         * playlist.h:
9592         * playlist.cpp: PlaylistRoot: keep a reference to our media
9593           player (i.e. don't use MediaElement's media player, it may
9594           change). Use the thread-safe event support in media.
9596         * mediaplayer.h:
9597         * mediaplayer.cpp: Use media's thread-safe event handling.
9598           Don't tick while waiting for the media to get the first
9599           frame, just attach an event handler to
9600           FirstFrameEnqueuedEvent.
9602         * pipeline.h:
9603         * pipeline.cpp: IMediaObject: Add thread-safe event support.
9604           Media: inherit from IMediaObject to get the thread-safe
9605           event support.
9607         * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
9608           ignore ASFReader::Seek's result, handle it correctly.
9609           EnqueueGetFrame: requeue a get frame request if we don't
9610           have enough data yet.
9612 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9614         * pipeline.h: Move IMediaObject above Media so that Media can
9615           inherit from IMediaObject.
9617 2009-03-12  Andreia Gaita  <avdigal@novell.com>
9619         * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
9620         started during the tick event; in some cases the time between these
9621         two calls was enough to have an extra tick on the time manager, and
9622         the DispatcherTimer would be advanced again even though it was
9623         stopped, and this would happen after the Completed handler was
9624         removed and before it was added again.
9625         Fixes the RestartTimer2 test and SilverlightChess.
9627 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9629         * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
9630         brushes here anymore.
9631         (class TextBoxDynamicPropertyValueProvider): Return default
9632         selection brushes if they've been initialized (happens in
9633         TextBoxView::Render).
9634         (TextBoxView::Render): Initialize the selection brushes if they
9635         haven't already been.
9637 2009-03-11  Alan McGovern  <amcgovern@novell.com>
9639         * dependencyproperty.cpp: Fix issues in resolve_property_path
9640           with some complex paths. Add two new NUnit tests which
9641           verify the correct properties are animated.
9643 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9645         * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
9647         * downloader.cpp (downloader_deobfuscate_font): Moved here from
9648         text.cpp and made public.
9650 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
9652         * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
9653         to render, no-op.
9655 2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9657         * brush.cpp: ImageBrush::image_failed: we need to ref the
9658           eventargs when we do emit chaining.
9660 2009-03-11  Chris Toshok  <toshok@ximian.com>
9662         * border.cpp (Border::OnPropertyChanged): Border is ever the red
9663         headed stepchild.  It has its own validation wrt SetLogicalParent,
9664         that behaves like the InvalidOperationException case in
9665         FrameworkElement, but throws ArgumentException instead of IOE.
9667 2009-03-11  Chris Toshok  <toshok@ximian.com>
9669         * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
9670         Top/Left property changed handling from OnSubPropertyChanged to
9671         here, and remove OnSubPropertyChanged.  Basically property changes
9672         on items in collections are never communicated back using
9673         OnSubPropertyChanged.  That is reserved for direct children of the
9674         object (fill/stroke brushes, etc.)
9676         * grid.h, grid.cpp: same.
9678         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
9679         remove this use of GetParent (yay!) since we don't implicitly
9680         notify our logical parent if an attached property was changed.  we
9681         just notify all listeners.
9683         * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
9684         rename GetParent/SetParent to GetParentClock/SetParentClock.
9686 2009-03-10  Chris Toshok  <toshok@ximian.com>
9688         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9689         hook up (and unhook) the collection events if the dob is a
9690         Type::COLLECTION.  Remove the stupid parent check that was
9691         breaking everything.  Pass in our MoonError parameter to
9692         OnPropertyChanged so we can communicate it back.
9693         (DependencyObject::ClearValue): unhook from the collection events.
9695         * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
9696         these methods are now in FrameworkElement.
9697         (SetParent, GetParent): their replacements.  Hopefully these are
9698         not long for this world, and I'm working on getting rid of them.
9699         they are used in very few places now (basically collection.cpp and
9700         provider.cpp).
9701         (collection_changed, collection_item_changed): two new
9702         EventHandlers so we can make collection stop calling directly into
9703         its parent.
9704         (OnPropertyChanged): add a MoonError* arg here so we can transmit
9705         errors back from the various OnPropertyChanged overrides.
9706         
9707         * validators.h,
9708         validators.cpp (Validators::ContentControlContentValidator): add
9709         half of the "multiple parents for .Content" checks here.  This
9710         runs before the value is actually set and checks to see if the
9711         logical parent is a Panel subclass.  If it is it throws an
9712         ArgumentException instead of an InvalidOperationException (don't
9713         ask me.)
9715         * collection.cpp, collection.h: remove the assumption that we can
9716         just call into our parent to notify of collection/collection item
9717         changes.  instead just emit an event.
9719         * eventargs.h: define CollectionItemChangedEventArgs for the new
9720         Collection::ItemChangedEvent.
9721         
9722         * contentcontrol.h,
9723         contentcontrol.cpp (ContentControl::OnPropertyChanged): call
9724         SetLogicalParent on the old/new contents if they're
9725         FrameworkElements, and if either returns an error, return
9726         immediately.
9728         * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
9729         same.
9731         
9732         * frameworkelement.cpp, frameworkelement.h: move
9733         Set/GetLogicalParent here, and make the InvalidOperationException
9734         on multiple parents unconditional.
9735         
9736         * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
9737         a FrameworkElement, set its logical parent.
9739         * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
9740         control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
9741         mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
9742         textbox.*, text.*, transform.*, uielement.*: change all the
9743         OnPropertyChanged signatures to include MoonError*
9745         * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
9746         type.h, value.h: regen.
9748         * resources.cpp: s/LogicaParent/Parent.
9749         
9750         * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
9751         not really part of this larger change, but needed for the
9752         toggleref stuff.  we need to call SetParent on all the
9753         DO-subclassed converted values so they never reference a trashed
9754         parent pointer.
9755         (get_parent): add more cases here, none of which I'm sure are
9756         correct.
9758 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9760         * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
9761         (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
9762         chain up to.
9763         (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
9764         so that we don't register event callbacks twice. Doh.
9766 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9768         * validators.cpp (Validators::PasswordValidator):
9769         Removed. PasswordBox::PasswordProperty is internal, so we map it
9770         to TextBox::TextProperty and manually implement the
9771         getter/setter (which si where we manually throw an
9772         ArgumentNullException if set to null).
9774         * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
9775         Password and Text properties sucks, let's not do it. Instead,
9776         we'll map PasswordProperty to TextProperty on the managed
9777         side. Also need to Invalidate() if PasswordChar changes.
9778         (TextBoxView::Layout): Mask the text with PasswordChars if we are
9779         rendering a PasswordBox's content.
9781 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9783         * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
9784         Password properties in sync. Don't emit a PasswordChanged event,
9785         that's mapped to TextChanged on the managed side.
9786         (TextBox::OnApplyTemplate): Handle Border and Panel
9787         ContentElements as well.
9789         * textbox.h (class PasswordBox): Get rid of the
9790         PasswordChangedEvent and also some of the properties that it
9791         shares with TextBox.
9793 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9795         * contentcontrol.cpp (ContentControl::ContentControl): Use the
9796         nice new ManagedTypeInfo ctor.
9798         * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
9800         * textbox.cpp (TextBox::Initialize): New protected method; all of
9801         the old ctor logic was moved here so that PasswordBox could reuse
9802         it.
9803         (TextBox::TextBox): Call Initialize() with out type info.
9804         (PasswordBox::PasswordBox): Call Initialize() with out type info.
9805         (PasswordBox::Cursor*): Override some of TextBox's cursor
9806         navigation because we don't "see" whitespace or lines.
9808 2009-03-10  Larry Ewing  <lewing@novell.com>
9810         * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
9811         isn't found in the template.
9813 2009-03-10  Jackson Harper  <jackson@ximian.com>
9815         * xaml.cpp: Don't use GetLogicalParent here because the parenting
9816         hasn't been setup yet. Wse the XamlElementInstance tree for
9817         figuring out who our parent is.
9819 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9821         * brush.cpp: ImageBrush::image_failed: propagate event args.
9823 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
9825         * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
9826         loops into do-while loops so that the line->height and
9827         line->descent get set properly. Needed to fix
9828         TextLayout::GetCursor().
9830 2009-03-10  Jackson Harper  <jackson@ximian.com>
9832         * xaml.cpp: Do some basic type conversion for resources, this
9833         allows you to do things like store a font family as
9834         <clr:String>Arial</clr:String>.
9836 2009-03-10  Jackson Harper  <jackson@ximian.com>
9838         * value.h:
9839         * value.h.in: Consistentify method name.
9840         
9841 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9843         * uielement.cpp: GetTimeManager: if we don't have a surface,
9844           try to get it from the deployment.
9846 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9848         * pipeline-ui.cpp:
9849         * pipeline-nocodec-ui.cpp: Set current deployment in
9850           ResponseEvent.
9852 2009-03-09  Larry Ewing  <lewing@novell.com>
9854         * border.cpp (Render): set the fill rule after drawing the clip
9855         geometry since it will set the fill rule for itself.
9857 2009-03-09  Chris Toshok  <toshok@ximian.com>
9859         * enums.cpp (cursors_map): add the missing Size* members here.
9860         gets the
9861         http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
9862         gallery site to the point where it's displaying a UI.
9864 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9866         * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
9867         caused a segfault.
9869 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9871         * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
9872         and cursor_offset to 0.0. Silverlight doesn't use character column
9873         when moving the cursor up/down, it uses the cursor's x-offset.
9874         (TextBox::CursorDown): Implement using TextLayoutLines.
9875         (TextBox::CursorUp): Same.
9876         (TextBoxView::GetLineFromY): New convenience method.
9877         (TextBoxView::GetLineFromIndex): Another new method.
9879         * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
9880         method.
9881         (TextLayout::GetCursorFromXY): Moved the remaining logic into
9882         TextLayoutLine::GetCursorFromX().
9883         (TextLayout::GetLineFromY): Provide the line index to our caller,
9884         if requested.
9885         (TextLayout::GetLineFromIndex): New convenience method.
9887 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9889         * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
9890         cursor == 0 hack anymore.
9892 2009-03-09  Andreia Gaita  <avidigal@novell.com>
9893     
9894         * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
9895         needs more tests
9897 2009-03-09  Andreia Gaita  <avidigal@novell.com>
9899         * dependencyobject.cpp: do the toggleref callbacks so the managed
9900         side can dispose of things properly
9902 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
9904         * layout.cpp (unichar_combining_class): New function to protect
9905         against using Glib's g_unichar_combining_class() if the API isn't
9906         available.
9908 2009-03-09  Jackson Harper  <jackson@ximian.com>
9910         * xaml.cpp: Store the top element in the xaml context so we can
9911         still lookup handlers when parsing templates.
9913 2009-03-09  Stephane Delcroix  <sdelcroix@novell.com>
9915         * multiscaleimage.cpp: fix the loop ending conditions for images
9916         with extreme aspect ratios.
9918 2009-03-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9920         * deployment.cpp: Add support for setting the root directory
9921           using MOON_PATH.
9923 2009-03-06  Larry Ewing  <lewing@novell.com>
9925         * multiscaleimage.cpp (Render): cache the surface type as a
9926         similar surface to the rendering target to speed up rendering a
9927         bit.
9929 2009-03-06  Larry Ewing  <lewing@novell.com>
9930         
9931         * layout.cpp (SetText): handle null text here.
9933 2009-03-06  Geoff Norton  <gnorton@novell.com>
9935         * codec-version.h.in: When we change the layout of 
9936         dependencyobject, we need to bump the ABI
9938 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9940         * clock.h:
9941         * cbinding.h:
9942         * animation.h:
9943         * cbinding.cpp:
9944         * animation.cpp: If the PropertyPath supplied to the
9945           TargetPropertyProperty is a DependencyProperty, we need a
9946           special method to retrieve it. Normally PropertyPaths which
9947           are instantiated with a DependencyProperty are returned as
9948           'null' from native. Also add method for getting the manual
9949           target.
9951 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9953         * clock.h:
9954         * ChangeLog:
9955         * cbinding.h:
9956         * animation.h:
9957         * cbinding.cpp:
9958         * animation.cpp: Revert - I didn't mean to commit that yet.
9959           It's not complete.
9961 2009-03-06  Alan McGovern  <amcgovern@novell.com>
9963         * propertypath.h: Need to null check the path before passing
9964           to strcmp - It is possible for the path to be null now.
9966 2009-03-06  Andreia Gaita  <avidigal@novell.com>
9968         * dependencyobject.[h|cpp]: Add toggleref event registration
9969         and handler
9971         * cbinding.[h|cpp]: regen
9973 2009-03-05  Jeffrey Stedfast  <fejj@novell.com>
9975         * layout.cpp (FindLastWord): We need to walk backwards, not
9976         forewards. Oops.
9978 2009-03-05  Alan McGovern  <amcgovern@novell.com>
9980         * propertypath.h: If we set a propertypath with a
9981           DependencyProperty, set the 'path' string to null. This
9982           avoids extra marshalling when it's not needed.
9984 2009-03-04  Geoff Norton  <gnorton@novell.com>
9986         * deployment.cpp: Finalizing the domain destroys all objects
9987         immediately.  Its possible that we might end up invoking more
9988         finalizers in the unref drain thta begins after dispose, so 
9989         we're going to force a full gc and finalizer run of the collected
9990         objects here and allow ~Deployment to finalize the entire domain.
9992 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
9994         * pipeline.cpp (Media::DisposeObjectInternal): Return
9995         MEDIA_SUCCESS so that control doesn't reach the end of a non-void
9996         function.
9998         * layout.cpp (TextLayout::GetCursorFromXY): Don't use
9999         g_unichar_iszerowidth().
10000         (TextLayout::GetCursor): Same.
10002 2009-03-04  Larry Ewing  <lewing@novell.com>
10004         * border.cpp, border.h: clean up the path_only drawing a
10005         little. set CanFindElement more appropriately.
10007         * panel.cpp: undo the path_only logic a bit.
10009         * frameworkelement.cpp: make FindElementInHostCoordinates a little
10010         simpler.
10012         * uielement.cpp, uielement.h: Make the CanFindElement default be
10013         false, and remove the broken in_stroke check.
10015 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
10017         * multiscaleimage.h|cpp: generate PInvoke for Setters so the
10018         animations are used from managed Set() too
10020 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
10022         * multiscaleimage.h|cpp: pan and zoom animation in
10023         Viewport[Origin|Width] properties Setters
10025 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10027         * layout.cpp: Disable debug printfs unless layout debugging is
10028         enabled.
10030 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10032         Fixes the last failing case in LineBreakBasic1.htm
10034         * layout.cpp (layout_word_wrap): When checking for last_word, use
10035         <= instead of < because inptr, at this point, is at the first byte
10036         *after* the character just gobbled up.
10038 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10040         Fixes ActualWidth/Height extents for LineBreakBasic1.htm
10042         * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
10043         extents include trailing LWSP if-and-only-if that trailing LWSP is
10044         on the last line.
10045         (TextLayout::LayoutNoWrap): Same.
10046         (TextLayout::LayoutWrap): Same.
10048 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10050         * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
10051         NULL.
10053         * font.cpp (TextFont::GetGlyphInfo): If unichar is
10054         0xFEFF (zero-width no-break space), then return a global
10055         GlyphInfo. We do this because at least some fonts won't have this
10056         glyph and we don't want to render an empty box (the default
10057         glyph).
10059 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10061         * layout.cpp (layout_word_wrap): Silverlight ignores breaking
10062         rules for glyphs that the font doesn't contain.
10064 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10066         * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
10067         op.prev up-to-date if we combine chars.
10069 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10071         Fixes a few more cases in LineBreakClasses.htm
10073         * layout.cpp (utf8_find_last_word): If a zero-width space follows
10074         a combining mark, treat the zws as part of a word and not lwsp.
10075         (layout_word_lwsp): Do NOT ignore zero-width characters, let the
10076         font metrics do the talking.
10077         (TextLayout::LayoutNoWrap): Same.
10078         (layout_word_overflow): Same combining-mark fix as above.
10079         (layout_word_wrap): Same. Also changed the way we keep track of
10080         break opportunities. After discoverign that we need to wrap, get
10081         the break-type for the follwoing character before working
10082         backwards. Try to return false if we manage to squeeze the entire
10083         word onto the line anyway.
10085 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10087         Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
10089         * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
10090         (utf8_find_last_word): Use BreakSpace() instead of
10091         g_unichar_isspace() since that's how the rest of our breaking
10092         logic works.
10093         (FindLastWord): Same.
10094         (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
10095         do it for tabs.
10096         (LayoutNoWrap): Same.
10098 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10100         * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
10101         to Wrap here so that we can avoid a re-layout if the old wrapping
10102         mode was 'Wrap'.
10104 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10106         Fixes some wrapping issues in LineBreakBasic1.htm
10108         * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
10109         variable to keep track of whether or not the layout_word_wrap()
10110         function returned. We want to keep 'linebreak' as a separate
10111         state. If we were told to wrap, but we've reached the end of the
10112         run, postpone wrapping until the next run (which might start with
10113         lwsp).
10115 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10117         Fixes for AdobeFonts.htm
10119         * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
10120         its own Fill() so that if any glyphs have a tail that descends
10121         below the baseline into the underline, the fill doesn't negate
10122         itself where the paths overlap.
10123         (GenerateGlyphCluster): Use the font->Ascender() to get the
10124         baseline offset from the top. Height() + Descender() isn't quite
10125         right. Should probably fix other places that use that strategy as
10126         well, but one step at a time.
10128 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10130         * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
10131         to false.
10132         (TextBoxView::Render): If the selection has changed, update the
10133         selection on the layout engine.
10134         (append_runs): Removed; no longer needed.
10135         (TextBoxView::Layout): Updated to use the new layout APIs.
10136         (TextBoxView::OnModelChanged): When the selection changes, don't
10137         set dirty to true. Instead, set selection_changed to true.
10138         (TextBoxView::SetTextBox): Set the default text attributes on our
10139         layout with the textbox as the source.
10141         * text.cpp (TextBlock::Layout): Updated to use the new text layout
10142         APIs.
10144         * layout.cpp: All new layout/rendering engine.
10146 2009-03-04  Geoff Norton  <gnorton@novell.com>
10148         * deployment.cpp: When we dispose the domain, we force a full GC
10149         run to happen, otherwise objects could retain a ref to the deployment
10150         causing ~Deployment to never be called.
10152 2009-03-04  Jackson Harper  <jackson@ximian.com>
10154         * xaml.cpp|h: Add a new method for grabbing the element_name of a
10155         xaml element instance from managed.
10157 2009-03-04  Alan McGovern  <amcgovern@novell.com>
10159         * src.mdp: Add missing files to the MD solution
10161 2009-03-03  Chris Toshok  <toshok@ximian.com>
10163         * collection.cpp (DependencyObjectCollection::AddedToCollection):
10164         add a check for PermitsMultipleParents here.
10166         * collection.h (UIElementCollection::AddWithError): remove.
10168         * dependencyobject.h (DependencyObject::PermitsMultipleParents):
10169         return true by default.
10171         * style.h (class Setter): setters don't permit multiple parents.
10173         * uielement.h (class UIElement): neither do uielements.
10175         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10176         change the UIElement test to a PermitsMultipleParents test.
10178 2009-03-03  Chris Toshok  <toshok@ximian.com>
10180         * cbinding.h, cbinding.cpp: regen.
10181         
10182         * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
10183         the parent of the DO is a collection, throw an exception.
10184         (UIElementCollection::CanAdd): remove.
10185         (DependencyObjectCollection::CanAdd): remove.
10186         (HitTestCollection::CanAdd): remove.
10188         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10189         reinstate the multiple parents warning, but make it a MoonError,
10190         and make it only apply to visual elements (UIElement subclasses,
10191         specifically).
10193         * dependencyobject.h (GetLogicalParentIncludingCollections): add a
10194         new getter for just the logical_parent field, which is horribly
10195         named.
10196         (GetLogicalParent): add a pinvoke for this.
10198 2009-03-03  Jackson Harper  <jackson@ximian.com>
10200         * xaml.cpp|h: SetProperty now takes a Value instead of a
10201         DependencyObject, this allows us to set properties on things like
10202         enums.
10204 2009-03-03  Geoff Norton  <gnorton@novell.com>
10206         * pipeline.cpp:
10207         * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
10208         file.
10210 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10212         * value.cpp:
10213         * propertypath.h: Complete the implementation of PropertyPath.
10214           If it is constructed with a DependencyProperty in managed,
10215           propagate this to native.
10217         * dependencyproperty.cpp: If the property path instance was
10218           constructed with a DependencyProperty *, immediately return
10219           it.
10221 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10223         * animation.h:
10224         * animation.cpp: Implement the required exceptions for managed
10225           code when starting storyboards which are missing properties
10226           or can't find the target element/property.
10228 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10230         * src.mdp: Add propertypath.h to the MD solution
10232 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10234         * animation.h:
10235         * animation.cpp: Storyboards should always use the surface in
10236           the current deployment when starting. They don't have to be
10237           explicitly attached to a surface - SL2 has different
10238           semantics as compared to SL1 which caused some of the 1.0
10239           tests to flag this as a regression.
10241 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10243         * ChangeLog:
10244         * animation.h:
10245         * animation.cpp: Revert last change. I have the test failing
10246           locally now.
10248 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10250         * pipeline-asf.cpp: Add a null check.
10252 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10254         * animation.h:
10255         * animation.cpp: Storyboards should always use the surface in
10256           the current deployment when starting. They don't have to be
10257           explicitly attached to a surface.
10259 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10261         * dependencyobject.cpp: EventObject::SetSurface: only warn
10262           about wrong thread if we're actually change something.
10264         * mediaplayer.cpp: Call DisposeObject on the media to dispose
10265           the frames.
10267         * pipeline.h:
10268         * pipeline.cpp: Add Media::DisposeObject to have objects
10269           disposed on the media thread.
10271 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10273         * pipeline.cpp: Add a missing base call to Dispose.
10275 2009-03-02  Geoff Norton  <gnorton@novell.com>
10277         * pipeline.cpp: SetSource (uri) is not required to be called before
10278         SetSource (Downloader, PartName) from the javascript API.
10280 2009-03-02  Geoff Norton  <gnorton@novell.com>
10282         * deployment.cpp: Enable signal chaning
10284 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10286         * textbox.cpp (TextBox::Paste): New method to paste the
10287         contents. Since pasting text is asyncronous, we have to emit our
10288         own events and can't rely on them happening inside OnKeyDown().
10289         (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
10290         false if updating the layout returns false.
10292 2009-03-01  Andrés G. Aragoneses  <aaragoneses@novell.com>
10294         * runtime.cpp: Add an EOL at the end of a printf.
10296 2009-03-01  Jeffrey Stedfast  <fejj@novell.com>
10298         * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
10299         don't want to be exporting these symbols.
10301 2009-02-27  Stephane Delcroix  <sdelcroix@novell.com>
10303         * multiscaleimage.cpp: use the tiles containing the shared thumbs for
10304         the highest levels of DZ collections. Saves a lot of network traffic.
10306 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
10308         * resources.cpp: Simplify (old glib) Clear and use the "right" macro
10310 2009-02-26  Chris Toshok  <toshok@ximian.com>
10312         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10313         more tweaking of inheritance behavior.  if the parentProperty
10314         exists, check the local value, and if it exists, return that.
10315         otherwise return return GetValue.
10317 2009-02-26  Chris Toshok  <toshok@ximian.com>
10319         * border.cpp (Border::OnPropertyChanged): robustificate this a
10320         touch.
10322 2009-02-26  Chris Toshok  <toshok@ximian.com>
10324         * cbinding.h, cbinding.cpp: regen.
10326         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
10327         initialize default_style_appled to false.
10328         (FrameworkElement::SetDefaultStyle): new method, so that the
10329         managed code can set the default style without going through the
10330         CLR property wrapper (and the DP system), since (stupidly, imo)
10331         the default style isn't exposed by the Style property.
10332         (FrameworkElement::Measure): I don't like doing this hear, but
10333         according to dave relyea's blog, templates are applied when
10334         Measure is called.  we could add an internal measure hook so that
10335         this code could live in control.cpp, but for now this hack will
10336         do.
10338         * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
10339         and add the default_style_applied field.
10340         
10341         * control.cpp (Control::OnLoaded): only apply the default style
10342         here if we haven't already (to handle the case where the object is
10343         created programmatically).
10345         * xaml.cpp (end_element_handler): according to the blog post in
10346         the added comment, controls defined in XAML get their default
10347         style applied when the end tag is seen.
10349 2009-02-26  Jeffrey Stedfast  <fejj@novell.com>
10351         * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
10352         return failure.
10353         (TextBuffer::Replace): Don't call Resize() if the replacement text
10354         is shorter than the old subtext because the realloc() would lose
10355         data before we had a chance to shift things into place.
10357 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
10359         * resources.cpp: Fix crash on SLED (old glib) when clearing the 
10360         hashtable (somehow this did not crash before)
10362 2009-02-25  Jackson Harper  <jackson@ximian.com>
10364         * xaml.cpp: Remove some old code that was preventing non-dob
10365         values from being set to native properties.
10367 2009-02-25  Jeffrey Stedfast  <fejj@novell.com>
10369         * textbox.cpp (TextBuffer::Substring): New method to get a
10370         substring.
10371         (class TextBoxUndoAction*): New classes to represent different
10372         types of Undo/Redo actions.
10373         (class TextBoxUndoStack): New Undo/Redo stack class.
10374         (TextBox::TextBox): Initialize undo/redo stacks.
10375         (TextBox): Destroy undo/redo stacks.
10376         (TextBox::KeyPressBackSpace): Record an undo action.
10377         (TextBox::KeyPressDelete): Same.
10378         (TextBox::KeyPressUnichar): Here too.
10379         (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
10380         (TextBox::OnPropertyChanged): Record undo actions for setting
10381         SelectedText and Text properties.
10382         (TextBox::Undo): Undo the most recent action.
10383         (TextBox::Redo): Redo the most recent action.
10385 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10387         * multiscaleimage.h|cpp: return the next tile to download
10388         in RenderSingle, RenderCollection. so the download is triggered
10389         from a single place.
10391 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10393         * multiscaleimage.h|cpp: split Render in RenderSingle,
10394         RenderCollection.
10396 2009-02-24  Chris Toshok  <toshok@ximian.com>
10398         * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
10399         added to the list during emission, we can end up doing the Finish
10400         decrements when we didn't do the Start increments, leading to a
10401         negative events->emitting count.  This causes us to spin in
10402         unref_delayed on shutdown.  Fixes bug #479364.
10404         r: kangaroo.
10406 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10408         * codec-version.h.in: Bump abi version.
10410         * mediaplayer.h:
10411         * mediaplayer.cpp: Handle frames with width/height set, and
10412           change our cairo surface accordingly.
10414         * pipeline.h:
10415         * pipeline.cpp: Add width/height to MediaFrame, to support
10416           frames with different sizes than the initial size specified
10417           in the stream.
10419 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10421         * dependencyobject.cpp: Emit: Add a null check.
10423 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10425         * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
10426         1-pixel-wide line for the cursor... apparently cairo has forsaken
10427         1-pixel-wide lines.
10429 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10431         * layout.cpp (TextLayout::GetCursor): Revert previous round()
10432         change, this isn't the right way to do it.
10434         * textbox.cpp (TextBoxView::BeginCursorBlink): Call
10435         UpdateCursor().
10436         (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
10437         state.
10439 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10441         * multiscaleimage.cpp: remove some debugs, clean the render loops,
10442         cleanly dispose the hashtable and its components
10444 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10446         * layout.cpp (TextLayout::GetCursor): Round the cursor's x
10447         position to the nearest whole number (makes the cursor look
10448         nicer).
10450         * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
10452 2009-02-23  Chris Toshok  <toshok@ximian.com>
10454         * xaml.cpp (value_from_str): handle Type::OBJECT here by just
10455         assuming the value is a string.  Fixes Tag.htm.
10457 2009-02-23  Geoff Norton  <gnorton@novell.com>
10459         * debug.cpp: Don't go poking around in managed land if we don't have
10460         a MonoDomain ()
10462 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10464         * multiscaleimage.cpp: Render () in relative coordinates
10466 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10468         * multiscaleimage.h|cpp: use filename as cache keys
10470 2009-02-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10472         * pipeline.h:
10473         * pipeline.cpp: Only decode on the media thread.
10475 2009-02-23  Alan McGovern  <amcgovern@novell.com>
10477         * uielement.h:
10478         * dependencyproperty.g.cpp: Tag is a System.Object, not a
10479           string.
10481 2009-02-22  Geoff Norton  <gnorton@novell.com>
10483         * pipeline.cpp|h: Add extra_data from managed for AudioStream too
10485 2009-02-22 Geoff Norton  <gnorton@novell.com>
10487         * cbinding.cpp|h: Regen
10488         * pipeline.cpp|h: When constructing a new VideoStream pass the
10489         extra_data from managed.
10491 2009-02-22  Geoff Norton  <gnorton@novell.com>
10493         * pipeline-asf.cpp:
10494         * pipeline.cpp|h: Add some missing codecs.
10496 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10498         * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
10499         actual_width, segment->end, etc - even if all we had was
10500         whitespace. Try to keep better track of this state as well.
10501         (TextLayout::GetCursor): The cursor height is actually the same as
10502         the line height.
10504         * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
10505         (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
10506         false at the end.
10507         (TextBox::OnPropertyChanged): Check for inkeypress so we don't
10508         syncronize things too early (we want to do it in SyncAndEmit() at
10509         the end of OnKeyDown()). Also updated to keep proper emit state.
10510         (TextBox::ClearSelection): Only sync selected text if we aren't in
10511         OnKeyDown().
10512         (TextBox::Select): Same.
10514 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10516         * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
10517         able to resize or false if we failed.
10518         (TextBuffer::*): If Resize fails, return.
10519         (TextBox::CursorPrevWord): Only nagivate back so long as i >
10520         begin. Prevents us from returning -1 when begin is 0.
10521         (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
10522         total number of bytes left after cutting, we only want to memmove
10523         the bytes after the cut point.
10525         * moon-path.c (moon_path_ensure_space): New function to replace
10526         the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
10527         that callers can tell if they have enough space to add the data
10528         they want. Fixed callers to check the return value and return w/o
10529         adding curves, lines, whatever. While this will mean that
10530         Moonlight won't render the path correctly, at least we won't
10531         crash.
10533 2009-02-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10535         * mediaplayer.cpp: Open: Show the first frame upon opening a
10536           video.
10538 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10540         * size.cpp|h: Add FromStr (copied from Point)
10541         * xaml.cpp: Parse Type::SIZE
10543 2009-02-19  Jeffrey Stedfast  <fejj@novell.com>
10545         * stylus.h (class StylusPoint): In managed-land, this class is
10546         actually a struct, so until we find a better way, mark property
10547         accessors for pinvoking.
10548         (class StylusPointCollection): Add AddStylusPoints to the list of
10549         methods to create pinvoke stubs for.
10550         (class StylusInfo): Fixed to have a managed class
10551         autogenerated (internal).
10553         * brush.cpp (VideoBrush::SetSource): Implemented.
10555 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10557         * dependencyobject.cpp|h: The parameter is not needed anymore
10558         since the xaml code was updated to work without using the
10559         logical parent.
10561 2009-02-19  Jackson Harper  <jackson@ximian.com>
10563         * xaml.cpp: Implement StaticResource element syntax.
10565 2009-02-18  Jeffrey Stedfast  <fejj@novell.com>
10567         * geometry.h (class PathGeometry): Don't autocreate the
10568         FiguresProperty until we can figure out why it breaks the PDC
10569         site.
10571 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10573         * mediaelement.h: We always want OnPropertyChanged for
10574           PositionProperty. Fixes seeking to start/0.
10576         * dependencyproperty.g.cpp: Regenerated.        
10578 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10580         * mediaelement.cpp: ctor: Initialize flags correctly.
10582 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10584         * playlist.cpp:
10585         * pipeline.cpp:
10586         * pipeline-asf.cpp:
10587         * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
10588           make sled (glib 2.10) happy.
10590 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10592         * pipeline.h:
10593         * pipeline.cpp:
10594         * playlist.cpp:
10595         * mediaelement.h:
10596         * mediaelement.cpp: Initial implementation of
10597           MediaStreamSource.
10599         * cbinding.h:
10600         * cbinding.cpp: Regenerated.
10602 2009-02-18  Alan McGovern  <amcgovern@novell.com>
10604         * clock.h:
10605         * clock.cpp:
10606         * animation.h:
10607         * animation.cpp: Storyboards are considered 'children' if they
10608           ever were attached as a child of another timeline. The
10609           current status doesn't appear to matter.
10610           (StoryboardTest.RemoveChildThenStart).
10612 2009-02-18  Stephane Delcroix  <sdelcroix@novell.com>
10614         * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
10615         of single images
10617 2009-02-17  Chris Toshok  <toshok@ximian.com>
10619         * text.cpp (TextBlock::TextBlock): remove this hack.
10621 2009-02-17  Chris Toshok  <toshok@ximian.com>
10623         * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
10624         to the SelectedText case, and also don't perform the remaining
10625         operations if g_utf8_to_ucs4_fast fails.
10627 2009-02-17  Jeffrey Stedfast  <fejj@novell.com>
10629         * dependencyobject.cpp: Now takes an only_changed argument; if
10630         true, then only return the properties which have been
10631         changed (plus any values which have been auto-created).
10633         * mediaelement.cpp (MediaElement::MediaElement): Set
10634         BufferingTimeProperty and PositionProperty in the ctor, we can't
10635         use DefaultValue nor AutoCreateValue for these since they need to
10636         be returned by ReadLocalValue() immediately after instantiating a
10637         new MediaElement object.
10639         * media.h (class MediaAttribute): Set managed namespaces for
10640         MediaAttribute and MediaAttributeCollection, we have internal
10641         managed implementations of these now.
10643         * text.h (class TextBlock): Changed default LineHeightProperty
10644         value from NaN to 0.0 (docs say NaN is the default, but not
10645         according to the unit tests).
10647         * textbox.h (class TextBox): Changed default TextProperty value
10648         from "" to null (docs say "" is the default, but not according to
10649         the unit tests).
10651         * media.cpp (Image::Image): Fix the SourceProperty to be
10652         autocreated.
10654         * shape.cpp (Polygon::Polygon): Don't set a point
10655         collection. We'll make it autocreated instead.
10656         (Polyline::Polyline): Same.
10658         * geometry.h (class PathFigure): Set the default value of
10659         IsFilledProperty to true.
10660         (class PathGeometry): AutoCreate the FiguresProperty.
10661         (class PolyBezierSegment): AutoCreate the PointsProperty.
10662         (class PolyLineSegment): AutoCreate the PointsProperty.
10663         (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
10665         * deployment.h (class AssemblyPart): Set the default value of
10666         AssemblyPart::SourceProperty to "".
10668         * mediaelement.h: Set the default value of CurrentState to Closed.
10670         * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
10671         Markers or Attributes properties, these are autocreated.
10673 2009-02-17  Alan McGovern  <amcgovern@novell.com>
10675         * animation.cpp: Missed out on a "!" when changing from
10676           GetIsChild to GetIsRootStoryboard
10678 2009-02-17  Alan McGovern  <amcgovern@novell.com>
10680         * cbinding.h:
10681         * cbinding.cpp: Regenerated
10683         * animation.h:
10684         * animation.cpp: Add *WithError functions so that storyboards
10685           can throw the right exceptions when they are not the root
10686           Storyboard.
10688 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10690         * mediaelement.cpp: Add some null checks.
10692 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10694         * mediaelement.h:
10695         * mediaelement.cpp: Move bitfields into our flags field.
10696           Remove allow_downloads and related methods, no longer used.
10698 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10700         * mediaelement.h:
10701         * mediaelement.cpp: Remove GetDownloaderPolicy, not used
10702           anymore.
10704 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10706         * pipeline.h:
10707         * playlist.h:
10708         * playlist.cpp:
10709         * pipeline.cpp:
10710         * mediaelement.cpp: Make SetSource (Stream) work again.
10712 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10714         * mp3.h:
10715         * mp3.cpp:
10716         * audio.h:
10717         * audio.cpp:
10718         * audio-alsa.cpp:
10719         * pipeline-ffmpeg.h:
10720         * yuv-converter.cpp:
10721         * pipeline-ffmpeg.cpp: Update according to new pipeline api.
10723         * playlist.h:
10724         * pipeline.h:
10725         * pipeline.cpp:
10726         * playlist.cpp:
10727         * mediaplayer.h:
10728         * mediaelement.h:
10729         * pipeline-asf.h:
10730         * mediaplayer.cpp:
10731         * pipeline-asf.cpp:
10732         * mediaelement.cpp:
10733         * mms-downloader.h:
10734         * mms-downloader.cpp: Rework pipeline to be async to support
10735           MediaStreamSource.
10737         * type.h:
10738         * value.h:
10739         * cbinding.h:
10740         * cbinding.cpp:
10741         * type-generated.cpp:
10742         * dependencyproperty.g.cpp: Regenerated.
10744         * codec-version.h.in: Bump codec abi.
10746         * downloader.cpp: Include uri.h.
10748         * downloader.h: Add accessor for failed_msg.
10750         * enums.h:
10751         * enums.cpp: Rename MediaElementState to MediaState.
10753         * mutex.h: Added, a pthread implementation of a mutex allowing
10754           easy c++ usage.
10756         * template.h: Inlcude xaml.h and add a forward declaration of
10757           XamlContext.
10759         * window.h: Add a forward declaration of MoonWindow.
10761         * src.mdp: Updated.
10763         * dependencyobject.h:
10764         * dependencyobject.cpp: Added EVENTHANDLER macro. Added
10765           support for emititng events from other than the main thread
10766           (by marshalling the event emission to the main thread).
10768 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10770         * deployment.cpp: Use printf instead of g_warning for a
10771           message which is always printed. Makes it less annoying to
10772           break on g_log while debugging.
10774 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10776         * type.h:
10777         * value.h:
10778         * type-generated.cpp: Regenerate.
10780 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10782         * pipeline.h:
10783         * pipeline.cpp:
10784         * mediaelement.h:
10785         * mediaelement.cpp: Remove MediaErrorEventArgs.
10787 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10789         * debug.h: Added LOG_MP3.
10791         * runtime.cpp: Surface ctor: set the surface of the current
10792           deployment to the ourself.
10794 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10796         * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
10798         * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
10800 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10802         * runtime.h:
10803         * runtime.cpp: CreateDownloader: take an EventObject instead
10804           of UIElement.
10806 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10808         * runtime.h:
10809         * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
10811 2009-02-17  Atsushi Enomoto  <atsushi@ximian.com>
10813         * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
10814           Fixed type of ArcSegment::Size from Point to Size.
10816 2009-02-16  Jeffrey Stedfast  <fejj@novell.com>
10818         * text.h: Default TextBlock font size seems to be 11px in SL2 as
10819         opposed to 14.667 in SL1.
10821 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10823         * brush.h:
10824         * media.cpp:
10825         * mediaelement.cpp: Move image_brush_compute_pattern_matrix
10826           from media.cpp/mediaelement.cpp to brush.h to avoid having
10827           two declarations of the same method.
10829 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10831         * brush.cpp: Include mediaplayer.h here.
10833 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10835         * dependencyobject.cpp: Change our g_error into a g_warning.
10836           Reffing an object with refcount = 0 can actually happen now.
10838 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10840         * dependencyobject.cpp: AddTickCallInternal: if we don't have
10841           a surface, get it from the deployment.
10843 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10845         * dependencyobject.cpp: EventObject. unref and null out the
10846           deployment in the dtor instead of in Dispose.
10848 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10850         * dependencyobject.h:
10851         * dependencyobject.cpp: Add
10852           DependencyObject::RemoveAllHandlers.
10854 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10856         * animation.cpp: Remove the calls to ref/unref as they are
10857           unnecessary.
10859 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10861         * libmoon.h: Don't include playlist.h here. Fixes issues with
10862           the plugin when playlist.h includes expat.
10864 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10866         * cbinding.h:
10867         * animation.h:
10868         * cbinding.cpp:
10869         * animation.cpp: Implement the managed side of
10870           Storyboard.GetCurrentState ().
10872 2009-02-16  Alan McGovern  <amcgovern@novell.com>
10874         * type.h:
10875         * type.h.in: The renaming changes in r126921 break the build
10876           if the generator is run because type.h.in didn't contain the
10877           CopyProperties prototype.
10879 2009-02-16  Geoff Norton  <gnorton@novell.com>
10881         * media.cpp:
10882         * downloader.h: Downloaders created in javascript can suffer the
10883         same shared-cache firefox bug, so we need to expose the buffer
10884         to the image layer in case this is the place.
10886 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
10888         * dependencyobject.cpp (DependencyObject::GetProperties): New
10889         method to get an array of all properties on the object (including
10890         currently attached properties).
10892         * type.cpp (Type::CopyProperties): Renamed from GetProperties()
10893         and changed what it does a bit. Now takes an 'inherited' argument
10894         and returns a GHashTable of properties keyed by GetHashKey().
10896 2009-02-14  Chris Toshok  <toshok@ximian.com>
10898         * dependencyobject.h, dependencyobject.cpp: rename
10899         "current_values" as "local_values".  current_values now means
10900         "local values + autocreated values".  At this point, add
10901         GetCurrentValues which returns a new hashtable containing a union
10902         of both sets, and add FreeCurrentValues to destroy it.
10904         * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
10905         DependencyObject::GetLocalValues instead of GetCurrentValues.
10907 2009-02-13  Chris Toshok  <toshok@ximian.com>
10909         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10910         fix a number of logical errors.  gets inlines properly inheriting
10911         text properties.
10913 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
10915         * type.cpp (Type::GetProperties): New method to get an array of
10916         DependencyProperties for a Type.
10918 2009-02-13  Geoff Norton  <gnorton@novell.com>
10920         * playlist.cpp: Check these string with g_ascii_str* as well.
10921         Also these should be case-insensitive checks.
10923 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
10925         * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
10926         should be ints, not doubles.
10928         * text.h (class Glyphs): Set the DefaultValues for
10929         UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
10931         * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
10932         SetUriSource("") (it's already the DefaultValue).
10934 2009-02-13  Geoff Norton  <gnorton@novell.com>
10936         * media.cpp|h: Ensure we're comparing magics with unsigned values, and 
10937         fix a logic bug that prevented us from proplery writing progressive pixbuf
10938         loaders.
10940 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
10942         * multiscaleimage.h (class MultiScaleImage): Rename the
10943         SubImageCollectionProperty to SubImagesProperty to match
10944         Silverlight.
10946 2009-02-13  Geoff Norton  <gnorton@novell.com>
10948         * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
10949         behaviour.
10950         * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
10951         does when running in the browser profile.
10953 2009-02-13  Alan McGovern  <amcgovern@novell.com>
10955         * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
10956           than casting to a 64bit then 32bit value.
10958 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10960         * multiscaleimage.h|cpp: drop the friend here too
10962 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10964         * tilesource.h: drop the friends
10966 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10968         * Makefile.am: remove deepzoomimagetilesource.h from the
10969         include_headers. no one should code against it.
10971 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10973         * multiscaleimage.cpp:
10974         * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
10976 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10978         * multiscaleimage.cpp: timing macros
10980 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
10982         * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
10983         paint at once to avoid flickering.
10985 2009-02-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10987         * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
10988           a crash when downloading mms streams (due to not having
10989           deployment set).
10991 2009-02-12  Geoff Norton  <gnorton@novell.com>
10993         * playlist.cpp: Ensure that we don't poke around in random memory
10994         if we have an invalid entry in our parser.
10996 2009-02-12  Alan McGovern  <amcgovern@novell.com>
10998         * value.cpp: Add an assert in case the gchandle value is out
10999           of range.
11001 2009-02-12  Alan McGovern  <amcgovern@novell.com>
11003         * value.cpp: Fix compile error on x64 when casting a void* to
11004           a gint32.
11006 2009-02-12  Alan McGovern  <amcgovern@novell.com>
11008         * value.cpp: Managed objects are stored in native as
11009           GCHandles. Use the mono api to get the target of that
11010           GCHandle so that they can be compared correctly in
11011           value.cpp. Remove hack in ItemCollection.cs which worked
11012           around this bug.
11014 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
11016         * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
11017         public, drop a friend.
11018         * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
11019         a friend.
11021 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
11023         * deepzoomtilesource.cpp: some g_ascii love
11025 2009-02-11  Chris Toshok  <toshok@ximian.com>
11027         * text.h: Inline's fontsize default value is 11.  looks like
11028         textblock is the only case where it differs.
11030 2009-02-11  Jeffrey Stedfast  <fejj@novell.com>
11032         * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
11034         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
11035         blink timeout from the GtkSettings.
11036         (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
11037         things seem to have been debugged enough now.
11038         (TextBox::CursorLineBegin): New convenience method.
11039         (TextBox::CursorLineEnd): Same.
11040         (TextBox::OnMouseLeftButtonDown): Implemented double and
11041         triple-click. Capture mouse if single-click.
11042         (TextBox::OnMouseLeftButtonUp): Release mouse capture.
11043         (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
11044         beginning of the line.
11046 2009-02-11  Alan McGovern  <amcgovern@novell.com>
11048         * text.h:
11049         * shape.h:
11050         * media.h:
11051         * panel.h:
11052         * text.cpp:
11053         * border.h:
11054         * panel.cpp:
11055         * shape.cpp:
11056         * textbox.h:
11057         * media.cpp:
11058         * border.cpp:
11059         * textbox.cpp:
11060         * uielement.h:
11061         * uielement.cpp:
11062         * mediaelement.h:
11063         * mediaelement.cpp:
11064         * multiscaleimage.h:
11065         * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
11066           use the ::Render codepaths instead of it's own custom
11067           codepath. Added an extra parameter to ::Render () to specify
11068           whether or not the paths appended to the cairo_t should be
11069           filled/stroked/clipped. This allows a whole bunch of NUnit
11070           tests to pass.
11072         * usercontrol.cpp:
11073         * frameworkelement.cpp: Add an extra parameter to ::Render ()
11074           to specify whether or not the paths appended to the cairo_t
11075           should be filled/stroked/clipped so it can be shared with
11076           the managed hittesting.
11077         Switch FindElementsInHostCoordinates to use the ::Render
11078           codepaths instead of it's own custom codepath. This allows a
11079           whole bunch of NUnit tests to pass.
11081 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11083         * grid.h:
11084         * text.h:
11085         * clock.h:
11086         * panel.h:
11087         * shape.h:
11088         * style.h:
11089         * media.h:
11090         * popup.h:
11091         * brush.h:
11092         * canvas.h:
11093         * border.h:
11094         * stylus.h:
11095         * control.h:
11096         * trigger.h:
11097         * textbox.h:
11098         * geometry.h:
11099         * template.h:
11100         * namescope.h:
11101         * uielement.h:
11102         * animation.h:
11103         * transform.h:
11104         * collection.h:
11105         * downloader.h:
11106         * animation2.h:
11107         * deployment.h:
11108         * bitmapimage.h:
11109         * application.h:
11110         * usercontrol.h:
11111         * mediaelement.h:
11112         * contentcontrol.h:
11113         * multiscaleimage.h:
11114         * frameworkelement.h:
11115         * dependencyobject.h:
11116         * multiscalesubimage.h:
11117         * dependencyproperty.g.cpp:
11118         * deepzoomimagetilesource.h: Make DP backing fields const.
11120 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11122         * grid.cpp:
11123         * text.cpp:
11124         * panel.cpp:
11125         * media.cpp:
11126         * shape.cpp:
11127         * popup.cpp:
11128         * brush.cpp:
11129         * border.cpp:
11130         * canvas.cpp:
11131         * stylus.cpp:
11132         * control.cpp:
11133         * textbox.cpp:
11134         * geometry.cpp:
11135         * uielement.cpp:
11136         * transform.cpp:
11137         * usercontrol.cpp:
11138         * bitmapimage.cpp:
11139         * mediaelement.cpp:
11140         * contentcontrol.cpp:
11141         * dependencyobject.h:
11142         * multiscaleimage.cpp:
11143         * dependencyobject.cpp:
11144         * frameworkelement.cpp:
11145         * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
11146           dp and id fields private and add accessors.
11148 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11150         * type.h:
11151         * grid.h:
11152         * text.h:
11153         * shape.h:
11154         * style.h:
11155         * clock.h:
11156         * brush.h:
11157         * media.h:
11158         * panel.h:
11159         * popup.h:
11160         * grid.cpp:
11161         * canvas.h:
11162         * xaml.cpp:
11163         * type.cpp:
11164         * border.h:
11165         * stylus.h:
11166         * text.cpp:
11167         * media.cpp:
11168         * type.h.in:
11169         * textbox.h:
11170         * shape.cpp:
11171         * panel.cpp:
11172         * trigger.h:
11173         * brush.cpp:
11174         * control.h:
11175         * template.h:
11176         * geometry.h:
11177         * stylus.cpp:
11178         * canvas.cpp:
11179         * border.cpp:
11180         * namescope.h:
11181         * uielement.h:
11182         * control.cpp:
11183         * animation.h:
11184         * textbox.cpp:
11185         * transform.h:
11186         * animation2.h:
11187         * collection.h:
11188         * provider.cpp:
11189         * geometry.cpp:
11190         * downloader.h:
11191         * deployment.h:
11192         * application.h:
11193         * transform.cpp:
11194         * bitmapimage.h:
11195         * usercontrol.h:
11196         * uielement.cpp:
11197         * animation.cpp:
11198         * mediaelement.h:
11199         * usercontrol.cpp:
11200         * mediaelement.cpp:
11201         * contentcontrol.h:
11202         * multiscaleimage.h:
11203         * contentcontrol.cpp:
11204         * frameworkelement.h:
11205         * dependencyobject.h:
11206         * multiscaleimage.cpp:
11207         * dependencyproperty.h:
11208         * multiscalesubimage.h:
11209         * frameworkelement.cpp:
11210         * dependencyobject.cpp:
11211         * dependencyproperty.cpp:
11212         * dependencyproperty.g.cpp:
11213         * deepzoomimagetilesource.h:
11214         * deepzoomimagetilesource.cpp: Change our static
11215           DependencyProperty backing fields to store an integer id
11216           instead of an instance to a DependencyProperty. This way we
11217           can have true per-deployment dependency properties.
11219 2009-02-11  Alan McGovern  <amcgovern@novell.com>
11221         * shape.cpp:
11222         * panel.cpp:
11223         * collection.h:
11224         * usercontrol.h:
11225         * usercontrol.cpp:
11226         * frameworkelement.cpp: Commit some more updates to the
11227           managed hittesting.
11229 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11231         * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
11232         xchatitis in TextBox.
11234 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11236         * fontfamily.h (struct FontFamily): Implemented != operator.
11238         * text.cpp (Inline::Equals): Fixed the fontfamily check.
11240         * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
11242         * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
11243         dispose autocreated values too.
11244         (DependencyObject::RemoveAllListeners): Same here.
11245         (DependencyObject::RegisterAllNamesRootedAt): And here.
11246         (DependencyObject::UnregisterAllNamesRootedAt): Here too.
11248 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11250         * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
11251         GetSubtreeObject so that we can auto-create our Children property
11252         and set it if it hasn't already been set.
11254         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
11255         We need to clear the LocalProvider value as well, if there is
11256         one. Also, don't allow setting a Value* with a null
11257         DependencyObject if it is an autocreate property.
11258         (DependencyObject::ClearValue): Clear the LocalProvider value too.
11259         (DependencyObject::SetSurface): SetSurface on autocreated values too.
11261         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
11262         Now takes another bool arg to specify whether it is allowed to
11263         autocreate new DP values.
11264         (DependencyProperty::Register): Updated.
11265         (DependencyProperty::RegisterFull): Updated, now also takes an
11266         autocreate arg.
11268         * provider.cpp (AutoCreatePropertyValueProvider): A new provider
11269         which sits below DefaultValue.
11271         * *.cpp (*::ctor): Remove calls to SetValue()
11273         * *.h: Added AutoCreateValue where appropriate.
11275 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11277         * color.h: fabs is in math.h.
11279 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11281         * list.h:
11282         * list.cpp: Add a simple ArrayList implementation.
11284         * type.h:
11285         * cbinding.h:
11286         * cbinding.cpp:
11287         * type-generated.cpp:
11288         * dependencyproperty.g.cpp: Regenerated.
11290         * dependencyproperty.h:
11291         * dependencyproperty.cpp: RegisterCustom: removed, no longer
11292           used anywhere. RegisterNull: incorporated into
11293           RegisterFull. Register[Full]: take another Types* argument
11294           so that the registration doesn't have to look it up in the
11295           deployment for every call (this way we can later register
11296           dependency properties in the Types ctor). Also move any
11297           logic from the individial Register overloads to
11298           RegisterFull, this way we don't have different logic
11299           depending on the overload.
11301         * type.cpp:
11302         * type.h.in: Keep a list of all properties for all types on
11303           the Types* instance, and remove the custom properties (hash
11304           and list) on the Type* instance, keeping only one hash
11305           table for both native and custom properties.
11307 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11309         * brush.h:
11310         * runtime.h:
11311         * window-gtk.h:
11312         * downloader.h:
11313         * usercontrol.h:
11314         * file-downloader.h: Only use G_BEGIN/END_DECLS around c
11315           methods (and in files with no c methods remove completely).
11317 2009-02-10  Jackson Harper  <jackson@ximian.com>
11319         * xaml.h|cpp: New method for getting the key of an element
11320         instance.
11321         - Pass the element instance data for the values to set property
11322         when we have one, otherwise pass NULL.
11324 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11326         * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
11327           process: don't check if DPs have been created before
11328           recreating them.
11330 2009-02-10  Alan McGovern  <amcgovern@novell.com>
11332         * border.cpp: Corner rounding is now taken into account when
11333           hittesting a Border
11335 2009-02-10  Fernando Herrera  <fherrera@novell.com>
11337         * value.cpp: Fix GetIsNull call casting in the copy
11338         constructor.
11340 2009-02-09  Chris Toshok  <toshok@ximian.com>
11342         * value.cpp: call SetIsNull everywhere so we can always check
11343         GetIsNull.
11345 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
11347         * border.h:
11348         * shape.cpp:
11349         * border.cpp:
11350         * frameworkelement.cpp: Three more of the NUnit tests are now
11351           passing for FindElementsInHostCoordinates
11353 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
11355         * panel.h:
11356         * shape.h:
11357         * shape.cpp:
11358         * panel.cpp:
11359         * uielement.h:
11360         * frameworkelement.cpp: Commit some more of the hittest code.
11362 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
11364         * type.h.in (class Types): Added a private static field to record
11365         whether or not the static DP's have already been registered.
11367 2009-02-09  Geoff Norton  <gnorton@novell.com>
11369         * deployment.cpp: Support enabling coreclr for moonlight so we
11370         can start dogfooding this.
11372 2009-02-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11374         * deployment.cpp: Remove redundant call to SetObjectType.
11376 2009-02-08  Chris Toshok  <toshok@ximian.com>
11378         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11379         add inheritance of FrameworkElement::DataContextProperty.
11381         * frameworkelement.[cpp,h]: remove all the databinding stuff from
11382         here - it's all handled in managed code now.
11384         * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
11386         * cbinding.[cpp,h]: regen.
11388 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11390         * xaml.cpp: Adjust lookup to find StaticResources defined in 
11391         a ResourceDictionary. re-fix parsing of generic.xaml for the
11392         SL toolkit (unit tests)
11394 2009-02-07  Larry Ewing  <lewing@novell.com>
11396         * border.cpp (Border::ArrangeOverride): 
11397         * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
11398         border children.
11400         * grid.cpp (Grid::MeasureOverride): distribute the allocation
11401         across auto dimensions when it makes sense.
11402         
11403 2009-02-07  Larry Ewing  <lewing@novell.com>
11405         * grid.cpp (Grid::MeasureOverride): don't give our whole
11406         allocation to the first column.
11408 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11410         * stylus.cpp: Committed a variation of Geoff patch to fix
11411         the crash when running moon-unit
11413 2009-02-07  Geoff Norton  <gnorton@novell.com>
11415         * cbinding.cpp|h: Regenerate
11416         * deployment.cpp|h: API cleanup
11417         * downloader.cpp|h: Generate some code that doesn't need to be
11418         hand maintained.  Clean up some API to prevent a crash when
11419         unregistering downloaders.
11421 2009-02-07  Geoff Norton  <gnorton@novell.com>
11423         * color.h:
11424         * cornerradius.h:
11425         * point.h:
11426         * rect.h:
11427         * size.h: Account for an epsilon when comparing these structures
11428         to avoid erroneously emitting false results.
11430 2009-02-07  Jeffrey Stedfast  <fejj@novell.com>
11432         * text.cpp (TextBlock::GetTextInternal): Now takes an
11433         InlineCollection argument.
11434         (TextBlock::OnPropertyChanged): Pass args->new_value to
11435         GetTextInternal() so that we avoid unnecesary recursion in the
11436         case that we're being called as a result of a GetValue() of the
11437         InlinesProperty.
11438         (TextBlock::OnCollectionChanged): Updated.
11439         (TextBlock::OnCollectionItemChanged): Updated.
11441 2009-02-06  Larry Ewing  <lewing@novell.com>
11443         * shape.cpp (Shape::ArrangeOverride): take alignment into account
11444         when Stretch == None.
11446         * media.cpp (Image::ArrangeOverride):
11447         * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
11448         into account when Stretch == None.
11450         * grid.cpp, grid.h: keep track of the automagical w/h make handle
11451         it properly when alignment is not stretch.  Fixes leaf control
11452         placement on "the moment".
11454 2009-02-06  Larry Ewing  <lewing@novell.com>
11456         * type.cpp:
11457         * playlist.cpp:
11458         * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
11460         * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
11462         * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
11463         everywhere.
11465 2009-02-06  Larry Ewing  <lewing@novell.com>
11467         * control.cpp (Control::Control): remove bad setting of
11468         foreground.
11470 2009-02-06  Jackson Harper  <jackson@ximian.com>
11472         * xaml.cpp|h: Add a new method for retrieving the control template
11473         parent of a xaml element instance (called from unmanaged).
11474         - quick hack to force binding expressions to be parsed in managed.
11476 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11478         * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
11479         for *+/- and . to our Key enum needed for the DLR Console app.
11481 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11483         * Reverted previous commit as I goofed the unit test on
11484         Windows. Once I fixed it, the logic I worked so hard to achieve
11485         wasn't correct :(
11487 2009-02-06  Larry Ewing  <lewing@novell.com>
11489         * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
11490         we are the toplevel.
11492 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11494         See InkPresenter's ClearValue unit test
11496         1. Calling SetValue() in ctors was gross.
11497         2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
11498         3. it broke things if ClearValue was used and/or if the properties
11499            were set to null
11501         * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
11502         method to query for a default property value as used by the
11503         PropertyValueProviders.
11504         (DependencyObject::ReadLocalValue): Read the value directly from
11505         the hash table.
11507         * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
11508         Call DependencyObject::GetDefaultValue() to try and get a default
11509         value. If successful, set it on the current_values hash table.
11511         * *.cpp: Fixed all classes that had ctors that called SetValue()
11512         to instead override GetDefaultValue().
11514 2009-02-06  Chris Toshok  <toshok@ximian.com>
11516         * uielement.cpp (UIElement::SetSurface): if we have a subtree
11517         object (which is a UIElement), set its surface too.  Fixes the
11518         ContentPresenter textblocks in ItemsControl.
11520 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11522         * deepzoomimagetilesource.cpp: set subimage width/height
11523         * multiscaleimage.cpp: do not download subimages .xml, we can work
11524         without them
11526 2009-02-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11528         * cbinding.h:
11529         * cbinding.cpp: Regenerated.
11531         * dependencyobject.h:
11532         * dependencyobject.cpp:
11533           DependencyObject::ProviderValueChanged: Add a MoonError
11534           argument to be able to marshal managed exceptions through
11535           native code. ClearValue: Add a MoonError argument to match
11536           the signature of ProviderValueChanged.
11538         * dependencyproperty.h: Make NativePropertyChangedHandler
11539           take a MoonError argument to be able to marshal managed
11540           exceptions through native code.
11542         * error.h:
11543         * error.cpp: Add a gchandle_ptr field to hold managed
11544           exceptions.
11546         * frameworkelement.h:
11547         * frameworkelement.cpp: Update according to ClearValue
11548           signature changes.
11550         * provider.cpp: Update according to ProviderValueChanged
11551           signature changes.
11553 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11555         * morton-layout-table.inc: pre-computed table for Morton Layout 
11556         indices.
11558 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11560         * multiscaleimage.cpp: fix the most annoying rendering issue for
11561         subimages.
11563 2009-02-06  Jackson Harper  <jackson@ximian.com>
11565         * xaml.cpp: Store a list of resource dictionaries on the xaml
11566         context, so control templates can use these to lookup resources.
11567         Also go back to using the XamlElementInstance's for walking up the
11568         tree, this allows us to parse before parenting items.
11570 2009-02-05  Geoff Norton  <gnorton@novell.com>
11572         * deepzoomimagetilesource.cpp|h: We don't want to download all of
11573         the sub images at creation time, so allow them to defer, otherwise
11574         we might fire off hundreds of downloaders at once.
11576 2009-02-05  Jackson Harper  <jackson@ximian.com>
11578         * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
11579         Double).
11581 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11583         * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
11584         to be more consistent with the managed API.
11586         * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
11588 2009-02-05  Geoff Norton  <gnorton@novell.com>
11590         * multiscaleimage.cpp|h: We must emit this event on the main thread
11592 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
11594         * panel.h:
11595         * shape.h:
11596         * border.h:
11597         * cbinding.h:
11598         * uielement.h:
11599         * cbinding.cpp:
11600         * uielement.cpp:
11601         * frameworkelement.h:
11602         * frameworkelement.cpp: Create an unmanaged version of
11603           FindElementsInHostCoordinates
11605 2009-02-05  Geoff Norton  <gnorton@novell.com>
11607         * cbinding.cpp|h:
11608         * dependencyproperty.g.cpp:
11609         * type-generated.cpp: Regenerate
11610         * collection.h: Generate bindings for the multiscalesubimage collection.
11611         * deepzoomimagetilesource.cpp: Trigger a download when we get our URI 
11612         * multiscaleimage.cpp|h: Hide SubImages in a internal property until
11613         we can marshal collections as ReadOnly into managed automatically.
11614         Also emit the ImageOpenSucceeded event when we're done parsing.
11616 2009-02-05  Jackson Harper  <jackson@ximian.com>
11618         * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
11619         So I've added an ignore_case flag that the parser can use.
11621 2009-02-05  Jackson Harper  <jackson@ximian.com>
11623         * type.cpp: As far as I can tell, Type::Find does not need to be
11624         case sensitive. This fixes "Double" being found when we register
11625         it as "double".
11627 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11629         Save some additional state for an optimization I'd like to do.
11631         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
11632         character offset for each TextLine.
11633         (TextLayout::LayoutNoWrap): Same.
11634         (TextLayout::LayoutWrap): Here too.
11636 2009-02-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11638         * deployment.cpp: Fix typo.
11640 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
11642         * frameworkelement.cpp: Reverting r125649 as it's incorrect.
11644 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11646         * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
11647         ClearSelection() because we'll be syncing the SelectedText in
11648         SyncAndEmit() anyway.
11650         * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
11651         exit when inptr >= inend rather than when *inptr == 0.
11652         (TextLayout::GetCursorFromXY): Slightly improved.
11654 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
11656         * dependencyobject.cpp|h: Let GetLogicalParent optionally report
11657         a collection for it's parent. This is needed in some cases like
11658         a Style inside a ResourceDictionary that defines "{StaticResource..."
11659         that other Style needs (e.g. SL toolkit unit tests)
11660         * xaml.cpp: Adjust lookup to find StaticResources defined in 
11661         a ResourceDictionary
11663 2009-02-05  Stephane Delcroix  <sdelcroix@novell.com>
11665         * multiscaleimage.cpp: Renders subimages
11667 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11669         Memory Optimization:
11671         * textbox.cpp (append_runs): Updated. Also fixed a bug which would
11672         sometimes append empty TextRuns to the list.
11674         * text.cpp (TextBlock::Layout): Updated. No longer need to use the
11675         retarded TextRun linebreak ctor.
11677         * layout.cpp (TextRun): Changed TextRuns a bit, all members are
11678         now private but accessors have been added to get the values. Get
11679         rid of the crlf field and ctor params. We also no longer "strdup"
11680         for the ucs4 ctor since TextBox is the only consumer of that API
11681         and it is not constructed using a temp buffer.
11682         (TextSegment): Updated a bit for TextRun changes.
11683         (TextLayout): Updated for TextRun changes.
11685 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
11687         * style.cpp|h: Remove "style-hack" from SetterBaseCollection 
11688         since that collection has no need to know about the style itself.
11689         Simplify the API a bit.
11690         * xaml.cpp: Introduce an hack for SetterBase tp workaround the 
11691         fact that the current parser adds elements to the collections
11692         before setting their properties (and a SetterBase would seal
11693         itself when added to a collection).
11695 2009-02-05  Jb Evain  <jbevain@novell.com>
11697         * propertypath.h: new type.
11698         * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
11699         * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
11700         * animation.h: change type of Storyboard.TargetPropertyProperty
11701         from string to PropertyPath.
11702         * animation.cpp: update accordingly.
11703         * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
11704         * dependecyproperty.cpp: update accordingly.
11705         * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
11707 2009-02-05  Jackson Harper  <jackson@ximian.com>
11709         * xaml.cpp|h: Use the kind for getting content property names.
11711 2009-02-04  Chris Toshok  <toshok@ximian.com>
11713         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11714         fix property inheritance to walk back up the tree (instead of just
11715         looking at the direct parent.)  Also, we can't use the parent's
11716         kind directly, we have to use parent->Is().
11718 2009-02-04  Larry Ewing  <lewing@novell.com>
11720         * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
11721         apply when the final value is not equal to the measured value.
11723 2009-02-04  Jackson Harper  <jackson@ximian.com>
11725         * xaml.cpp|h: When setting properties pass in the
11726         XamlElementInstance.
11727         - Function so named items can be looked up from managed.
11728         * cbinding.cpp|h: regen.
11730 2009-02-04  Aaron Bockover  <abockover@novell.com>
11732         * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
11733         bug where the blue channel was dropped in sc#r,g,b
11735 2009-02-04  Sebastien Pouliot  <sebastien@ximian.com>
11737         * collection.cpp|h: Override AddWithError on UIElementCollection
11738         to return an error on duplicate elements
11740 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11742         * color.cpp (read_next_double): Use g_ascii_strtod().
11743         (color_from_str): Use g_ascii_strcasecmp().
11745         * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
11747 2009-02-04  Larry Ewing  <lewing@novell.com>
11749         * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
11750         case we implement star columns in a matching manor.
11752         * mediaelement.cpp (MediaElement::Render): disable mediaelement
11753         pixel snapping for now, we'll deal with this at a higher level.
11755 2009-02-04  Chris Toshok  <toshok@ximian.com>
11757         * type.cpp (type_is_dependency_object): no need to c&p the entire
11758         method, just call Type::IsSubclassOf with the kinds.
11760 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11762         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
11763         TimeManager's timeout functions instead of calling g_timeout_add()
11764         ourselves.
11766 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11768         * multiscaleimage.cpp: prepare the rendering for subimages.
11770 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11772         * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
11774 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11776         * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
11777         subimage creation.
11779 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
11781         * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
11782         to false. Get rid of maxlen state, it's not needed.
11783         (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
11784         class member variable.
11785         (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
11786         useful for mouse events too.
11787         (TextBox::KeyPressFreeze): Removed.
11788         (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
11789         true, get the cursor from the x,y coordinates and update the
11790         selection to be zero-length starting at the cursor position.
11791         (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
11792         (TextBox::OnMouseMove): If we are in the 'selecting' state,
11793         translate current mouse coordinates into a new cursor position and
11794         update selection start/length.
11795         (TextBoxView::GetCursorFromXY): New helper method.
11796         (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
11798         * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
11800 2009-02-04  Jackson Harper  <jackson@ximian.com>
11802         * template.cpp|h: Add a function for creating xaml template
11803         bindings.
11805 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11807         * audio.cpp:
11808         * audio-pulse.cpp: More SetCurrentDeployments.
11810 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11812         * audio.cpp: One more SetCurrentDeployment.
11814 2009-02-04  Alan McGovern  <amcgovern@novell.com>
11816         * frameworkelement.cpp: Fixed hit tests which didn't do what
11817           i meant them to do and added new tests. Panels should not
11818           swallow a click when hit testing, so we should never abort
11819           checking children.
11821 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11823         * multiscalesubimage.cpp: fix the source uri in the subimage
11824         ctor. the source for the subimage is now parsed.
11826 2009-02-04  Alan McGovern  <amcgovern@novell.com>
11828         * type.h:
11829         * value.h:
11830         * cbinding.h:
11831         * uielement.h:
11832         * cbinding.cpp:
11833         * collection.h:
11834         * uielement.cpp:
11835         * collection.cpp:
11836         * type-generated.cpp: Hook up the managed hittesting code to
11837           the native hit testing code.
11839 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
11841         * multiscaleimage.cpp: iterate the collection and not the GList
11842         anymore.
11844 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
11846         * multiscalesubimage.h|cpp:
11847         * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
11848         so we can compute the UriSource based on parent's one
11850 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
11852         * collection.cpp: MultiScaleSubImageCollection ctor
11854 2009-02-03  Larry Ewing  <lewing@novell.com>
11856         * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
11857         the toplevel logic.
11859         * usercontrol.cpp: fix missing modification.
11861 2009-02-03  Larry Ewing  <lewing@novell.com>
11863         * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
11864         clip by the margin.
11866 2009-02-03  Geoff Norton  <gnorton@novell.com>
11868         * frameworkelement.cpp (Arrange): If we have a negative margin,
11869         it moves our layout slot, instead of clipping it, as such we need
11870         to adjust the clipping path accordingly in these cases to accomodate
11871         this.
11873 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11875         * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
11876         ReadOnly status afterall.
11877         (TextBoxView::OnModelChanged): Same.
11878         (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
11879         the buffer.
11881         * control.h: Control's default FontSize is 11, not 14.666 like
11882         TextBlock's.
11884 2009-02-03  Larry Ewing  <lewing@novell.com>
11886         * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
11887         when we arrange.  Fixes the rectangle bg on pdc.
11889 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11891         * textbox.cpp (TextBox::OnPropertyChanged): Set the default
11892         SelectionBackground and SelectionForeground brushes if
11893         SelectionLength gets to be >0.
11894         (TextBox::TextBox): Don't set them here. Initialize a new state
11895         variable, cursor_column to 0.
11896         (TextBox::CursorDown): Update cursor_column and fix some
11897         inconsistencies with Microsoft's logic. Renamed and c++'ified from
11898         move_down().
11899         (TextBox::CursorUp): Same idea here.
11900         (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
11901         (TextBox::CursorPrevWord): Same idea.
11902         (TextBox::KeyPress*Down): Save/Restore cursor_column state after
11903         updating SelectionStart/Length properties.
11904         (TextBox::KeyPress*Up): Same.
11905         (TextBox::KeyPressHome): We can set cursor_column to 0 here.
11906         (TextBox::OnPropertyChanged): If Text, SelectedText,
11907         SelectionStart or SelectionLength chanegs, we need to reset
11908         cursor_column to -1 (aka "unknown").
11910 2009-02-03  Larry Ewing  <lewing@novell.com>
11912         * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
11913         and apply the finalsize adjustments to the existing values.
11914         Handle the empty row/col case specially.
11916         * usercontrol.cpp: revert accicdental diabling (for now).
11918 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11920         * textbox.cpp (TextBuffer::Replace): Do the right thing if length
11921         goes beyond the end of the buffer.
11922         (TextBuffer::Cut): Same.
11924         * layout.cpp (RenderSegment): Extend the selection line
11925         Silverlight's TextBox does if the selection crosses over the CRLF
11926         sequence at the end of a line.
11928 2009-02-03  Larry Ewing  <lewing@novell.com>
11930         * border.cpp:
11931         * usercontrol.cpp:
11932         * frameworkelement.cpp: handle the specified size case as well.
11934 2009-02-03  Jb Evain  <jbevain@novell.com>
11936         * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
11937         primitive types.
11939 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
11941         * textbox.cpp: Rewrote selection logic and vastly simplified
11942         cursor movement along the way.
11944 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11946         * type.h:
11947         * type.cpp:
11948         * type.h.in:
11949         * dependencyproperty.h:
11950         * dependencyproperty.cpp: Remove the need for
11951           DependencyProperty to be a friend class of Type.
11953 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11955         * multiscalesubimage.h: DefaultValues for DPs.
11957 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
11959         * deepzoomimagetilesource.h|cpp:
11960         * multiscaleimage.h|cpp:
11961         * multiscalesubimage.h|cpp: fill the subimages on MSI
11963 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
11965         * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
11966         because that was not part of the API before then (and it breaks
11967         compilation).
11969 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11971         * type.h:
11972         * type.cpp:
11973         * type.h.in: Type: don't make Types a friend class of Type.
11975 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11977         * animation.h:
11978         * animation.cpp: Remove animation_init, it's empty.
11980         * audio.cpp: We need to set the current deployment on the
11981           audio thread (but without touching mono at all).
11983         * cbinding.h:
11984         * cbinding.cpp:
11985         * type-generated.cpp:
11986         * dependencyproperty.g.cpp: Regenerated.
11988         * dependencyobject.h:
11989         * dependencyobject.cpp: Move object accounting and delayed
11990           unref handling to Deployment.
11992         * dependencyproperty.h: Remove DependencyProperty::Shutdown,
11993           it's empty.
11995         * deployment.cpp: Add a SetCurrent overload which allows us
11996           to specify whether the current appdomain should be updated
11997           too. GetCurrent: Never access mono if the current domain is
11998           NULL. Move object tracking and delayed unrefs here.
12000         * deployment.h: Add a SetCurrent overload which allows us to
12001           specify whether the current appdomain should be updated
12002           too. Move object tracking and delayed unrefs here.
12004         * runtime.cpp: Move object tracking reports to Deployment.
12005           Remove unnecessary static init and shutdown methods.
12007         * type.h:
12008         * type.cpp:
12009         * type.h.in: Completely remove all static Type
12010           initialization, we now rely on the Types* on the current
12011           Deployment.
12013 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
12015         * style.cpp: Remove extra logic and comment the main "bad" hack
12016         still required not to cause regressions. Affected test cases
12017         will marked as known issues until the XAML parser issue (which
12018         is adding elements to collections before setting their properties)
12019         is fixed.
12021 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12023         * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
12025 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12027         * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
12028           destruction the name might not be available anymore, so
12029           loop over the entire hash tables looking for the object to
12030           remove instead of trying to lookup with a null key. Fixes a
12031           crash while running moon-unit.
12033 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12035         * xaml.cpp: Use property accessors on Type instead of
12036           accessing the fields.
12038 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12040         * debug.h:
12041         * runtime.h|runtime.cpp: new LOG_MSI macro.
12043 2009-02-03  Fernando Herrera  <fherrera@novell.com>
12045         * runtime.cpp:
12046         * runtime.h: Move moonlight_flags and runtime_flags to 64bits
12047         as we reached the 32bits limit for debug.
12049 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12051         * deepzoomimagetilesource.h|cpp: Parse Collections.
12053 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12055         * deepzoomimagetilesource.h|cpp: data structures to parse
12056         DZ images with subimages. Move the common parts of both ctors
12057         in Init ()
12059 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12061         * tilesource.h:
12062         * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
12063         some methods and fields to the private section.
12065 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12067         * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
12069 2009-02-02  Chris Toshok  <toshok@ximian.com>
12071         * popup.h, popup.cpp: this inherits from FrameworkElement, not
12072         DependencyObject.
12074         * dependencyobject.cpp (dispose_value): this method is doing *way*
12075         too much.  we can't just blindly dispose of our values.  they
12076         could be shared across multiple elements.  don't even unref them
12077         here, as deleting the value does that.
12079         * type-generated.cpp: regen.
12081 2009-02-02  Larry Ewing  <lewing@novell.com>
12083         * mediaelement.cpp:
12084         * media.cpp (Image::UpdateSize): update horrible hacks that are
12085         used when we are part of canvas until they can be removed
12086         completely
12088 2009-02-02  Larry Ewing  <lewing@novell.com>
12090         2009-02-02  Chris Toshok  <toshok@ximian.com>
12092         * enums.cpp (keyboard_navigation_mode_map): add
12093         (initialize_enums): add TabNavigation property handling, mapping
12094         to keyboard_navigation_mode_map.
12096 2009-02-02  Geoff Norton  <gnorton@novell.com>
12098         * bitmapimage.h: 
12099         * xaml.cpp: Inject ImageSource underneath BitmapImage so that
12100         custom xaml that attaches a ImageSource can work.  Every
12101         ImageSource is a BitmapImage in SL2
12102         * type-generated.cpp:
12103         * type.h:
12104         * value.h: Regen
12106 2009-02-02  Larry Ewing  <lewing@novell.com>
12108         * border.cpp:
12109         * usercontrol.cpp:
12110         * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
12111         stretch back out to finalsize in the stretch case.
12113 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12115         * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
12116         int because, duh, the range is -2 to 1, not 0 to 3 and so
12117         TextLine::crlf was being set to -2 instead of 2.
12118         (TextLayout::GetCursor): A minor tweak to get things to work if
12119         the cursor is right after the last char which is a \r.
12121         * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
12122         before.
12123         (move_down): Need to use a loop when advancing back to the
12124         previous column so we don't go beyond EOL.
12125         (move_up): Same, but more fixes as well.
12127 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12129         * textbox.cpp: Moved all event handling back to TextBox since
12130         that's the focusable element.
12132         * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
12133         first Control subclass that we can focus.
12135 2009-02-02  Sebastien Pouliot  <sebastien@ximian.com>
12137         * dependencyproperty.g.cpp:Regenerated
12138         * style.cpp|h: Use validators on Setter instead of overriding
12139         SetValueWithErrorImpl on SetterBase
12140         * validators.cpp|h: Addvalidator for checking sealed Setter
12142 2009-02-02  Larry Ewing  <lewing@novell.com>
12144         * border.cpp (Border::Render): don't fill the whole are with the
12145         border brush only fill the BorderThickness.  
12147 2009-02-02  Larry Ewing  <lewing@novell.com>
12149         * textbox.cpp, textbox.h: first pass at implementing arrange and
12150         measure.
12152         * text.cpp: request with padding too.
12154 2009-02-02  Chris Toshok  <toshok@ximian.com>
12156         * textbox.h (class TextBox): store the contentElement as an
12157         instance field so we can update it in OnPropertyChanged.
12159         * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
12160         disgusting, and *SHOULD* be handled in the textbox template, but
12161         we can't handle it in ours in case people replace it.  if the
12162         ContentElement template child has DP's named
12163         VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
12164         them based on the value of ours.
12165         (TextBox::OnPropertyChanged): handle property changes on our
12166         VerticalScrollBarVisibility/HorizontalScrollBarVisibility
12167         properties by proxying them to our contentElement.
12169 2009-02-02  Alan McGovern  <amcgovern@novell.com>
12171         * media.cpp:
12172         * bitmapimage.cpp: Image.Source defaults to a BitmapImage
12173           with a uri of string.empty.
12175 2009-02-02  Chris Toshok  <toshok@ximian.com>
12177         * rect.h (struct Rect): we can be Grown by a negative amount. make
12178         sure we don't drop below 0 on width/height, since everything blows
12179         up when we do.
12181 2009-02-02  Alan McGovern  <amcgovern@novell.com>
12183         * bitmapimage.h:
12184         * dependencyproperty.g.cpp: The default value for
12185           Bitmap.ImageSource is an empty string.
12187 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12189         * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
12190         events when the selection or text changes. TextBoxView cannot
12191         depend on getting those events if things are changed
12192         programatically.
12193         (TextBox::KeyPressThaw): Don't ever bother with emitting
12194         ModelChanged events here, they'll be emitted in
12195         OnPropertyChanged(), now.
12196         (TextBoxView): We no longer listen to TextChanged or
12197         SelectionChanged events.
12198         (TextBoxView::ResetCursorBlink): New method to do all of the
12199         proper state checking to see if the cursor should be rendered
12200         which calls the appropriate Begin/Delay/EndCursorBlink() method.
12201         (TextBoxView::OnModelChanged): Updated to handle Text and
12202         Selection changes. Dropped CursorPosition because it is no longer
12203         necessary.
12204         (TextBoxView::OnFocusIn): Set focused to true before calling
12205         ResetCursorBlink().
12206         (append_runs): Don't forget to append the LineBreak to the Runs
12207         list.
12208         (TextBoxView::SetTextBox): Need to sync some additional state.
12210 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12212         * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
12213           already be in one, and DrainUnrefs isn't recursive anymore.
12215 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12217         * src.mdp: Updated to use new MD features (ChangeLog and log
12218           message policy).
12220 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12222         * deepzoomimagetilesource.h|cpp: add a parsed_callback.
12223         * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
12224         immediately.
12226 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12228         * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
12229         in GetTileLayer for missing tiles.
12231 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12233         * multiscaleimage.cpp: render lower layer if the current layer
12234         contains NULL tiles.
12236 2009-02-02  Chris Toshok  <toshok@ximian.com>
12238         * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
12239         correct apparent c&p error.
12241 2009-02-01  Larry Ewing  <lewing@novell.com>
12243         * control.cpp, control.h:
12244         * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
12245         MeasureOverride here from control where they are only used for
12246         binding.
12248 2009-02-01  Larry Ewing  <lewing@novell.com>
12250         * thickness.cpp (Thickness::FromStr): 
12251         * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
12252         that will cause the rest to be filled with 0.  Fixes parsing of
12253         single value entries.
12255         * frameworkelement.cpp: arrange based on the adjusted rect.
12257 2009-02-01  Chris Toshok  <toshok@ximian.com>
12259         * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
12260         the ApplyTemplate gunk here, as the template doesn't change when
12261         our content does - the ContentPresenter in our control template
12262         will changed based on our content.
12264         * xaml.cpp (dependency_object_set_attributes):
12265         handle_xaml_markup_extension has three possible return states.
12266         "Need SetValue", "Don't SetValue", and "Error".  the bool return
12267         value is the first two (true == need_setvalue), and p->error_args
12268         determines the last one.
12269         (handle_xaml_markup_extension): add a comment detailing the
12270         need_setvalue return value, and make the return values consistent.
12271         TemplateBindings are weird in that they don't (for now) set a
12272         value, but require that we don't continue on with the set value
12273         machinery in dependency_object_set_attributes.
12275         Also, the TemplateBinding handling in the case of
12276         Property1={TemplateBinding Property2} was attaching things such
12277         that updates to source.Property1 would update target.Property2.
12278         This is exactly backward - it should have been source.Property2 =>
12279         target.Property1.  We got lucky in a vast number of instances
12280         because the property names were the same.
12282 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
12284         * style.cpp: Revert first part (always seal) of last patch due to
12285         regressions.
12287 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com>
12289         * style.cpp: Always seal setters when added to collection (unit 
12290         tested) and unrelated to style (which may not be assigned, SIGSEGV)
12292 2009-01-31  Geoff Norton  <gnorton@novell.com>
12294         * animation.cpp: Its possible for a Storyboard to have TargetName
12295         and TargetProperty set, but be unresolvable, and still use a parent
12296         manual target (See Axelerate3D).
12298 2009-01-31  Chris Toshok  <toshok@ximian.com>
12300         * collection.h, collection.cpp (class UIElementCollection):
12301         UIElements can be reparented logical parent-wise, but can't have
12302         more than one *visual* parent.
12304 2009-01-31  Larry Ewing  <lewing@novell.com>
12306         * border.cpp:
12307         * control.cpp:
12308         * frameworkelement.cpp: rather than trying to fix the rendering
12309         fix the layout_xform to handle margins automatically.
12311 2009-01-31  Larry Ewing  <lewing@novell.com>
12313         * border.cpp (Border::Render): try to match the interior
12314         CornerRound behavior a littler closer.
12316 2009-01-31  Larry Ewing  <lewing@novell.com>
12318         * rect.cpp (Rect::Draw): fix typo in rect drawing.
12320 2009-01-31  Larry Ewing  <lewing@novell.com>
12322         * cornerradius.h: add == and != overloads.
12324         * uielement.cpp: don't include the layout clip if we are
12325         tranforming the bounds.  The layout clip only applies to local
12326         space.
12328         * border.cpp: restore the graphics context after clipping.
12330 2009-01-31  Larry Ewing  <lewing@novell.com>
12332         * rect.cpp, rect.h: move the rounded drawing here for now until
12333         there is a better place.
12334         
12335         * border.cpp: start drawing the borderbrush and using border
12336         thickness.
12337         
12338 2009-01-31  Larry Ewing  <lewing@novell.com>
12340         control.cpp: fix arranged size with border thickness or padding.
12342         border.cpp: fix arranged size with border thickness or
12343         padding. fix rendering with margins.
12345         panel.cpp: fix rendering with a margin.
12347 2009-01-31  Larry Ewing  <lewing@novell.com>
12349         * border.cpp (Border::Render): add corner radius rendering logic
12350         here for now.
12352 2009-01-31  Stephane Delcroix  <sdelcroix@novell.com>
12354         * multiscaleimage.h|cpp: ensure there's only one downloader running,
12355         fixes the issue where wrong images were cached.
12357 2009-01-31  Sebastien Pouliot  <sebastien@ximian.com>
12359         * contentcontrol.h: Add @CallInitialize so the event gets
12360         registred (in the managed side) and we can now track content
12361         changes.
12363 2009-01-30  Geoff Norton  <gnorton@novell.com>
12365         * textbox.cpp: FontFamily is now a FontFamily not a string.
12367 2009-01-30  Chris Toshok  <toshok@ximian.com>
12369         * xaml.cpp: fix ResourceDictionary once and for all.
12371 2009-01-30  Geoff Norton  <gnorton@novell.com>
12373         * deployment.cpp|h: Ensure that any downloaders that might
12374         call back into managed land are aborted before we throw out the
12375         domain.
12376         * downloader.cpp|h: Add a nice interface to DownloaderRequest
12377         and DownloaderResponse to save some code duplication in deployment
12379 2009-01-30  Geoff Norton  <gnorton@novell.com>
12381         * mediaelement.cpp:  If we finish downloading before we can
12382         fill the buffer, we still need to emit this event.
12384 2009-01-30  Chris Toshok  <toshok@ximian.com>
12386         * usercontrol.h (class UserControl): make managed access to
12387         ContentProperty protected internal, not just protected.
12389         * dependencyobject.h (class DependencyObject): generate a
12390         cbinding/pinvoke for SetLogicalParent.
12392         * cbinding.h, cbinding.cpp: regen.
12394 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12396         * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
12397         SelectionStart/Length.
12399 2009-01-30  Geoff Norton  <gnorton@novell.com>
12401         * runtime.cpp: Let managed code change the fullscreen state.
12402         * cbinding.cpp|h: Regenerate
12404 2009-01-30  Chris Toshok  <toshok@ximian.com>
12406         * xaml.cpp (dependency_object_set_property): remove the ugly
12407         assumption - we know if the property type is managed now.
12409 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12411         * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
12412         state rather than returning a changed mask. Also modified to treat
12413         selection.start as the cursor position when selection.length is
12414         0. Otherwise refer to the cursor state to figure out which end of
12415         the selection the cursor is at (for growing/shrinking).
12416         (TextBox::KeyPressFreeze): Reset 'emit' state.
12417         (TextBox::KeyPressThaw): Sync and then emit our changed events.
12418         (TextBox::OnPropertyChanged): Updated for ClearSelection() API
12419         change.
12420         (TextBox::ClearSelection): Now takes a 'start' argument to set
12421         SelectionStart to (e.g. cursor position).
12422         (TextBox::Select): Now longer needs to do a freeze/thaw.
12423         (TextBoxView::OnKeyDown): Updated.
12425 2009-01-30  Chris Toshok  <toshok@ximian.com>
12427         * control.h, control.cpp: same story with InsideObject.
12429 2009-01-30  Chris Toshok  <toshok@ximian.com>
12431         * control.h, control.cpp: remove Control::Render.  handling of the
12432         background property is left to a templatebinding in the visual
12433         tree of the applied template.
12435 2009-01-30  Chris Toshok  <toshok@ximian.com>
12437         * provider.cpp (StylePropertyValueProvider::SealStyle): call
12438         ProviderValueChanged on all values in the style so the object can
12439         do things with them.
12441         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
12442         a comment about SealStyle calling ProviderValueChanged.
12444 2009-01-30  Chris Toshok  <toshok@ximian.com>
12446         * xaml.cpp: when parsing multiple buffers (as we do when hydrating
12447         from a template), we need to keep track of the total offset from
12448         the start of all buffers, since XML_GetCurrentByteIndex returns a
12449         value with that range, it's not the byte index into the current
12450         buffer (unless there's only 1).  Fixes templates stored inside of
12451         other templates.
12453 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12455         * clock.cpp: no use stopping if it's already stopped
12457 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12459         * clock.cpp: reset the state flags as well
12461 2009-01-30  Larry Ewing  <lewing@novell.com>
12463         * text.cpp (TextBlock::Render): Start taking padding into account
12464         and limit the max size to actual not to the arranged value.
12466 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12468         * textbox.h (TextBox::GetCursor): Cursor position is aka
12469         selection.start.
12471         * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
12472         (TextBox::Thaw): Decrement freeze count and emit events when we
12473         reach 0.
12474         (TextBox::OnPropertyChanged): When SelectionStartProperty or
12475         SelectionLengthProperty change, call SyncSelectedText(). Fixed the
12476         selection.start/cursor positioning logic when TextProperty or
12477         SelectedTextProperty changes.
12478         (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
12479         methods.
12481 2009-01-30  Larry Ewing  <lewing@novell.com>
12483         * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
12484         computation.
12486 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12488         * frameworkelement.cpp: Make sure bounds_with_children is always
12489         initialized before being used.
12491 2009-01-30  Geoff Norton  <gnorton@novell.com>
12493         * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
12494         media.  Fixes the thumber moving on PDC player.
12496 2009-01-30  Jackson Harper  <jackson@ximian.com>
12498         * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
12499         about them being legal if they are equal.
12501 2009-01-30  Larry Ewing  <lewing@novell.com>
12503         * grid.cpp (Grid::ArrangeOverride): hack around spans in
12504         rebuilding the table until we understand them better.
12506 2009-01-30  Larry Ewing  <lewing@novell.com>
12508         * frameworkelement.cpp:
12509         * border.cpp:
12510         * control.cpp (Control::ArrangeOverride): use alignment properly
12511         in these places as well
12513 2009-01-30  Larry Ewing  <lewing@novell.com>
12515         * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
12516         the alignment here.
12518 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12520         * multiscaleimage.cpp: load png too
12522 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12524         * multiscaleimage.cpp: change the vporigin to relative coords
12526 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12528         * dependencyobject.cpp: EventObject::unref: don't try to get the
12529         typename if there's no deployment around.
12531         * pipeline.cpp: Media::Shutdown: set the current deployment before
12532         looping over each media.
12534 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12536         * deployment.cpp: Remove dead code.
12538 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12540         * downloader.cpp: Downloader::Write: update current deployment.
12542 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12544         * mp3.cpp:
12545         * audio.cpp:
12546         * pipeline.cpp:
12547         * mediaplayer.cpp:
12548         * audio-pulse.cpp:
12549         * mediaelement.cpp:
12550         * pipeline-asf.cpp:
12551         * mms-downloader.cpp:
12552         * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
12554 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12556         * deployment.cpp: Comment out log spammer.
12558         * runtime.cpp: Add some sanity checks.
12560         * dependencyobject.cpp: Set current deployment for delayed unrefs too.
12562 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12564         * deepzoomimagetilesource.cpp: normalize ViewportWidth
12566 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12568         * cbinding.cpp|h: Regenerated
12569         * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
12570         * rect.h: Add new ctor so the generator code can work
12572 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12574         * tilesource.h|cpp:
12575         * deepzoomimagetilesource.h|cpp:
12576         * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
12577         implement the DZ parser in native code.
12579 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12581         * mediaplayer.cpp: MediaPlayer: Set object type correctly.
12583 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12585         * deployment.cpp: Allow setting the current deployment to NULL.
12587 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12589         * mediaelement.cpp: Handle MediaElementStateIndividualizing and
12590         AcquiringLicense in all switch statements to fix gcc warnings.
12592 2009-01-30  Geoff Norton  <gnorton@novell.com>
12594         * debug.cpp: Use the proper headers here, we need them anyways.
12595         * window.h: Store the deployment we were created in.
12596         * window-gtk.cpp: Ensure we set our deployment before starting
12597         to call into our heirarchy.
12599 2009-01-30  Jb Evain  <jbevain@novell.com>
12601         * deployment.h: make Deployment::Surface DP internal.
12603 2009-01-29  Geoff Norton  <gnorton@novell.com>
12605         * deployment.h: Surface is now a DP on the deployment so we 
12606         can share it with managed.
12607         * dependencyproperty.g.cpp: Regen
12608         * clock.cpp: Get the surface of the Deployment we're in so that
12609         clocks from Dispatcher timer end up on the right surface.
12611 2009-01-29  Geoff Norton  <gnorton@novell.com>
12613         * deployment.cpp: Trust the domain over the TLS slot since mono
12614         will switch that on us on any thread really.
12616 2009-01-29  Geoff Norton  <gnorton@novell.com>
12618         * clock.cpp|h: Ensure that we set the correct deployment from the 
12619         clock ticks before traversing back into our heirarchy.
12621 2009-01-29  Jackson Harper  <jackson@ximian.com>
12623         * xaml.cpp: Add support for the primitive types in mscorlib.  This
12624         will get properly formed strings, doubles, and int32s working for
12625         now, we don't handle the oddities of the SL parsing properly yet
12626         though.
12628 2009-01-29  Jackson Harper  <jackson@ximian.com>
12630         * type-generated.cpp: regen
12632 2009-01-29  Larry Ewing  <lewing@novell.com>
12634         * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
12635         geometry.
12637         * grid.cpp: unref the dummy columns we create here.
12639 2009-01-29  Jeffrey Stedfast  <fejj@novell.com>
12641         * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
12643         * textbox.h: Shuffle some internal accessors/events around.
12645 2009-01-29  Larry Ewing  <lewing@novell.com>
12647         * text.cpp, text.h: implement basic layout size rules and strip
12648         the custom actual* properties.  Still a hack but passable for now.
12650         regenerate.
12652 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12654         * runtime.h:
12655         * runtime.cpp: Surface: Implement Dispose and call Dispose on the
12656         toplevel object. PaintToDrawable: Update current deployment.
12658 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12660         * uielement.cpp: Dispose: add a null-check, and only walk the visual
12661         tree if we haven't been disposed already.
12663 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12665         * namescope.h:
12666         * namescope.cpp: Namespace: Implement Dispose and remove all entries
12667         from our names hash table there.
12669 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12671         * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
12672         on upon destruction.
12674 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12676         * dependencyobject.h:
12677         * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
12678         Deployment::Current. Emit DestroyedEvent in Dispose instead of the
12679         dtor.
12681 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12683         * mediaelement.h:
12684         * mediaelement.cpp: Implement Dispose and put most of the cleanup there
12685         instead of in the dtor. media_element_advance_frame: we need to set
12686         the current deployment here.
12688 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12690         * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
12691         pre-chain. Set array's size to 0 after deleting all the values.
12693         * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
12694         one media thread per Media object, there's no need to set the current
12695         deployment for each work node, just set it at thread start.
12696         MediaClosure::SetContext: fix refcounting bug.
12698         * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
12700 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12702         * deployment.h:
12703         * deployment.cpp: Deployment: Enable support managed stackframes after
12704         initializing mono. Implement Dispose, and upon destruction set
12705         current application to NULL.
12707 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12709         * tilesource.h|cpp: image size is long
12711 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12713         * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
12715 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
12717         * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
12718         logical is [0,1],[0,1]
12720 2009-01-28  Larry Ewing  <lewing@novell.com>
12722         * frameworkelement.cpp (FrameworkElement::MeasureOverride): 
12723         it might help to actually measure things, so do that... *sigh*
12725 2009-01-28  Larry Ewing  <lewing@novell.com>
12727         * shape.cpp (Shape::ComputeStretchBounds): remove the old
12728         width/height short circuiting when one or the other of
12729         width/height was not set simply use the lyaout clip when it is
12730         around.  Might need a little more work but it is definitely
12731         needed.
12733 2009-01-28  Larry Ewing  <lewing@novell.com>
12735         * frameworkelement.cpp, frameworkelement.h: layout and arrange
12736         children if there are any.  set IsLayoutContainer to true if we
12737         have kids.
12739 2009-01-28  Larry Ewing  <lewing@novell.com>
12741         * frameworkelement.cpp (FrameworkElement::HitTest): move the
12742         majority of the hit test logic here.  Now we only walk the
12743         children once and we only call InsideObject when we must.
12744         InsideObject now only checks the local object subtree is handled
12745         in HitTest.
12747         * panel.cpp, panel.h:
12748         * control.cpp, control.h:
12749         * border.cpp, border.h:
12750         * text.cpp, text.h: remove the old HitTest and rework InsideObject
12751         for the new rule.
12753         * uielement.cpp: make InsideClip potentially a little faster.
12755 2009-01-28  Larry Ewing  <lewing@novell.com>
12756         
12757         * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
12758         on visibility.
12760         * control.cpp:
12761         * border.cpp:
12762         * canvas.cpp: skip invisible elements.
12764 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12766         * textbox.cpp (TextBoxView::Layout): We need to break the text
12767         apart by lines so that the TextLayout engine can handle them
12768         properly.
12770         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
12771         over to line->crlf for each LineBreak.
12772         (TextLayout::GetCursor): Need to keep track of the line-ending
12773         character sequences as well.
12775         * layout.h (TextRun::IsLineBreak): New method to check if the run
12776         represents a LineBreak, cleaner than manually checking for text ==
12777         NULL.
12778         (TextRun::ctor): LineBreak version now takes a crlf argument to
12779         specify which line ending sequence it is.
12781 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12783         * textbox.cpp (move_down): Fixed to handle any line-ending.
12784         (move_up): Same.
12785         (next_word): Same.
12786         (prev_word): Same.
12787         (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
12788         sequence.
12789         (TextBox::KeyPressDelete): Same.
12790         (TextBox::KeyPressHome): Same.
12791         (TextBox::KeyPressEnd): Same.
12792         (TextBox::KeyPressRight): Same.
12793         (TextBox::KeyPressLeft): Same.
12794         (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
12795         inserts a \r character, not a \n, nor a \r\n.
12797         * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
12798         formats too.
12799         (TextBlock::SetTextInternal): Canonicalize line endings in our
12800         temp buffer.
12802         * layout.cpp (TextRun::TextRun): Don't worry about line endings...
12804 2009-01-28  Jackson Harper  <jackson@ximian.com>
12806         * xaml.cpp: Fix logic for setting name and key on
12807         storyboards. Rules are:
12808             1. You can set both if you set the name before the key
12809             2. You can set both if both values are equal
12810         
12811 2009-01-28  Chris Toshok  <toshok@ximian.com>
12813         * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
12814         DependencyObjectCollection::AddedToCollection.
12815         (SetterBaseCollection::RemovedFromCollection): chain up to
12816         DependencyObjectCollection::RemovedFromCollection.
12818 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
12820         * dependencyproperty.g.cpp: Regenerated
12821         * enums.cpp|h: Add MediaElementState
12822         * playlist.cpp: Use new MediaElementState enum
12823         * mediaelement.cpp|h: Use new MediaElementState enum
12825 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12827         * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
12829 2009-01-27  Larry Ewing  <lewing@novell.com>
12831         * grid.cpp: limit the reduction in size to zero.
12833 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12835         * runtime.cpp:
12836         * dependencyobject.cpp: Fix building with object tracking.
12838 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12840         * debug.h: Surround logging macros with #if LOGGING instead of #if
12841         DEBUG.
12843 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12845         * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
12846         header, it's not used anywhere but in this file.
12848         * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
12849         configure time now.
12851 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
12853         * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
12854         ReadOnly status.
12855         (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
12857 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12859         * uielement.h: Make Dispose public.
12861 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12863         * codec-version.h.in:
12864         * dependencyobject.h:
12865         * dependencyobject.cpp: EventObject: Make the flags field an gint32
12866         field (to keep size consistent), put the flags at the upper bits and
12867         use the remaining lower bits for the object id. This requires a codec
12868         abi bump.
12870 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12872         * dependencyobject.cpp: Use bitfields correctly.
12874 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
12876         * text.cpp: FontFamily can be NULL so we can't just access its
12877         source field without a check. Fix SIGSEGV when running moon-unit.
12878         * value.cpp: FontFamily is not a (managed) struct so it can have
12879         a NULL value. Fix SIGSEGV when creating a Value out of a NULL
12880         FontFamily in moon-unit.
12882 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12884         * type.h:
12885         * type-generated.cpp: Regenerated.
12887 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12889         * type.h:
12890         * type.h.in:
12891         * cbinding.h:
12892         * cbinding.cpp:
12893         * type-generated.cpp: Regenerated.
12895 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12897         * audio.h:
12898         * audio.cpp:
12899         * audio-pulse.h:
12900         * audio-alsa.cpp:
12901         * audio-pulse.cpp: Don't register any audio threads, they may interact
12902         badly with the gc and deadlock. Audio threads shouldn't be doing
12903         anything which requires the current deployment to be set anyway.
12905 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12907         * pipeline.h:
12908         * pipeline.cpp: AudioStream: call SetObjectType.
12910 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12912         * dependencyobject.h:
12913         * dependencyobject.cpp: Add an EventObject ctor overload which takes a
12914         Type::Kind. In EventObject::ref don't warn about inexistent
12915         deployments for audio objects.
12917 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12919         * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
12921 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12923         * audio.h:
12924         * audio.cpp:
12925         * audio-pulse.h:
12926         * audio-alsa.cpp:
12927         * audio-pulse.cpp: Every AudioSource already has deployment set (since
12928         they inherit from EventObject), use that to set the current
12929         deployment.
12931 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12933         * src.mdp: Updated.
12935 2009-01-27  Chris Toshok  <toshok@ximian.com>
12937         * pipeline.cpp: include codec-version.h
12939         * pipeline-ui.cpp: same.
12941         * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
12942         here.
12944         * codec-version.h.in: new file.  update the
12945         MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
12947 2009-01-27  Larry Ewing  <lewing@novell.com>
12949         * mediaelement.cpp (MediaElement::MeasureOverride): correct
12950         argument order.
12952 2009-01-27  Larry Ewing  <lewing@novell.com>
12954         * frameworkelement.cpp, frameworkelement.h: move generic
12955         bounds_with_children computation here for now.  Make
12956         GetSubtreeBounds return bounds or bounds_with_children based on
12957         having children. Start setting the layout clip in arrange (it will
12958         probably move later).  Rework the layout_xform logic slightly.
12960         * uielement.cpp: remove the generic render warning, it is ok not
12961         to override here if there is nothing local you need to draw.  When
12962         intersecting bounds with the clip path take the layout clip into
12963         account too.
12964         
12965         * text.cpp: update for bounds changes.  Don't recompute the
12966         natural bounds every pass.
12968         * mediaelement.cpp, mediaelement.h:
12969         * media.cpp, media.h: rework arrange and measure to match shape.
12970         Remove overridden bounds logic since it is no longer needed. Only
12971         use the odd width/height setting logic when we aren're part of a
12972         layout tree. Use the layout clip when drawing.
12974         * shape.cpp: clean up the bounds logic. Use the layout clip when
12975         drawing.
12977         * control.cpp, control.h:
12978         * border.cpp, border.h: use the layout clip when rendering, remove
12979         overrides for bounds now that fe handles them.
12981         
12982 2009-01-27  Chris Toshok  <toshok@ximian.com>
12984         * Makefile.am (libmoon_include_headers): add fontfamily.h
12986         * fontfamily.h: add struct.
12987         
12988         * control.h, text.h: FontFamilyProperty is of type FontFamily now.
12990         * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
12991         string.
12993         * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
12994         unmarshaled bits.
12996         * value.h.in (struct Value): add FontFamily and guint32 cases.
12998         * xaml.cpp (value_from_str): add case for FONTFAMILY.
13000         * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
13002 2009-01-27  Geoff Norton  <gnorton@novell.com>
13004         * audio-pulse.cpp|h: Use the Deployment sourced from the player
13005         * dependencyobject.cpp: Fix the warning to not use triple not
13006         negative logic
13007         * deployment.cpp: If we find the deployment from the domain,
13008         put it in the tls slot to make future lookups use the fast-path.
13010 2009-01-27  Jeffrey Stedfast  <fejj@novell.com>
13012         * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
13013         events anymore. Instead of having a bool 'emit' flag, use
13014         something closer to gtk's freeze_count.
13015         (TextBox::OnKeyDown): Moved to TextBoxView.
13016         (TextBox::OnKeyUp): Same.
13017         (TextBox::SelectAll): Now returns bool to specify if the selection
13018         has changed.
13019         (TextBox::PreKeyPress): Freeze event emission for our state
13020         changes.
13021         (TextBox::PostKeyPress): Thaw them and emit the events.
13022         (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
13023         textbox->PreKeyPress() and after processing, call
13024         textbox->PostKeyPress().
13026 2009-01-27  Jackson Harper  <jackson@ximian.com>
13028         * value.cpp: unmarshall fonts properly.
13030 2009-01-27  Geoff Norton  <gnorton@novell.com>
13032         * dependencyobject.cpp|h:
13033         * mediaplayer.cpp: Remove the stupidity from my last commit.
13034         * audio.cpp: We're in the right thread and Deployment here, use
13035         Deployment::GetCurrent().
13037 2009-01-27  Geoff Norton  <gnorton@novell.com>
13039         * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
13040         the deployment on a EO.
13041         * deployment.cpp: Add some more logging.
13042         * mediaplayer.cpp: Inherit our Deployment from the MediaElement
13043         who owns us.
13045 2009-01-27  Geoff Norton  <gnorton@novell.com>
13047         * audio-alsa.cpp:
13048         * audio-pulse.cpp: Register the worker-thread's with mono and set our
13049         deployment correctly.
13050         * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
13051         around so that our audio-players can register the thread with mono.
13053 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13055         * pipeline.cpp: WorkerLoop: set the current deployment for every work
13056         item.
13058         * deployment.h:
13059         * deployment.cpp: Add RegisterThread.
13061 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13063         * deployment.cpp: Deployment: Add some logging, fix indentation and call
13064         the DependencyObject ctor which takes a Deployment instead of the
13065         default ctor.
13067 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13069         * dependencyobject.h:
13070         * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
13071         take a Deployment*, and an Initialize method which is called by both
13072         ctors of each type.
13074 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13076         * deployment.h: Initialize doesn't need cbinding/pinvoke.
13078 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13080         * debug.h: Add LOG_DEPLOYMENT.
13082         * runtime.h:
13083         * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
13084         runtime_init.
13086 2009-01-27  Geoff Norton  <gnorton@novell.com>
13088         * deployment.cpp|h: Lock our access to the hash.  Remove a SetCurrent()
13089         instance since its just sugar and cant be bound anyways.
13091 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13093         * dependencyobject.h:
13094         * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
13096 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13098         * dependencyobject.h:
13099         * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
13101 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13103         * collection.cpp: Collection::Dispose: Call base class Dispose too.
13105 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13107         * grid.h:
13108         * type.h:
13109         * text.h:
13110         * size.h:
13111         * popup.h:
13112         * shape.h:
13113         * value.h:
13114         * media.h:
13115         * error.h:
13116         * panel.h:
13117         * brush.h:
13118         * clock.h:
13119         * style.h:
13120         * stylus.h:
13121         * border.h:
13122         * canvas.h:
13123         * binding.h:
13124         * runtime.h:
13125         * trigger.h:
13126         * control.h:
13127         * textbox.h:
13128         * pipeline.h:
13129         * geometry.h:
13130         * template.h:
13131         * namescope.h:
13132         * uielement.h:
13133         * animation.h:
13134         * eventargs.h:
13135         * resources.h:
13136         * transform.h:
13137         * collection.h:
13138         * animation2.h:
13139         * downloader.h:
13140         * expression.h:
13141         * deployment.h:
13142         * tilesource.h:
13143         * bitmapimage.h:
13144         * usercontrol.h:
13145         * application.h:
13146         * mediaelement.h:
13147         * contentcontrol.h:
13148         * multiscaleimage.h:
13149         * dependencyobject.h:
13150         * type-generated.cpp:
13151         * frameworkelement.h:
13152         * multiscalesubimage.h:
13153         * deepzoomimagetilesource.h: Include all types derived from EventObject
13154         in the type system and remove the IncludeInKinds annotations from
13155         those classes.
13157 2009-01-27  Chris Toshok  <toshok@ximian.com>
13159         * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
13160         add the "XamlElementInstance* value" overload.  part of axelerate
13161         fix.
13162         (XamlElementInfoManaged::GetContentProperty): pass
13163         obj->AsDependencyObject() to GetContentPropertyName, instead of
13164         obj (which is a Value*).
13166 2009-01-26  Chris Toshok  <toshok@ximian.com>
13168         * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
13169         some behavior with x:Key/x:Name only happens when the element is a
13170         child of a ResourceDictionary.
13172 2009-01-26  Larry Ewing  <lewing@novell.com>
13174         * grid.cpp: rework proportional contribution of auto columns.
13176         * uielement.cpp: remove the slot logic from the transform here we
13177         will compute it in arrange.
13179 2009-01-26  Larry Ewing  <lewing@novell.com>
13181         * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
13182         bounds.
13184 2009-01-26  Geoff Norton  <gnorton@novell.com>
13186         * deployment.cpp: Cleanup our usage of hash a bit to avoid some
13187         senseless compare/branches.
13189 2009-01-26  Larry Ewing  <lewing@novell.com>
13191         * shape.cpp (Shape::Clip): hack back in shape clipping until the
13192         layout clip logic fixed.
13194 2009-01-26  Geoff Norton  <gnorton@novell.com>
13196         * deployment.cpp: Remove a useless null guard now that we have
13197         Deployment::Initialize.  Don't rudely nuke the TLS slot we might not
13198         own.
13200 2009-01-26  Geoff Norton  <gnorton@novell.com>
13202         * deployment.cpp|h:  Deployment now does all the domain book keeping
13203         for us, so that calls to GetCurrent will return the Deployment for 
13204         the appropriate context, it will also set the MonoDomain* appropriately
13205         where necessary.
13207 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13209         * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
13210         Removed.
13211         (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
13212         TextProperty from reentrancy.
13213         (TextBox::EmitSelectionChanged): Update the value before emitting
13214         the event, this way we don't need the dynamic provider.
13215         (TextBox::EmitTextChanged): Same.
13216         (TextBox::OnKeyDown): Handle key == GDK_Return.
13218 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13219         
13220         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
13221         to handle the TextProperty as well.
13222         (TextBox::TextBox): Init text_changed to false.
13223         (TextBox::EmitSelectionChanged): New helper method to set
13224         selection_changed to true and then emit the event.
13225         (TextBox::EmitTextChanged): Same idea.
13226         (TextBox::OnPropertyChanged): Use the new Emit helper methods.
13227         (TextBox::ClearSelection): Same.
13228         (TextBox::Select): Same.
13230 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13232         * animation.h: Change validators for TargetNameProperty and
13233         TargetNameProperty
13234         * dependencyproperty.g.cpp: Regenerated
13235         * validators.cpp|h: Add new IsTimelineValidator that check that
13236         the instance is derived from Timeline.
13238 2009-01-26  Larry Ewing  <lewing@novell.com>
13239         
13240         * border.cpp:
13241         * canvas.cpp:
13242         * dirty.cpp:
13243         * control.cpp, control.h:
13244         * frameworkelement.cpp, frameworkelement.h:
13245         * src/grid.cpp:
13246         * src/media.cpp:
13247         * src/mediaelement.cpp:
13248         * src/shape.cpp:
13249         * src/uielement.cpp:
13250         * src/usercontrol.h: Fix things to match the test results.  Still
13251         a few regressions in shapes.
13252         
13253 2009-01-26  Larry Ewing  <lewing@novell.com>
13255         * border.cpp (Border::MeasureOverride): 
13257 2009-01-26  Larry Ewing  <lewing@novell.com>
13259         * grid.cpp (Grid::MeasureOverride): handle out of bounds
13260         rows/columns the way the tests indicate.
13262 2009-01-24  Larry Ewing  <lewing@novell.com>
13264         * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
13266 2009-01-24  Larry Ewing  <lewing@novell.com>
13268         * uielement.h (class UIElement): add IsLayoutContainer () to test
13269         if a given element wants to do the layout dance.  Hopefully this
13270         can be removed once the logic is more clear.
13272         * panel.h:
13273         * canvas.h:
13274         * border.h:
13275         * usercontrol.h: add IsLayoutContainer values.
13276         
13277 2009-01-26  Larry Ewing  <lewing@novell.com>
13279         * frameworkelement.cpp: tests show some really crazy behavior in
13280         the short circuit case, try to emulate that.
13282 2009-01-26  Larry Ewing  <lewing@novell.com>    
13284         * frameworkelement.cpp (FrameworkElement::Measure): remove the
13285         short circuit.
13287         * media.cpp: fix rendering.
13289 2009-01-26  Larry Ewing  <lewing@novell.com>
13290         
13291         * control.cpp: 
13292         * border.cpp: Try to get alignment working visually.
13294         * frameworkelement.cpp: hack the needed behavior in until I
13295         understand the problem better.
13297         * mediaelement.cpp, mediaelement.h:
13298         * media.cpp: use the layout values in stretching
13300 2009-01-26  Larry Ewing  <lewing@novell.com>
13302         * frameworkelement.cpp:
13303         * shape.cpp:
13304         * media.cpp:
13305         * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
13306         new methods.
13308 2009-01-26  Larry Ewing  <lewing@novell.com>
13310         * media.h:
13311         * media.cpp: add bounds logic.
13313         * dirty.cpp:
13314         * control.cpp:
13315         * canvas.cpp:
13316         * border.cpp: start trying to deal with
13317         alignment.
13319         * frameworkelement.cpp: compute the layout_xform.
13320         
13321         * uielement.cpp, uielement.h: add layout_xform and use it.
13322         
13323         * shape.cpp: try something else in measure.
13325         * size.h: add == and != overrides.
13327 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13329         * brush.cpp (VisualBrush::SetupBrush): Updated.
13331         * uielement.cpp (UIElement::Render): Render our subtree in the
13332         Region* version of this method and get rid of the old x,y,w,h
13333         version.
13335         * text.cpp (TextBlock::Render): Override the Render() that takes a
13336         Region.
13337         (Glyphs::Render): Same.
13339         * textbox.cpp (TextBoxView::Render): Same.
13341         * shape.cpp (Shape::Render): Here too.
13343 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13345         * src.mdp: Update.
13347 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13349         * type.cpp: Revert r124497.
13351 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13353         * transform.cpp: Add comment about a difference between SL2/ML 
13354         in caching/computing the resulting matrix value (exposed in SL2) 
13355         of a TransformGroup
13357 2009-01-26  Jackson Harper  <jackson@ximian.com>
13359         * xaml.cpp: Move this check into a function since it will be used
13360         in a few places.
13362 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13364         * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
13366 2009-01-26  Chris Toshok  <toshok@ximian.com>
13368         * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
13369         binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
13370         canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
13371         contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
13372         dependencyobject.[cpp,h], dependencyproperty.h,
13373         deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
13374         eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
13375         geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
13376         mediaelement.[cpp,h], multiscaleimage.[cpp,h],
13377         multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
13378         popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
13379         size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
13380         text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
13381         trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
13382         usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
13383         files, and remove GetObjectType - call SetObjectType instead.  Add
13384         @IncludeInKinds everywhere on types we want in the Kinds array -
13385         nothing is implicit now.  Also, add @SkipValue on types that
13386         shouldn't automatically appear in the Value struct (As* method,
13387         etc).
13389         * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
13390         but also call SetSubtreeObject at the right times (basically
13391         whenever our subtree object changes).
13393         * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
13394         too.  also, rework the control template application step - don't
13395         cache the tree and duplicate it.  just reparse.  hook up template
13396         bindings properly as well.  with this change buttons are starting
13397         to look right.
13399         * type.cpp: total_event_count = my_events +
13400         parent->total_event_count, so if my_events == 0...
13401         
13402         * xaml.cpp (start_element): reverse the subclass check.
13404         * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
13406         * Makefile.am: add expression.cpp, and there's no need for
13407         separate file lists anymore.
13409 2009-01-25  Chris Toshok  <toshok@ximian.com>
13411         * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
13412         this registers a custom property.  Fixes moon-unit failures.
13413         
13414 2009-01-25  Chris Toshok  <toshok@ximian.com>
13416         * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
13417         moon-unit crash.
13419 2009-01-25  Chris Toshok  <toshok@ximian.com>
13421         * xaml.cpp: mostly just remove the NULL's we were passing to the
13422         various DependencyObject methods that used to require an
13423         additional_types arg.
13424         (dependency_object_set_attributes): one important fix here - force
13425         the loader to do the SetValue if the type is URI, or if the type
13426         of the object itself is a custom type.  Also, if we've converted
13427         the string to a valid value already, don't pass a string to the
13428         loader - this keeps us from passing "{Binding foo...}" to the
13429         loader to setvalue on a databound property.  This does uncover a
13430         failing in our managed code, though, that there's no way to deal
13431         with the unmanaged BindingExpression from managed code.
13433         * application.cpp, application.h: instead of having a
13434         MonoDomain->Application mapping, we now have a
13435         MonoDomain->Deployment mapping, so Application::GetCurrent maps to
13436         Deployment::GetCurrent()->GetCurrentApplication().
13437         
13438         * deployment.cpp, deployment.h: flesh out Deployment, along with
13439         the MonoDomain->Deployment mapping.  Also add a per-deployment
13440         Types* object, so we can look them up anywhere in the engine
13441         without having to rely on the managed layer passing
13442         additional_types.
13443         
13444         * type.h.in, type.cpp: remove additional_types from all the apis.
13445         the currently registered custom types are always available from
13446         the Current deployment, which Type::Find uses.  Also, add
13447         IsCustomType which lets us check if a type is one of our special
13448         built-in types, or if it's one that's been registered dynamically.
13450         * value.h.in, value.cpp: remove additional_types.
13452         * dependencyproperty.h, dependencyproperty.cpp: remove
13453         additional_types.
13455         * dependencyobject.h, dependencyobject.cpp: remove
13456         additional_types.
13458         * uielement.h: add cbindings/pinvokes for ElementAdded and
13459         ElementRemoved.
13461         * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
13462         managed now.
13463         
13464         * Makefile.am: remove contentpresenter.{h,cpp}
13466         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
13467         regen.
13469 2009-01-25  Sebastien Pouliot  <sebastien@ximian.com>
13471         * cbinding.cpp|h: Regenerated
13472         * transform.cpp|h: Add GetMatrix (w/bindings).
13474 2009-01-23  Geoff Norton  <gnorton@novell.com>
13476         * xaml.cpp:  This is case-insensitive here too.
13478 2009-01-23  Geoff Norton  <gnorton@novell.com>
13480         * dependencyobject.cpp:  Avoid a SIGSEGV if the parent_scope is null.
13482 2009-01-23  Jeffrey Stedfast  <fejj@novell.com>
13484         * utils.cpp (managed_stream_read_func): Fixed to do as intended.
13485         (managed_stream_write_func): Same.
13487         * textbox.cpp (next_word): Implemented.
13488         (prev_word): Implemented.
13490 2009-01-23  Andreia Gaita  <avidigal@novell.com>
13492         * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
13493         list in case the dispatcher gets destroyed before they are processed.
13495 2009-01-23  Geoff Norton  <gnorton@novell.com>
13497         * utils.cpp: Remove some g_error and handle ridiculously large
13498         zip files to appease glib.
13500 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13502         * dependencyproperty.g.cpp: regenerated
13503         * brush.h: Set default values for RadialGradientTransform points
13505 2009-01-23  Stephane Delcroix  <sdelcroix@novell.com>
13507         * multiscaleimage.cpp: add a bool so render knows if it was
13508         invalidated locally or not, and should keep rendering the upper
13509         layers or restart from the bottom.
13511 2009-01-23  Geoff Norton  <gnorton@novell.com>
13513         * pipeline.h: Move ManagedStreamCallbacks to utils so other things
13514         can use them
13515         * utils.cpp|h: Implement a minizip io-style wrapper around
13516         ManagedStreamCallbacks so that we can unzip from / to managed Stream's. 
13518 2009-01-23  Stephane delcroix  <sdelcroix@novell.com>
13520         * multiscaleimage.cpp: no longer crash on null uri
13522 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13524         * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
13525         to be valid (xml-wise) but not a DO (e.g. a Color).
13527 2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13529         * src.mdp: Added new files.
13531 2009-01-22  Chris Toshok  <toshok@ximian.com>
13533         * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
13534         .cpp, and call SetDefaultStyleKey to get that working.
13536 2009-01-22  Chris Toshok  <toshok@ximian.com>
13538         [ fixes to get http://www.life-silverlight.com/ to come up with
13539         exceptions ]
13541         * enums.cpp (initialize_enums): add a mapping for the property
13542         VerticaalContentAlignment using the vertical_alignment_map.
13544         * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
13545         file.  Also, call SetSurface in SetVisualParent, so things like
13546         controls templates get the right surface assigned to them (they
13547         have no logical parent, only a visual one.)
13549         * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
13550         other template stuff - create a temp namescope here.  it won't be
13551         merged, so nothing to worry about.  Also, don't call
13552         PrepareContentPresenter here.  do it after we look up text and
13553         root in OnApplyTemplate.
13554         (ContentPresenter::OnApplyTemplate): prepare the content
13555         presenter.
13557 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13559         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13560         Clean up the goto.
13561         (ContentPresenter::OnLoaded): Only unref the template if it isn't
13562         null.
13564         * contentpresenter.h (ContentPresenter::GetElementRoot):
13565         Implemented temporary binding hack.
13567         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13568         Implemented.
13569         (ContentPresenter::OnPropertyChanged): Call
13570         PrepareContentPresenter() instead of ApplyTemplate().
13571         (ContentPresenter::OnApplyTemplate): Implemented.
13573 2009-01-22  Chris Toshok  <toshok@ximian.com>
13575         * application.h, application.cpp: make surface a per-application
13576         thing, and add GetSurface/SetSurface.
13578         * cbinding.h, cbinding.cpp: regen.
13580 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13582         * contentcontrol.cpp (ContentControl::ContentControl): I'm
13583         guessing this needs to call SetDefaultStyleKey as well.
13585         * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
13586         because that causes problems (the TextBox already has a logical
13587         parent). Instead, we'll just keep track of it internally
13588         ourselves.
13589         (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
13590         when the TextBox property changed.
13592         * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
13593         the default style key.
13594         (ContentPresenter::OnLoaded): Load the default template.
13596         * contentpresenter.cpp|h: New source files. Subclass Control even
13597         though in managed-land, we technically subclass
13598         FrameworkElement. This way we can take advantage of Control's
13599         template logic.
13601 2009-01-22  Chris Toshok  <toshok@ximian.com>
13603         * xaml.cpp (dependency_object_set_attributes): commit jackson's
13604         patch (with one slight modification) so everyone can have the
13605         wonderful world of non-broken setters.
13607 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13609         * dependencyobject.h:
13610         * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
13611         around object counters (we define DEBUG always anyways, and the
13612         counters are always useful).
13614 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13616         * dependencyobject.cpp: Protect objects_alive with a mutex.
13618 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13620         * dependencyobject.h:
13621         * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
13622         any use.
13624 2009-01-22 Stephane delcroix  <sdelcroix@novell.com>
13626         * tilesource.h:
13627         * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
13628         first time it's needed.
13630 2009-01-21  Geoff Norton  <gnorton@novell.com>
13632         * application.cpp: If we're set to NULL remove the application 
13633         from the hash table.
13635 2009-01-21  Geoff Norton  <gnorton@novell.com>
13637         * Makefile.am: Add bitmapimage.cpp to the build
13638         * application.cpp|h: Add a new callback into Application to
13639         return a resource stream.
13640         * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
13641         a managed resource stream and make this all native.
13642         * brush.cpp|h: Brush.ImageSource is now a BitmapImage
13643         * media.cpp|h: Image.Source is now a BitmapImage
13644         * xaml.cpp: BitmapImage can be constructed from a string in xaml
13645         * cbinding.cpp|h:
13646         * dependencyproperty.g.cpp: Regenerate
13648 2009-01-21  Larry Ewing  <lewing@novell.com>
13650         * grid.cpp (Grid::MeasureOverride): rework the incremental
13651         contribution logic.
13653 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
13655         * contentcontrol.cpp (ContentControl::OnPropertyChanged):
13656         Implemented by calling ApplyTemplate() when ContentTemplate or
13657         Content properties change.
13658         (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
13659         when the content changes.
13661 2009-01-21  Larry Ewing  <lewing@novell.com>
13663         * grid.cpp: store measurement info in the row and column
13664         definitions and don't allocate the arrays.
13666 2009-01-21  Larry Ewing  <lewing@novell.com>
13668         * grid.cpp, grid.h:  Hack things to handle missing row
13669         definitions and clean up some old errors.
13671 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
13673         * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
13674         rather than SetContent() since SetContent() has been removed.
13675         * contentcontrol.h (class ContentControl): Updated a bit, we're
13676         going to actually use this unmanaged class now.
13677         (class ContentControl): Set PropertyType for ContentProperty to
13678         'object' and get rid of the generated accessors.
13680 2009-01-21  Jackson Harper  <jackson@ximian.com>
13682         * dependencyobject.cpp|h: When setting values, unmarshal values
13683         first.
13684         * value.h|cpp: Add unmarshal function so we can convert types
13685         coming from managed.
13686         * type.h:
13687         * cbinding.cpp|h:
13688         * type-generated.cpp: Regenerated.
13689         
13690 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
13692         * dependencyproperty.g.cpp: Regenerated
13693         * text.cpp|h: Revert earlier change as it "turns black" too many
13694         things. DRT #47 will fail until I find the right fix :(
13696 2009-01-21  Larry Ewing  <lewing@novell.com>
13698         * grid.cpp (Grid::ArrangeOverride): make the basic cases work
13699         correctly.
13701 2009-01-21  Alan McGovern  <amcgovern@novell.com>
13703         * popup.cpp: Remove debug code from svn.
13705 2009-01-21  Alan McGovern  <amcgovern@novell.com>
13707         * popup.h:
13708         * popup.cpp:
13709         * cbinding.h:
13710         * Makefile.am:
13711         * cbinding.cpp:
13712         * type-generated.cpp: Initial attempt at trying to get Popup.Child
13713         rendering.
13715 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
13717         * dependencyproperty.g.cpp: Regenerated
13718         * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
13719         ctor initialized value. This means that GetLocalValue won't return
13720         null for this property, which makes it behave correctly for SL1/JS
13721         applications.
13722         [Fix DRT#47 failing since r123884]
13724 2009-01-20  Chris Toshok  <toshok@ximian.com>
13726         * application.h, application.cpp: switch from using a static
13727         Application* for "Current" to a hashtable mapping MonoDomain* to
13728         Application*.
13730 2009-01-20  Jackson Harper  <jackson@ximian.com>
13732         * xaml.cpp: Lookup resources in Application.Resources if we don't
13733         find the resource in the tree.
13735 2009-01-20  Chris Toshok  <toshok@ximian.com>
13737         * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
13738         cbinding.cpp: regen.
13740         * Makefile.am (libmoon_include_headers): add application.h
13741         (libmoon_la_SOURCES): add application.cpp
13743         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
13744         if the style was set, call Application::ApplyStyle -- doesn't
13745         actually *apply* the style, it just converts the values.
13747         * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
13748         the ConvertedValueProperty after the setter is sealed.
13750         * style.h (class Setter): add ConvertedValueProperty.
13752         * textbox.h (class TextBox): remove @CallInitialize.
13754         * textbox.cpp (TextBox::TextBox): i hate the way this is
13755         expressed (we need a ManagedTypeInfo ctor/dtor), but set
13756         DefaultStyleKey here instead of in managed land.
13758         * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
13759         return the converted property value, not the original (which may
13760         have been a string.)
13761         (StylePropertyValueProvider::SealStyle): only put setters in the
13762         hash if their converted value is non-null.
13764         * control.h (class Control): generate accessors for
13765         DefaultStyleKey.
13767         * control.cpp (Control::OnLoaded): do the default style
13768         application here.
13769         (Control::ApplyTemplate): output a little spew so we
13770         can tell if we're applying a template.
13772         * application.h, application.cpp: move Application here, and make
13773         it a full DO subclass.  It no longer maps to the managed
13774         ApplicationInternal.
13776         * deployment.h: remove Application from here.
13778 2009-01-20  Jackson Harper  <jackson@ximian.com>
13780         * xaml.cpp: When we create templates make sure we track the
13781         template ourself, we can't rely on the ControlTemplate still
13782         having a surface when it is applied.
13784 2009-01-20  Jeffrey Stedfast  <fejj@novell.com>
13786         * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
13787         (Keyboard::OnKeyRelease): Same.
13789 2009-01-20  Jackson Harper  <jackson@ximian.com>
13791         * clock.h: Set namespace for Duration and RepeatBehavior
13793 2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>
13795         * dependencyproperty.g.cpp: Regenerated
13796         * uielement.h: Re-apply default value for RenderTransformProperty
13798 2009-01-19  Larry Ewing  <lewing@novell.com>
13800         * runtime.cpp:
13801         * window.h:
13802         * window-gtk.cpp, window-gtk.h: clean up the set background
13803         clearing logic and make it general.
13805 2009-01-19  Larry Ewing  <lewing@novell.com>
13807         * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
13808         window to white by default.
13810 2009-01-19  Larry Ewing  <lewing@novell.com>
13811         
13812         * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
13813         implementing arrangeoverride.
13815 2009-01-19  Larry Ewing  <lewing@novell.com>
13817         * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
13818         screen message too.
13820 2009-01-19  Jackson Harper  <jackson@ximian.com>
13822         * uri.h:
13823         * binding.h: Get kinds generated for these guys.
13824         * type.h:
13825         * type-generated.cpp: updated
13826         
13827 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13829         * src.mdp: Update.
13831 2009-01-19  Jackson Harper  <jackson@ximian.com>
13833         * grid.h: GridLength lives in System.Windows.
13835 2009-01-19  Jackson Harper  <jackson@ximian.com>
13837         * color.h: Colours are in System.Windows.Media.
13839 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13841         * pipeline.h: Instead of overriding GetTypeName for media clases
13842         override GetObjectType so that the generator puts these classes into
13843         our type system. This will fix a lot of the "event not registered"
13844         warnings.
13846         * type.h:
13847         * value.h:
13848         * type-generated.cpp: Regenerated.
13850 2009-01-19  Alan McGovern  <amcgovern@novell.com>
13852         * type.h:
13853         * src.mdp:
13854         * popup.h:
13855         * value.h:
13856         * popup.cpp:
13857         * cbinding.h:
13858         * cbinding.cpp:
13859         * type-generated.cpp:
13860         * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
13862 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13864         * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
13865         Add support for 'unsigned X' types (used in src/asf/).
13867 2009-01-18  Geoff Norton  <gnorton@novell.com>
13869         * xaml.cpp: Only unref the surface if it exists.
13871 2009-01-18  Geoff Norton  <gnorton@novell.com>
13873         * dependencyobject.cpp:  Ensure that the parent scope registration
13874         behavior is only applied to UserControl's.
13876 2009-01-18  Geoff Norton  <gnorton@novell.com>
13878         * xaml.cpp: Only ref the surface if it exists.
13880 2009-01-18  Larry Ewing  <lewing@novell.com>
13882         * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
13884         * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
13885         arrange method for now.
13887 2009-01-18  Larry Ewing  <lewing@novell.com>
13889         * control.cpp: update invaliate/measure to look more like border
13890         (still wrong) and remove some debug spew.
13892 2009-01-18  Sebastien Pouliot  <sebastien@ximian.com>
13894         * cbinding.h|cpp, type.h, value.h: Regenerated
13895         * transform.h: Add UnmanagedMatrix (which is a DO accessible to
13896         managed code) and a new method to get the address of the matrix
13897         elements.
13898         * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
13900 2009-01-17  Larry Ewing  <lewing@novell.com>
13902         * canvas.cpp (Canvas::MeasureOverride): 
13903         * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
13905 2009-01-17  Jackson Harper  <jackson@ximian.com>
13907         * xaml.cpp: Dont create items for property elements. The element
13908         name for property elements can be an abstract type.
13910 2009-01-17  Jackson Harper  <jackson@ximian.com>
13912         * xaml.cpp: Don't try to set properties that are collections,
13913         they've already had the items added in add_child.
13915 2009-01-17  Jackson Harper  <jackson@ximian.com>
13917         * xaml.cpp|h: Change CreateObject to LookupObject and give it a
13918         flag for actually creating the object. This allows us to verify
13919         the type on hydrated elements without creating another instance
13920         and prevents a circular dependency when elements load themself in
13921         their LoadComponent xaml.
13923 2009-01-17  Geoff Norton  <gnorton@novell.com>
13925         * dependencyobject.cpp:  A custom UserControl has a local namescope
13926         but also needs to be locatable in its parent namescope.
13928 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13930         * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
13931         different font size (not that TextBox really needs that since all
13932         runs will be the same exact font).
13934         * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
13935         to update the cursor rect.
13936         (TextBoxView::Layout): Update the cursor after we finish laying
13937         the text out.
13938         (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
13939         (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
13940         maxlen.
13942 2009-01-16  Jackson Harper  <jackson@ximian.com>
13944         * xaml.cpp: NULL is OK if it's being explicitly set.
13946 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13948         * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
13949         cursor region and the new cursor region.
13950         (TextBoxView::Paint): Paint the cursor as well.
13952         * layout.cpp (Layout::GetCursor): Implemented.
13954 2009-01-16  Larry Ewing  <lewing@novell.com>
13956         * frameworkelement.cpp (FrameworkElement::MeasureOverride):
13957         fix typo.
13958         
13959         * panel.cpp, panel.h: remove arrange override and make measure
13960         override return (0,0) always.
13961         
13962 2009-01-16  Larry Ewing  <lewing@novell.com>
13964         * panel.cpp: Make ArrangeOverride and MeasureOverride do something
13965         closer to the right thing.
13967 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13969         * textbox.cpp (TextBox::ArrangeOverride): Removed.
13970         (TextBox::Background) needs to return NULL if not selected mode -
13971         we don't want to be redrawing the normal bg.
13973 2009-01-16  Geoff Norton  <gnorton@novell.com>
13975         * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
13976         we're going to keep it alive to apply control templates.
13978 2009-01-16  Geoff Norton  <gnorton@novell.com>
13980         * template.cpp: Add the namescope to the closure to avoid
13981         referencing random memory.
13982         * xaml.cpp: We create a new XamlLoader when applying control 
13983         templates, and inherit the callbacks.  Set vm_loaded to true in
13984         this case.
13986 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
13988         * textbox.cpp (TextBox::TextBox): Don't init the selection
13989         brushes, they must come from the style.
13991 2009-01-16  Larry Ewing  <lewing@novell.com>
13993         * border.cpp, border.h:
13994         * uielement.cpp, uielement.h:
13995         * panel.cpp, panel.h:
13996         * canvas.cpp, canvas.h:
13997         * control.cpp, control.h:  Remove GetTransformFor completely, use
13998         the layout slot x/y when computing the local transform,
13999         invalidatemeasure (for now) when updating the tranform.
14001         * dirty.cpp: hack in the intial Left/Top stuff until we can clean
14002         up the logic here.
14004 2009-01-16  Larry Ewing  <lewing@novell.com>
14006         * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
14007         unless stretch is specified.
14009 2009-01-16  Geoff Norton  <gnorton@novell.com>
14011         * mediaelement.h: The MediaElement.Source is a Uri on the managed
14012         side.
14014 2009-01-16  Jackson Harper  <jackson@ximian.com>
14016         * xaml.cpp: FindTypeName type names dont' always have a
14017         namespace/assembly.
14018         - Special case Application and don't try to find it's name since
14019         it is renamed in the managed code. (Need to figure out a better
14020         solution here).
14021         - Pass in NULL for setting propertys and let the underlying types
14022         determine whether or not that is an error.
14024 2009-01-16  Jackson Harper  <jackson@ximian.com>
14026         * xaml.cpp: Before going to managed to create an element, scan the
14027         xnamespace for the x:Class attribute and pass that in as the
14028         element name if we have one, this allows you to use abstract names
14029         for the elements as long as the x:Class is a complete type. Should
14030         also allow us to optimize out a trip into managed.
14032 2009-01-16  Jackson Harper  <jackson@ximian.com>
14034         * xaml.cpp: The xaml context needs to store the callbacks so that
14035         we can properly invoke managed code in a template.
14037 2009-01-16  Jackson Harper  <jackson@ximian.com>
14039         * dependencyproperty.cpp: This warning isn't really needed and now
14040         with managed DP lookup's, this scenario happens about a trillion
14041         times during parsing of generic.xaml.
14043 2009-01-16  Larry Ewing  <lewing@novell.com>
14045         * uielement.h (class UIElement): remove the default value from
14046         RenderTransformProperty until the bugs it introduces are resolved.
14048         * dependencyproperty.g.cpp:Regenerated.
14050 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14052         * dependencyproperty.g.cpp: Regenerated
14053         * grid.h: Add default values for [Column|Row]Definition Width
14054         and Height
14055         * xaml.cpp: Fix most cases (except empty) of GridLength
14057 2009-01-15  Geoff Norton  <gnorton@novell.com>
14059         * downloader.cpp|h: Add downloader_response_abort.
14061 2009-01-15  Jackson Harper  <jackson@ximian.com>
14063         * xaml.cpp|h: We need to pass a pointer to the elements parent
14064         object to managed code, this is so we can look up a Setter's
14065         Style.
14066         - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
14067         
14068 2009-01-15  Jackson Harper  <jackson@ximian.com>
14070         * dependencyproperty.cpp: Patch mostly by rolf. Allows property
14071         lookup to work on custom types that subclass custom types.
14072         * template.cpp: Now that templates work pretty well, lets reduce
14073         the spam a bit.
14075 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14077         * dependencyproperty.g.cpp: Regenerated to include the specified 
14078         type (and not the implied one from the default value)
14079         * uielement.h: RenderTransformProperty defaults to a empty (identity)
14080         MatrixTransform
14082 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
14084         * textbox.cpp: Removed default_*[fore,back]ground() functions as
14085         well as textbox_shutdown() since they are no longer needed.
14086         (TextBox::TextBox): Initialize the default SelectionBackground and
14087         SelectionForeground brushes.
14089         * layout.h (struct TextSelection): Removed brushes from
14090         TextSelection struct.
14092 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
14094         * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
14095         Cannot compare a guint64 with -1, presuming the comparison was
14096         meant to be against TimeSpan_FromPTS (position) instead.
14098         * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
14099         instead of SelectionChangedEventArgs.
14101         * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
14102         ctor that takes a source.
14104         * textbox.h (class SelectionChangedEventArgs): Removed, this type
14105         of EventArgs is not actually emitted by TextBox as I had
14106         originally thought. TextBox's SelectionChanged event uses
14107         RoutedEventArgs.
14109 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14111         * type-generated.cpp:
14112         * dependencyproperty.g.cpp: Regenerated.
14114         * mediaelement.h:
14115         * mediaelement.cpp: Inherit directly from FrameworkElement instead of
14116         MediaBase. This requires copying some code from MediaBase into
14117         MediaElement (which at some later stage would move into Media).
14119 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14121         * cbinding.h:
14122         * cbinding.cpp: Regenerated.
14124         * type.h:
14125         * type.cpp:
14126         * type.h.in:
14127         * type-generated.cpp:
14128         * dependencyproperty.h:
14129         * dependencyproperty.cpp: Add support for looking up custom dependency
14130         properties by name.
14132 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14134         * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
14135         Add comment on value_from_str_with_typename to update NativeMethods.cs
14137 2009-01-15  Larry Ewing  <lewing@novell.com>
14139         * panel.cpp:
14140         * border.cpp:
14141         * control.cpp:
14142         * frameworkelement.cpp: start taking layout slot into account when
14143         computing bounds.
14145 2009-01-15  Jackson Harper  <jackson@ximian.com>
14147         * xaml.cpp: Storyboard are allowed to have an x:Name and an
14148         x:Key. This is for backwards compatibility because SL1 didn't have
14149         x:Key. It's also stupid.
14151 2009-01-15  Jackson Harper  <jackson@ximian.com>
14153         * xaml.cpp: Add a fake element to templates with all the imported
14154         namespaces. This allows all the namespaces imported in the main
14155         source to work in the template.
14157 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14159         * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
14160         re-layout.
14161         (TextBoxView::Layout): Build the text runs based on the selection.
14162         (TextBoxView::Paint): Updated to no longer pass the selection
14163         state to the layout engine.
14165         * layout.h (class ITextSource): Added a Background() accessor and
14166         changed the Foreground() accessor to take a bool selected
14167         argument.
14169         * layout.cpp (RenderSegment): Render the background if non-NULL.
14170         (TextRun::TextRun): Now takes a 'selected' state.
14171         (TextLayout::Render): No longer takes selection or cursor
14172         arguments.
14174 2009-01-14  Jackson Harper  <jackson@ximian.com>
14176         * xaml.cpp: Fix x:Null handling.
14178 2009-01-14 Sebastien Pouliot  <sebastien@ximian.com> 
14180         * brush.h: Add default values used by some brushes
14181         * dependencyproperty.g.cpp: Regenerated
14183 2009-01-14  Larry Ewing  <lewing@novell.com>
14185         * panel.cpp (Panel::GetTransformFor): override gettransformfor for
14186         now.
14188 2009-01-14  Jackson Harper  <jackson@ximian.com>
14190         * xaml.cpp: Add the namespaces to the xaml context.
14192 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14194         * textbox.cpp (TextBox::CursorBackSpace): Implemented.
14195         (TextBox::CursorDelete): Implemented.
14197         * layout.cpp (RenderSegment): Split out from RenderLine().
14199 2009-01-14  Jackson Harper  <jackson@ximian.com>
14201         * xaml.cpp: Apparently there is a new NULL on the block.  Use
14202         SetIsNull instead of a NULL Value* now.
14204 2009-01-14  Jackson Harper  <jackson@ximian.com>
14206         * template.cpp: initialize xaml_context. (fixes shutdown crash)
14208 2009-01-14  Jackson Harper  <jackson@ximian.com>
14210         * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
14211         these before my last patch.
14213 2009-01-14  Jackson Harper  <jackson@ximian.com>
14215         * xaml.cpp: Styles use their TargetType as their
14216         ResourceDictionary key.
14217         - Handle the new type MANAGEDTYPEINFO by allowing the managed code
14218         to parse it.
14219         * value.cpp|h|.h.in:
14220         * type.h|h.in: New type, ManagedTypeInfo. Contains info for
14221         loading managed types.
14222         * style.h:
14223         * control.h:
14224         * template.h: Use ManagedTypeInfo when we have a System.Type on
14225         the managed side.
14226         * dependencyproperty.g.cpp:
14227         * typegenerated.cpp: Regen
14229 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14231         * textbox.cpp: More fixes for cursor movement & keyboard selection.
14233 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com> 
14235         * grid.cpp (MeasureOverride): Free allocated arrays
14237 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com>
14239         * grid.cpp: Add a bunch of NULL checks for width and height to avoid
14240         crashes when running the SDK controls unit tests.
14242 2009-01-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14244         * dependencyobject.cpp: Fix
14245         media/video/test-reset-media-element-source.html.
14247 2009-01-14  Alan McGovern  <amcgovern@novell.com>
14249         * enums.cpp: Control.HorizontalContentAlignment should map to the
14250         HorizontalAlignment enum.
14252 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14254         * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
14255         changed.
14257 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14259         * deepzoomtilesource.h: mark it with CallInitialize
14261 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14263         * tilesource.h|cpp: autogenerate the cbinding
14265         * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
14266         managed side for xml parsing.
14268 2009-01-13  Chris Toshok  <toshok@ximian.com>
14270         * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
14271         message
14272         (XamlLoader::CreateFromStringWithError): same.
14273         (XamlLoader::HydrateFromStringWithError): same.
14274         (~XamlLoader): unref the error_args.
14275         (XamlLoader::HydrateFromString): no need to ref the object again
14276         here if it was passed in.
14278 2009-01-13  Larry Ewing  <lewing@novell.com>
14280         * uielement.cpp, uielement.h (class LayoutInformation): add
14281         LayoutInformation class to hold the layout related attached
14282         properties. (will move it later).
14284         * frameworkelement.cpp: use the new layout information and use it
14285         for invalidation.
14287         * border.cpp: fix the arrange logic.
14289 2009-01-13  Larry Ewing  <lewing@novell.com>
14290         
14291         * shape.cpp: switch over to using the computed values for stretch.
14293         * frameworkelement.cpp:
14294         * uielement.cpp: 
14295         * dirty.cpp, dirty.h:  Try to get invalidation logic close to
14296         correct.
14298 2009-01-13  Larry Ewing  <lewing@novell.com>
14300         * shape.cpp: treat rect and ellipse like normal framework elements.
14301         
14302 2009-01-13  Larry Ewing  <lewing@novell.com>
14304         * frameworkelement.cpp:
14305         * control.cpp:
14306         * canvas.cpp:
14307         * media.cpp: 
14308         * mediaelement.cpp: 
14309         * panel.cpp: Use the layout values for values we used to compute
14310         directly.
14312 2009-01-13  Larry Ewing  <lewing@novell.com>
14314         * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
14315         collection while iterating.
14317 2009-01-13  Larry Ewing  <lewing@novell.com>
14319         * src/canvas.cpp
14320         * src/frameworkelement.cpp
14321         * src/media.cpp
14322         * src/panel.cpp, src/panel.h: layout updates
14324 2009-01-13  Larry Ewing  <lewing@novell.com>
14326         * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
14327         size.
14329         * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
14331 2009-01-13  Larry Ewing  <lewing@novell.com>
14333         * shape.cpp, shape.h: start moving cleaning up references to width
14334         and height and moving towards using the layout logic.  Remove
14335         stale LargestRect stuff
14337         * runtime.c, dirty.h: stub in an update layout function.
14339         * border.cpp, canvas.cpp: try to match some more tests.
14341 2009-01-13  Jeffrey Stedfast  <fejj@novell.com>
14343         * textbox.cpp (TextBox::CursorPageDown): Implemented.
14344         (TextBox::CursorPageUp): Implemented.
14345         (TextBox::CursorHome): Implemented.
14346         (TextBox::CursorEnd): Implemented.
14347         (TextBox::CursorDown): Implemented.
14348         (TextBox::CursorUp): Implemented.
14349         (TextBox::OnKeyDown): Implemented Select-All keybinding and
14350         stubbed out cut/copy/paste.
14352 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com> 
14354         * dependencyproperty.g.cpp: Regenerated
14355         * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and 
14356         Shape.StrokeDashArray and set them in the constructors (which is 
14357         bit ifferent and fix Polyhedra animation).
14359 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com>
14361         * dependencyproperty.g.cpp: Regenerated
14362         * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
14363         StrokeDashArray since they are not NULL in SL2
14365 2009-01-13  Alan McGovern  <amcgovern@novell.com>
14367         * src.mdp: Add the provider stuff to the MD solution
14369 2009-01-13  Chris Toshok  <toshok@ximian.com>
14371         * provider.cpp (StylePropertyValueProvider::SealStyle): only
14372         insert the setter into the hash if the setter's value matches the
14373         type of the setter's property.  Fixes
14374         StyleTest.InvalidValueProgrammatically.
14376 2009-01-13  Jackson Harper  <jackson@ximian.com>
14378         * xaml.cpp|h: Add the ability to lookup full uri's based on local
14379         prefixes. This is so managed can convert something like
14380         'local:' into 'clr-namespace=Foo;assembly=bar'
14382 2009-01-13  Jackson Harper  <jackson@ximian.com>
14384         * xaml.cpp|h: Pass the ParserInfo to every callback, this will
14385         allow us to call back into unmanaged to do extra stuff.
14387 2009-01-13  Stephane Delcroix  <sdelcroix@novell.com>
14389         * tilesource.h|cpp: add a callback and a method to set the callback
14390         so we can poke the managed GetTileLayers.
14392 2009-01-12  Chris Toshok  <toshok@ximian.com>
14394         * style.cpp, style.h (Style::GetPropertyValue): remove this.  it's
14395         been replaced by the hash lookup in the style provider.
14397         * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
14398         change... apparently there's something that happens to lower
14399         precedence providers after you call ClearValue, but *only if the
14400         local value was actually cleared*.  yuck.
14402         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
14403         remove the Style sealing from SetValueWithErrorImpl, and move it
14404         here where it should have been all along.  Also, do the sealing
14405         via the Style value provider, so it can make things a bit more
14406         efficient.
14408         * provider.cpp (StylePropertyValueProvider::SealStyle): new
14409         method, called by FWE::OnPropertyChanged when the style is
14410         initially set.  we cache the setters (keyed by DP) in a hashtable.
14411         (StylePropertyValueProvider::RecomputePropertyValue): this is the
14412         magic method that DependencyObject::ClearValue calls, which causes
14413         the style provider to refresh its cache for the listed property.
14415 2009-01-12  Jackson Harper  <jackson@ximian.com>
14417         * xaml.cpp: Fix typo, makes ControlTemplates inside of
14418         ControlTemplates work properly.
14420 2009-01-12  Jackson Harper  <jackson@ximian.com>
14422         * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
14423         we can load some sites and see which properties are missing, right
14424         now it will only work for attributes. Intentionally not using the
14425         debug flags stuff, because i don't want this hack to stay around
14426         for very long.
14428 2009-01-12  Jackson Harper  <jackson@ximian.com>
14430         * xaml.cpp: Stop trying to set attributes once we hit the first
14431         error.
14433 2009-01-12  Jeffrey Stedfast  <fejj@novell.com>
14435         * collection.cpp (InlineCollection::Equals): New convenience
14436         method to replace text.cpp's inlines_simple_text_equal().
14438         * textbox.h (class TextBox): Now implements ITextSource.
14440         * text.cpp (Inline::UpdateFontDescription): New convenience method
14441         to populate the cached TextFontDescription since we can no longer
14442         rely on doing so from within OnPropertyChanged().
14443         (Inline::Equals): Base comparison method used by
14444         InlineCollection::Equals().
14445         (Run::Equals): Compare the Text property as well.
14446         (TextBlock::Layout): Call UpdateFontDescription() on each Inline
14447         as we iterate through them. Also updated for TextRun ctors.
14448         (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
14449         premise is that we do not want to force a layout calculation to be
14450         redone, we just need to invalidate if all that changed was a
14451         foreground brush.
14452         (inlines_simple_text_equal): Removed, use
14453         InlineCollection::Equals() instead.
14454         (TextBlock::SetTextInternal): Updated to use
14455         InlineCollection::Equals().
14457         * text.h (class Inline): Now implements the ITextSource
14458         interface. Moved the local TextFontDescription and autogen state
14459         into the private section and added accessors for them.
14461         * layout.cpp|h (class ITextSource): New interface sued by TextRuns
14462         and the internal Layout logic to grab a run's foreground brush and
14463         text decorations.
14464         (TextRun::ctor): No longer take TextDecoration,
14465         TextFontDescription, or Brush arguments, instead takes an
14466         ITextSource that it can query for those properties when it needs
14467         to.
14468         (RenderLine): Updated to get the decorations and foreground brush
14469         from the ITextSource.
14471 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14473         * validators.h:
14474         * validators.cpp:
14475         * mediaelement.h:
14476         * dependencyproperty.g.cpp: Add range validation to TimeSpan
14478 2009-01-12  Jackson Harper  <jackson@ximian.com>
14480         * xaml.cpp: Moved nameditem lookup into the parser info so we can
14481         use the parser context data to lookup resources.  This allows
14482         templates to reference StaticResources.
14484 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14486         * clock.cpp: Minimum FPS is clamped at 1.
14487         
14488 2009-01-12  Jackson Harper  <jackson@ximian.com>
14490         * xaml.cpp|h: Create a xaml context object so we can save some
14491         state information for buffered templates.
14492         * template.h|cpp: Updated xaml methods.
14494 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14496         * animation.h:
14497         * validators.h:
14498         * validators.cpp:
14499         * dependencyproperty.g.cpp: Add correct validator for
14500         Storyboard.TargetName and Storyboard.TargetProperty
14502 2009-01-12  Sebastien Pouliot  <sebastien@ximian.com>
14504         * grid.h: Hide RowDefinitionCollection ctor from managed code
14505         * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
14506         returns true the Style value can still be NULL (fix two new crash
14507         in SDK control unit tests)
14509 2009-01-12  Andreia Gaita  <avidigal@novell.com>
14511         * stackpanel.cpp|h: removed, stackpanel is now done in managed
14512           land
14514         * cbinding.cpp|h, dependencyproperty.g.cpp,
14515           type-generated.cpp, type.h,
14516           value.h: regen
14517     
14518         * Makefile.am, src.mdp: update build
14520 2009-01-11  Chris Toshok  <toshok@ximian.com>
14522         * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
14523         now.  the run fg will always be initialized.
14524         (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
14525         (TextLayout::Render): no need to pass in the default foreground.
14527         * runtime.cpp (runtime_shutdown): text_shutdown is gone.
14529         * text.h, text.cpp: stop caching the foreground.  and there's no
14530         need to create the default foreground brush in code.  it's simply
14531         the default value of the Foreground dependency property.
14532         (inlines_simple_text_equal): this needed fixing up since the font
14533         flags really aren't used for inheritance anymore - we need (and
14534         really, always needed to) compare the actual values, not just if
14535         they're set.
14536         (text_shutdown): no need for this anymore.
14537         
14538         * textbox.cpp (TextBoxView::Paint): same.  no more default_fg
14539         needed.
14541 2009-01-11  Chris Toshok  <toshok@ximian.com>
14543         * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
14544         if a DO is frozen, any SetValue() call raises an
14545         UnauthorizedAccessException.  We use this for default values of
14546         DependencyProperties.
14548         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
14549         freeze the default value.
14551 2009-01-11  Andreia Gaita  <avidigal@novell.com>
14553         * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(), 
14554         it could be called in the middle of a tick. Instead, just reset and 
14555         reuse the clock on every tick. Track if the timer is stopped during 
14556         a tick so the clock is not relaunched. Set a default duration so 
14557         it's never automatic.
14559 2009-01-11  Chris Toshok  <toshok@ximian.com>
14561         * text.h, text.cpp (class Inline): generate accessors for
14562         FontFamily, FontSize, and TextDecoration.
14563         (class Inline, class TextBlock): add an internal DP for the font
14564         filename.
14565         (Inline::OnPropertyChanged): the only case that's needed at the
14566         moment is foreground, but that's slated for the axe as well.
14567         
14568         * dependencyproperty.g.cpp: regen.
14570         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
14571         make sure we inherit properly across the logical tree if the node
14572         doesn't have a visual parent (this fixes inheritance for non
14573         UIElement's, like Runs).  Also, add the FontFilename property to
14574         the list of things that inherit.
14576         * dependencyobject.h,
14577         dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
14578         method.  Providers can call this whenever the value at their
14579         precedence level has changed.  It contains all the smarts to
14580         correctly generate OnPropertyChanged method calls in the face of
14581         all the provider levels.
14583 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
14585         * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
14586         TextChangedEvent and SelectionChangedEvent. Don't combine those
14587         into the ModelChangedEvent that is only meant for TextBoxView.
14588         (TextBox::OnPropertyChanged): Emit TextChangedEvent and
14589         SelectionChangedEvent appropriately.
14590         (TextBoxView::OnSelectionChanged): New event callback handler.
14591         (TextBoxView::OnTextChanged): Same.
14592         (TextBoxView::OnModelChanged): Don't handle text/selection change
14593         notification here anymore, because those 'change' enum types have
14594         been dropped.
14595         (TextBoxView::OnPropertyChanged): Need to listen to more events.
14597 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
14599         * value.cpp (Value::Value): the const char* ctor now takes a bool
14600         argument specifying whether to take ownership of the string
14601         buffer.
14603         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
14604         don't need to keep a char* selection, we only need it temporarily
14605         while creating the Value*.
14606         (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
14607         pressed.
14608         (TextBox::ClearSelection): Don't set the TextProperty value
14609         anymore. Also don't bother with the setvalue state variable
14610         anymore.
14611         (TextBox::OnPropertyChanged): Don't worry about setvalue state
14612         here anymore.
14613         (TextBox::TextBox): Get rid of 'setvalue' state.
14615 2009-01-10  Geoff Norton  <gnorton@novell.com>
14617         * media.cpp: surface->filename might be NULL, so we need to guard
14618         against this in our cleanup accordingly.
14620 2009-01-09  Chris Toshok  <toshok@ximian.com>
14622         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14623         oops.  we still need to seal the style if that's the thing we're
14624         setting.
14626 2009-01-09  Chris Toshok  <toshok@ximian.com>
14628         * Makefile.am (libmoon_include_headers): add provider.h
14629         (libmoon_la_SOURCES): add provider.cpp
14631         * provider.h, provider.cpp: clean up this some.  the only provider
14632         really not being used right now is the Animation value provider,
14633         since the animation code assumes it can just set local values.
14634         
14635         * shape.cpp (Shape::OnPropertyChanged): no need to look up the
14636         default value - GetValue will return it now.
14638         * textbox.h, textbox.cpp (class
14639         TextBoxDynamicPropertyValueProvider): new custom provider class to
14640         replace the ::GetValue override.  Install it in the ctor.
14642         * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
14643         new custom provider class to replace the ::GetValue override.
14644         Install it in the ctor.
14645         (GetBoundingWidth, GetBoundingHeight): don't use
14646         GetValueNoDefault.
14647         (SetActualHeight, SetActualWidth): no longer needed.
14648         (textblock_property): no longer needed.
14649         (Inline::GetDefaultValue): no longer needed.  the inherited
14650         property provider handles it.
14651         (TextBlock::OnPropertyChanged): no need to deal with
14652         Actual{Height,Width}Property here anymore.
14653         
14654         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
14655         remove styles initialization.
14656         (FrameworkElement): remove styles destruction.
14657         (FrameworkElement::ClearValue): this doesn't need any styles stuff
14658         anymore - just clear the binding if we have one, and otherwise
14659         chain up.
14660         (FrameworkElement::GetLocalValue): I'm not sure why this was
14661         looking things up via a style, as styles are a lower priority than
14662         local values.  if there's a binding return that, otherwise chain
14663         up.
14664         (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
14665         here.
14666         (FrameworkElement::UpdateFromStyle): remove.  the style lookup is
14667         done in the style provider.
14670         * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
14671         public Style* field and use SetStyle to set it.
14672         (Style::GetPropertyValue): new method.  this should probably be a
14673         hash lookup instead of the linear lookup, but for now this will
14674         work.
14675         (SetterBaseCollection::ValidateSetter): make this a static method
14676         on the class instead of just a C function.
14678         * dependencyobject.h: add a couple more GetValue overrides to deal
14679         with precedence levels.  Remove GetDefaultValue, as it's no longer
14680         needed - we can finally use DependencyProperty::GetDefaultValue as
14681         it's meant to be used.
14683         * dependencyobject.cpp (DependencyObject::GetLocalValue): change
14684         this to just call the LocalValue provider.
14685         (DependencyObject::GetValue (DependencyProperty* property)): call
14686         the overload that lets us specify a starting precedence (start at
14687         the highest precedence level).
14688         (DependencyObject::GetValue (DependencyProperty *property,
14689         PropertyPrecedence startingAtPrecedence)): new method.  loop over
14690         the providers until one of them gives us a value.
14691         (DependencyObject::GetValueSkippingPrecedence): we need this for
14692         looking up the value of FrameworkElement::StyleProperty from
14693         inside the style provider.
14694         (DependencyObject::GetValueNoDefault): reimplement this for the
14695         time being using the providers.
14696         (DependencyObject::DependencyObject): register all the default
14697         providers.  we leave a DynamicValue slot open for subclasses who
14698         want to implement "computed" properties.
14699         (DependencyObject): free all the providers.
14701         * dependencyproperty.g.cpp: regen
14703 2009-01-09  Geoff Norton  <gnorton@novell.com>
14705         * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
14707 2009-01-09  Geoff Norton  <gnorton@novell.com>
14709         * media.cpp: Ensure that we actually do change the value of the 
14710         Source property when we call MediaBase::SetSource (char*)
14712 2009-01-09  Jeffrey Stedfast  <fejj@novell.com>
14714         * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
14715         with layout-hint changes (including TextWrapping hints).
14716         (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
14717         anymore. Also no need to set the wrapping mode here anymore as it
14718         is set in OnProeprtyChanged() now.
14720         * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
14721         it doesn't make sense to have them separate.
14723         * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
14724         we'll pass changes directly to the View as they get updated.
14725         (TextBox::OnPropertyChanged): If the layout hints change, set
14726         changed to the appropriate TextBoxModelChanged hint enum. Also
14727         pass the PropertyChangedEventArgs to the ModelChangedEventArgs
14728         ctor so that TextBoxView can grab the new value to update its
14729         state.
14730         (TextBoxView::OnModelChanged): Handle the new enums.
14731         (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
14732         a new TextBox gets set.
14734 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14736         * dependencyproperty.cpp: 'validator' should never be null - it should
14737         be default_validator instead. Regression caused by previous change to
14738         generator.
14740 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14742         * validators.cpp: Validator only converts -1 to null. All other values
14743         appear to be left the same
14745 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14747         * validators.h:
14748         * mediaelement.h:
14749         * validators.cpp: Add a validator to AudioStreamIndex. This converts
14750         negative values to null, as the unit tests show.
14752 2009-01-09  Alan McGovern  <amcgovern@novell.com>
14754         * dependencyproperty.h:
14755         * dependencyproperty.cpp:
14756         * dependencyproperty.g.cpp: Make it possible to use validators with
14757         Nullable properties.
14759 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
14761         * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
14762         (Glyphs::GetFill): Same.
14764         * text.h (class Glyphs): GenerateAccessors for FillProperty too.
14766         * textbox.cpp (TextBox::CursorRight): Implemented.
14767         (TextBox::CursorLeft): Implemented.
14768         (TextBox::GetValue): New override to set the SelectedText property
14769         if the selection has been changed since the last request.
14771         * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
14773         * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
14774         different way so that we don't have to use GetValueNoDefault().
14776 2009-01-08  Larry Ewing  <lewing@novell.com>
14778         * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
14780         * geometry.h, geometry.cpp (class RectangleGeometry): remove
14781         GetRadius logic everything is handled property by the properties
14782         these days.
14784 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
14786         * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
14787         KeyEventArgs APIs.
14789         * keyboard.cpp (Keyboard::KeyIsChar): Removed.
14790         (Keyboard::KeyToChar): Removed.
14791         (Keyboard::KeyIsMovement): Removed.
14793         * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
14794         GetState() to make the purpose clearer.
14795         (KeyEventArgs::IsModifier): New helper method.
14796         (KeyEventArgs::GetKeyVal): New helper method.
14797         (KeyEventArgs::GetUnicode): New helper method.
14799         * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
14800         state, all places that set dirty=true are now handled by
14801         TextBoxView instead. Only call Invalidate() when appropriate. For
14802         selection state changes, check setvalue state to see if we need to
14803         do anything.
14804         (TextBox::ClearSelection): New helper method to clear the
14805         selection.
14806         (TextBox::OnKeyDown): Properly clear the selection using
14807         ClearSelection() so that the DP values get updated.
14809 2009-01-08  Larry Ewing  <lewing@novell.com>
14811         * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
14812         replace it with proper NAN state.  Remove MixedWidthAndHeight for
14813         c&p checks that will be removed in the layou code.
14814         
14815         * frameworkelement.cpp: more nan cleanup.
14817         * border.cpp:
14818         * control.cpp: handle nan.
14820 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14822         * style.h:
14823         * value.h:
14824         * value.h.in:
14825         * frameworkelement.cpp:
14826         * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
14827         to/from native. This removes a hack in Style where DP's used to be
14828         looked up by name, which couldn't be done with properties registered
14829         through C#. Fixes 2 NUnit tests.
14831 2009-01-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14833         * validators.h:
14834         * validators.cpp: Added DoubleGreaterThanZeroValidator.
14836         * mediaelement.h: Use double validator instead of int validator for
14837         double properties.
14839         * dependencyproperty.g.cpp: Regenerated.
14841 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14843         * dependencyobject.cpp: *Warning - Changing default values* When
14844         DO.ClearValue is called, we always return 'NULL' as the new value.
14845         This is incorrect as the pattern: do.ClearValue (property),
14846         do.GetValue (property) will actually return do.GetDefaultValue
14847         (DependencyProperty*). This change fixes a failing assertion in
14848         StyleTest.cs - ModifyAfterBinding.
14850 2009-01-08  Sebastien Pouliot  <sebastien@ximian.com>
14852         * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
14853         Regenerated for ITEM_COLLECTION
14855 2009-01-08  Alan McGovern  <amcgovern@novell.com>
14857         * text.cpp:
14858         * dependencyobject.h:
14859         * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
14860         overridden by Inlines
14862 2009-01-07  Larry Ewing  <lewing@novell.com>
14864         * frameworkelement.cpp, frameworkelement.h:
14865         move all the various duplicate versions GetTransformOrigin here.
14867         * mediaelement.cpp: fix GetTransformOrigin for new default values.
14868         
14869         * shape.cpp, shape.h:
14870         * canvas.cpp, canvas.h:
14871         * media.cpp, media.h:
14872         * shape.cpp, shape.h:
14873         * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
14875         Fixes run-tests 27
14877 2009-01-07  Geoff Norton  <gnorton@novell.com>
14879         * collection.cpp: Ensure that we call any AddWithError overrides
14880         that might exist in a subclass (like TimelineMarkerCollection) as
14881         it could affect the integer returned.
14883 2009-01-07  Geoff Norton  <gnorton@novell.com>
14885         * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
14886         to TextStream::OpenFile
14887         * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
14888         * downloader.cpp: GetResponseText needs to ensure it returns data in
14889         UTF-8, and doesn't handle zip files.
14891 2009-01-07  Jeffrey Stedfast  <fejj@novell.com>
14893         * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
14894         input a bit. Cutting a lot of corners for now, but oh well.
14895         (TextBoxView::TextBoxView): Hooked up some cursor blinking
14896         action. We don't actually render the cursor yet tho.
14898         * keyboard.cpp (Keyboard): Moved into it's own source file from
14899         eventargs.cpp. I have a sneaking suspicion that this logic will
14900         get large and complicated someday soon.
14902 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14904         * dependencyobject.cpp (set_surface): Add null check since the 
14905         hashtable can contain Value with a NULL DependencyObject
14907 2009-01-07  Larry Ewing  <lewing@novell.com>
14909         * canvas.cpp:
14910         * frameworkelement.cpp:
14911         * shape.cpp: Quick hacks to get test 0 passing after the default
14912         value changes.
14914 2009-01-07  Chris Toshok  <toshok@ximian.com>
14916         * textbox.h (class TextBox): add @CallInitialize so we can set the
14917         DefaultStyleKey.
14919         * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
14920         call to before ApplyTemplate(), as the template isn't applied
14921         until after the Loaded event is fired.
14923 2009-01-07  Geoff Norton  <gnorton@novell.com>
14925         * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
14926         memory cache of all downloads <= 64KB that are streamed in 1 shot.
14928 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14930         * contentcontrol.h|cpp: Remove properties that are not in SL2 final
14931         * dependencyproperty.g.cpp: Regenerated.
14933 2009-01-07  Alan McGovern  <amcgovern@novell.com>
14935         * uielement.h:
14936         * validators.h:
14937         * validators.cpp:
14938         * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
14939         it to the default cursor instead.
14941 2009-01-06  Larry Ewing  <lewing@novell.com>
14943         * uielement.h (class UIElement): add a default value to
14944         UIElement::CusorProperty, fixes a crossing event crash.
14946         * uielement.cpp (UIElement::ElementRemoved): remove the element
14947         from the dirty list since it is an orphan now.
14949         * runtime.cpp (Surface::PaintToDrawable): add some logging.
14951 2009-01-06  Jeffrey Stedfast  <fejj@novell.com>
14953         * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
14954         callbacks so that we can eventually make TextBox receive keyboard
14955         input. Currently the events never seem to fire, tho.
14957 2009-01-06  Sebastien Pouliot  <sebastien@ximian.com>
14959         * enums.h: Add enums values for MouseCursorSize[NS|WE]
14960         * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
14962 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14964         * frameworkelement.cpp:
14965         * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
14966         again after my previous commit changing the handling of
14967         GetValue/GetLocalValue.
14969 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14971         * cbinding.h:
14972         * cbinding.cpp:
14973         * dependencyobject.h:
14974         * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
14975         DP.GetDefaultValue function. Fixed the implementation of 'null'
14976         Value*. Now a Value* with GetIsNull () == true will be returned as
14977         'NULL' for calls to GetValue or GetValueNoDefault. This makes
14978         Value.GetIsNull opaque to native code so existing null checks will
14979         work as they should. The only function which is aware of GetIsNull is
14980         GetLocalValue, and this correctly handles this case.
14982 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14984         * textbox.h:
14985         * validators.h:
14986         * validators.cpp:
14987         * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
14988         null string is passed to PasswordBox.Password. Use correct range
14989         validation for MaxLength.
14991 2009-01-06  Alan McGovern  <amcgovern@novell.com>
14993         * frameworkelement.h:
14994         * frameworkelement.cpp:
14995         * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
14996         NAN.
14998 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15000         * style.h:
15001         * style.cpp:
15002         * frameworkelement.cpp: Implement proper validation of Setters and also
15003         correctly implement behaviour of sealed/unsealed styles. They are now
15004         passing all the NUnit tests except for one.
15006 2009-01-05  Chris Toshok  <toshok@ximian.com>
15008         * frameworkelement.h, frameworkelement.cpp: remove all reference
15009         to template_namescope.
15011         * template.cpp (ControlTemplate::Apply): remove call to
15012         FrameworkElement::SetTemplateNameScope - just set it as the
15013         namescope on the root of the applied template.  This way name
15014         references within the template resolve correctly.
15016         * control.cpp (Control::GetTemplateChild): with the above change,
15017         this just becomes template_root->FindName ()
15019 2009-01-05  Sebastien Pouliot  <sebastien@ximian.com>
15021         * runtime.cpp: Add a null check in Surface::FocusElement since both
15022         the C bindings and the MouseLeftButtonDown event can call it with a
15023         NULL value causing a SIGSEGV.
15025 2009-01-05  Jeffrey Stedfast  <fejj@novell.com>
15027         * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
15028         TextBoxView in the appropriate place.
15030         * control.cpp (Control::GetTemplateChild): Now takes a const
15031         char*.
15033 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15035         * uielement.h: Cursor shouldn't have a default value in SL2.
15037         * template.cpp:
15038         * dependencyobject.h:
15039         * dependencyobject.cpp:
15040         * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
15041         code calling NameScope::[Un]RegisterName to ignore empty names just
15042         like it ignores null names.
15044 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15046         * validators.h:
15047         * validators.cpp:
15048         * frameworkelement.h:
15049         * frameworkelement.cpp:
15050         * dependencyproperty.h:
15051         * dependencyproperty.cpp:
15052         * dependencyproperty.g.cpp: We need a reference to the current
15053         DependencyProperty so that write-once properties can be properly
15054         validated. Moved validation of StyleProperty from
15055         FrameworkElement.SetValue into the new StyleValidator.
15057 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15059         * validators.h:
15060         * validators.cpp:
15061         * dependencyobject.cpp:
15062         * dependencyproperty.h:
15063         * dependencyproperty.cpp: When validating the Value we need a reference
15064         to the current DependencyObject as some properties are
15065         write-once/read-only
15067 2009-01-02  Jeffrey Stedfast  <fejj@novell.com>
15069         * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
15070         dirty flag. TextBox is basically just a model now. Also added a
15071         ModelChanged event.
15072         (TextBox::Render): Removed.
15073         (TextBox::GetValue): Removed, dunno why it was ever overridden.
15074         (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
15075         view needs to be updated.
15076         (TextBoxView): New class that renders the contents of a TextBox
15077         control.
15079         * value.cpp (Value::GetIsNull): Fixed compiler warning.
15081         * pipeline.h (class MediaMarker): dtor needs to be virtual.
15083 2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>
15085         * validators.cpp: Remove the printf calls (that won't compile under
15086         SLED10 without changing includes).
15088 2008-12-22  Alan McGovern  <amcgovern@novell.com>
15090         * border.h:
15091         * validators.h:
15092         * validators.cpp:
15093         * dependencyproperty.g.cpp: Add validators for the Border class
15095         * value.h:
15096         * value.cpp:
15097         * value.h.in: unused_padding is now used as a bitfield. Currently used
15098         to indicate whether an object is null or not
15100         * frameworkelement.cpp: the styles hashtable only indicates if the
15101         current value comes from a style. It does not show if a dp has been
15102         bound to a style. If the current value is cleared, we need to update
15103         from the style to repopulate the styles hashtable and correctly set
15104         the style value. This can be optimised by passing the current dp to
15105         UpdateFromStyle.
15107         * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
15108         set the null value as opposed to calling do.ClearValue(dp).
15110 2008-12-22  Andreia Gaita  <avidigal@novell.com>
15112         * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
15113         Regenerated for DispatcherTimer
15115         * animation.h: Move Completed events to the timeline
15117         * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
15118         clock whose duration is the timer Interval property. The timeline's
15119         completed event is a tick of the timer, and the clock gets restarted
15120         when it completes.
15121         Save the current time when a clock starts so that clocks that are
15122         set to be started on the next tick with BeginOnTick include the time
15123         between the BeginOnTick call and the actual Begin in their elapsed
15124         time. Also, clocks beneath the time manager root clock now track time
15125         since they were started, and not since the time manager started.
15127 2008-12-20  Larry Ewing  <lewing@novell.com>
15129         * mediaelement.cpp (MediaElement::UpdateProgress): 
15130         * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
15131         to 0.05 which appears to be what the docs actually say.
15133 2008-12-19  Sebastien Pouliot  <sebastien@ximian.com>
15135         * cbinding.cpp|h: Regenerated for read-only DP.
15136         * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter 
15137         to RegisterManagedProperty.
15139 2008-12-19  Alan McGovern  <amcgovern@novell.com>
15141         * src.mdp:
15142         * animation.h:
15143         * dependencyproperty.g.cpp: Add validation + tests for
15144         Storyboard.TargetNameProperty and TargetPropertyProperty
15146 2008-12-18  Chris Toshok  <toshok@ximian.com>
15148         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15149         textbox.h: decorate properties with @Validator attributes which
15150         the generator uses to generate the proper call to
15151         DependencyProperty::RegisterFull.
15153         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15154         textbox.cpp: Remove the calls to
15155         DependencyProperty::SetValueValidator.  They're generated by the
15156         generator now from our metadata.
15158         * dependencyproperty.cpp, dependencyproperty.h: add new parameter
15159         to RegisterFull prototypes so we can supply a validator at
15160         registration time.
15162         * dependencyproperty.g.cpp: regen.
15163         
15164 2008-12-18  Chris Toshok  <toshok@ximian.com>
15166         * validators.cpp, validators.h: move these into a class instead of
15167         static C methods, and don't include C methods into every file.  we
15168         were getting warnings every time they went unused, and namespacing
15169         with C++ is better than #including them all over the place.
15171         * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
15172         dependencyproperty.cpp, frameworkelement.cpp: track change above.
15173         
15174 2008-12-18  Chris Toshok  <toshok@ximian.com>
15176         * xaml.cpp (class XamlElementInstanceManaged): this instance can
15177         be a DependencyObject sometimes.  we need an instance field to
15178         tell.
15179         (XamlElementInstanceManaged::XamlElementInstanceManaged): when
15180         @obj, set is_dependency_object to true.  This fixes setting x:
15181         namescope properties on managed DependencyObject subclasses, as in
15182         '<Button x:Name="foo" />'.
15183         (dependency_object_add_child): remove the template case from here.
15184         it'll be handled differently (being parsed at application time,
15185         essentially).
15187 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15189         * text.cpp:
15190         * control.cpp:
15191         * validators.h:
15192         * mediaelement.cpp:
15193         * multiscaleimage.h:
15194         * multiscaleimage.cpp:
15195         * frameworkelement.cpp: Add validation to DPs
15197 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15199         * mediaelement.cpp: Add validation for NaturalVideoHeight and
15200         NaturalVideoWidth.
15202 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15204         * src.mdp:
15205         * grid.cpp:
15206         * textbox.h:
15207         * textbox.cpp:
15208         * Makefile.am:
15209         * dependencyobject.h:
15210         * frameworkelement.h:
15211         * frameworkelement.cpp:
15212         * dependencyproperty.cpp: Move parameter validation for DP's to use the
15213         new ValueValidator callback.
15215         * validators.h: All validators are defined in this header file so they
15216         can be easily reused for different DPs.
15218 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15220         * grid.cpp: Correctly set the validators - forgot to revert changes
15221         before committing.
15223 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15225         * grid.cpp:
15226         * dependencyobject.cpp:
15227         * dependencyproperty.h:
15228         * dependencyproperty.cpp: Add the ability to validate the value for a
15229         DependencyProperty before setting it.
15231 2008-12-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15233         * text.h, text.cpp: Remove some useless code.
15235 2008-12-16  Alan McGovern  <amcgovern@novell.com>
15237         * cbinding.h:
15238         * cbinding.cpp:
15239         * dependencyproperty.h: If a default value has been set in native code,
15240         propagate that to managed code.
15242 2008-12-15  Chris Toshok  <toshok@ximian.com>
15244         * template.cpp (ControlTemplate::Apply): make sure we clear the
15245         toplevel namescope from the template tree.  instead we keep a
15246         different namescope around (full of the duplicated elements) which
15247         is populated during DuplicateObject.
15249 2008-12-15  Jeffrey Stedfast  <fejj@novell.com>
15251         * xaml.cpp: Macroize the static tables.
15252         (create_binding_expression_from_markup): Got rid of
15253         BindingExtension::path.
15254         (xaml_markup_parse_binding): Update the markup pointer before a
15255         successful return.
15257 2008-12-15  Jackson Harper  <jackson@ximian.com>
15259         * xaml.cpp: fix typo.
15260         - remove sneaky debug
15262 2008-12-15  Jackson Harper  <jackson@ximian.com>
15264         * xaml.cpp: Always check if we are in buffering mode. (Otherwise
15265         we'll get cdata content at the end of a template or a namespace
15266         handler during a template).
15268 2008-12-15  Alan McGovern  <amcgovern@novell.com>
15270         * grid.h:
15271         * dependencyproperty.g.cpp: ShowGridLines is true by default.
15273 2008-12-15  Alan McGovern  <amcgovern@novell.com>
15275         * control.cpp: Default foreground brush is black
15277 2008-12-12  Jackson Harper  <jackson@ximian.com>
15279         * xaml.cpp: Remove some old code.
15281 2008-12-12  Jackson Harper  <jackson@ximian.com>
15283         * xaml.cpp: Still need to call setproperty on non managed
15284         attributes, they could be events.
15286 2008-12-12  Jackson Harper  <jackson@ximian.com>
15288         * xaml.cpp: A little cleanup so that we only try setting non-dp
15289         attributes on managed objects. (previously we would try but fail,
15290         so the results are basically the same, just less waste).
15292 2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15294         * runtime.h: Make DetachDownloaders public so that the plugin can call
15295           it.
15297 2008-12-12  Alan McGovern  <amcgovern@novell.com>
15299         * textbox.cpp: Add bounds checking to SelectionStartProperty too
15301 2008-12-12  Alan McGovern  <amcgovern@novell.com>
15303         * textbox.h:
15304         * textbox.cpp: Add range checking for MaxLengthProperty and
15305         SelectionLengthProperty
15307 2008-12-11  Sebastien Pouliot  <sebastien@ximian.com>
15309         * dependencyobject.h: Name setter is public in SL2 final.
15311 2008-12-11  Chris Toshok  <toshok@ximian.com>
15313         * control.h, control.cpp: hook up TemplateApplied event.
15315         * type-generated.cpp: regen.
15317 2008-12-11  Chris Toshok  <toshok@ximian.com>
15319         * control.h (class Control): generate cbinding/pinvoke for
15320         GetTemplateChild.
15322         * cbinding.h, cbinding.cpp: regen.
15324 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15326         * textbox.cpp: Unbreak the build.
15328 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15330         * textbox.cpp: It should not be possible to set a null value as the
15331         password.
15333 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15335         * textbox.h:
15336         * dependencyproperty.g.cpp: Fix several issues with default values for
15337         TextBox and PasswordBox
15339 2008-12-11  Andreia Gaita  <shana@jitted.com>
15341         * cbinding.h|cpp, clock.h: Framerate accessors
15343 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15345         * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
15346           remove some stale code.
15348 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15350         * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
15351           audio field. Added comments/explicit verification in every method
15352           describing which methods must be thread-safe and which aren't.
15354 2008-12-10  Jeffrey Stedfast  <fejj@novell.com>
15356         * xaml.cpp (parser_error): Now takes varargs to simplify
15357         things. Fixed all callers to not strdup/g_strdup_printf (and leak)
15358         the message argument.
15359         (create_binding_expression_from_markup): Check that the source is
15360         a DO before casting.
15362 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15364         * type.h:
15365         * textbox.h:
15366         * type-generated.cpp:
15367         * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
15368         is represented by an int32 in unmanaged code.
15370 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15372         * audio-pulse.cpp: Fix int->enum conversion.
15374 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15376         * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
15377           random constants for the connected variable.
15379 2008-12-10  Jackson Harper  <jackson@ximian.com>
15381         * xaml.cpp: Add a buffering mode to the parser, this mode is used
15382         for templates and simply buffers all the text without doing
15383         any real parsing. So everything between a
15384         <DataTemplate>..</DataTemplate> block is turned into a string.
15386 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15388         * textbox.h:
15389         * textbox.cpp: Implement the SelectAll function and raise an event when
15390         the Password changes
15392         * type.h:
15393         * value.h:
15394         * cbinding.h:
15395         * cbinding.cpp:
15396         * type-generated.cpp:
15397         * dependencyproperty.g.cpp: Commit the files from the generator.
15399 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15401         * textbox.h: Partial implementation of the PasswordBox control
15403 2008-12-09  Chris Toshok  <toshok@ximian.com>
15405         * template.h, template.cpp: add DataTemplates.
15407         * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
15408         regen.
15409         
15410 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15412         * xaml.cpp (create_binding_expression_from_markup): Converter can
15413         also take a StaticResource.
15415         * playlist.cpp: Don't use ctype is*() with a char argument, these
15416         functions are meant to take unsigned char values cast to an
15417         int. Use the g_ascii_is*() functions instead.
15419         * xaml.cpp (create_binding_expression_from_markup):
15420         ConverterParameter can either be a string or a StaticResource. If
15421         it is a StaticResource, lookup the resource object.
15423         * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
15424         takes a Value* since we need to handle either string or
15425         DependencyObject.
15427 2008-12-09  Jackson Harper  <jackson@ximian.com>
15429         * xaml.cpp: Don't use the cpp initializers.
15430         - More consistent naming.
15432 2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15434         * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
15435           pulseaudio to initialize - keep waiting if we get spurious wakeups.
15437 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15439         * xaml.cpp (create_binding_expression_from_markup): Lookup the
15440         StaticResource property for Source.
15442         * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
15443         longer needed.
15444         (BindingExpressionBase::*): No longer do dynamic lookup of the
15445         source_name.
15447 2008-12-09  Sebastien Pouliot  <sebastien@ximian.com>
15449         * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to 
15450         false in C++ constructor.
15452 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15454         * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
15455         action.
15456         (xaml_markup_parse_binding): Fixed to handle
15457         "Source={StaticResource ...}" syntax.
15459 2008-12-08  Sebastien Pouliot  <sebastien@ximian.com>
15461         * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
15462         for UserControl while it's true for Control
15464 2008-12-08  Jeffrey Stedfast  <fejj@novell.com>
15466         * xaml.cpp: A bit of refactoring...
15468         * binding.cpp (BindingExpressionBase::SetConverterParameter):
15469         Added.
15470         (BindingExpressionBase::SetConverterCulture): Same.
15471         (BindingExpressionBase::SetConverter): Same.
15472         (BindingExpressionBase::SetSourceName): Same.
15473         (BindingExpressionBase::AttachListener): Lookup the source by name
15474         if we don't already have it.
15475         (BindingExpressionBase::GetValue): Same.
15476         (BindingExpressionBase::UpdateSource): Same.
15478         * xaml.cpp (binding_expression_from_str): Finished implementing.
15480 2008-12-07  Jeffrey Stedfast  <fejj@novell.com>
15482         Fixes bug #444872
15484         Patches by Argiris Kirtzidis
15486         * dependencyobject.h: Fix forward declarations of classes declared
15487         struct.
15489         * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
15490         point constant to make sure we get the correct overload in MSVC.
15492         * playlist.cpp (duration_from_asx_str): Same.
15494         * value.cpp (Value::FreeValue): Free corner radius.
15496 2008-12-05  Geoff Norton  <gnorton@novell.com>
15498         * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
15499         and sometimes async.  Lets ensure we can actually connect before
15500         continuing on.
15502 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15504         * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
15506         * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
15507         #if SL_2_0 check.
15509         * binding.h (class Binding): Added more bool members.
15511         * xaml.cpp (binding_expression_from_str): New method to
15512         parse {Binding} markup syntax into a BindingExpression.
15513         (handle_xaml_markup_extension): Parse Binding markup extensions.
15515 2008-12-05  Chris Toshok  <toshok@ximian.com>
15517         * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
15518         the GenerateAccessors thing the right way.
15520         * dependencyproperty.g.cpp: regen.
15521         
15522 2008-12-05  Jackson Harper  <jackson@ximian.com>
15524         * xaml.cpp: Move the markup extension handler out of
15525         set_attributes, ideally each markup extension will get it's own
15526         function eventually.
15528 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15530         * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
15531         char *
15533         * xaml.cpp: Conditionally define DEBUG, which I guess is a
15534         temporary thing, in a way which will not spew gcc warnings.
15536 2008-12-05  Jackson Harper  <jackson@ximian.com>
15538         * xaml.cpp: Let managed code own it's Value pointers.
15540 2008-12-04  Jackson Harper  <jackson@ximian.com>
15542         * xaml.cpp: We can store the Value* in the base element instance
15543         now, since they all use a Value.
15545 2008-12-05  Fernando Herrera  <fherrera@novell.com>
15547         * playlist.cpp:
15548         * playlist.h: Don't check duration at playlist level but let MediaPlayer
15549         handle it. Don't do a delayed element->Play() for repeats because that
15550         can broke js doing "e.Play();e.Stop()"
15552 2008-12-04  Fernando Herrera  <fherrera@novell.com>
15554         * playlist.cpp (Playlist::Open): Check duration properly.
15556 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15558         * binding.cpp: Get rid of excessive use of 'this' keyword.
15560 2008-12-04  Geoff Norton  <gnorton@novell.com>
15562         * playlist.cpp: 100ms not 10s should be when we start playing the
15563         playlist entries.
15565 2008-12-04  Larry Ewing  <lewing@novell.com>
15567         * layout.cpp (RenderLine): do all the filling in one pass rather
15568         than adding a stroke at the end.  Tidy up the path creation and
15569         modification logic.
15571 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15573         We only support vector fonts, so get rid of the TextFont::Render()
15574         API that is only useful as an abstraction over rendering as bitmap
15575         vs pathing. Leave the *Path() APIs which are the only ones
15576         actually used.
15578         * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
15579         fonts are scalable for now.
15581         * font.cpp (TextFont::RenderGlyphPath): Removed.
15582         (TextFont::Render): Same.
15584 2008-12-04  Sebastien Pouliot  <sebastien@ximian.com>
15586         * control.h: Changed my mind and moved DefaultStyleKeyProperty and
15587         IsEnabledProperty to the managed world
15588         * dependencyproperty.g.cpp: regenerated
15590 2008-12-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15592         * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
15593           size using video and audio streams. Fixes #456154.
15595 2008-12-04  Jackson Harper  <jackson@ximian.com>
15597         * xaml.cpp: The element instance now has ownership of the Value
15598         objects.
15600 2008-12-03  Jackson Harper  <jackson@ximian.com>
15602         * xaml.cpp: Cleanup managed namespaces when we shutdown.
15603         - Reduce the number of Value's we are creating. These still aren't
15604         being freed properly, but at least there isn't as many of them.
15606 2008-12-03  Geoff Norton  <gnorton at novell.com>
15608         * media.cpp: Ensure we null our reference to the image loader in
15609         all the failure cases to avoid a possible double free/unref.
15611 2008-12-03  Alan McGovern  <amcgovern@novell.com>
15613         * binding.h:
15614         * frameworkelement.h:
15615         * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
15616         the binding when the context is altered.
15618 2008-12-03  Alan McGovern  <amcgovern@novell.com>
15620         * frameworkelement.h:
15621         * dependencyproperty.g.cpp: DataContext should take 'object'
15623 2008-12-03  Jackson Harper  <jackson@ximian.com>
15625         * xaml.cpp: Call setproperty for all the children in the property
15626         block, this is needed because we aren't doing as much magic
15627         collection handling in addchild anymore.
15629 2008-12-02  Sebastien Pouliot  <sebastien@ximian.com>
15631         * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
15632         * dependencyproperty.g.cpp: regenerated
15634 2008-12-02  Jackson Harper  <jackson@ximian.com>
15636         * xaml.cpp: Map in enumerations in 2.0. So you can do something
15637         like <Visibility>Collapsed</Visibility>
15638         * enums.h|cpp: Expose a function so we can check if a certain enum
15639         exists.
15641 2008-12-02  Jackson Harper  <jackson@ximian.com>
15643         * xaml.cpp: We can map in non-DO managed elements now, so check to
15644         make sure it's actually a dependency object.
15645         - Pass NULL for the property name if we weren't able to query for
15646         a content property name.  The managed backing might be able to
15647         find a name some other way.
15649 2008-12-02  Jackson Harper  <jackson@ximian.com>
15651         * xaml.cpp: Return false if the base content property setter didnt
15652         work.
15654 2008-12-02  Alan McGovern  <amcgovern@novell.com>
15656         * cbinding.h:
15657         * cbinding.cpp:
15658         * dependencyproperty.h:
15659         * dependencyproperty.cpp: Ensure the default value of a CustomDP is
15660         propagated to the unmanaged
15662 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15664         * dependencyobject.cpp: We need to raise changed events when clearing
15665           values too.
15666         * cbinding.cpp, cbinding.h: Regenerated.
15668 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15670         * dependencyproperty.h: Added a IsNullable setter (instead of adding
15671           yet another parameter to the Register methods).
15673 2008-12-02  Andreia Gaita  <shana@jitted.com>
15675         * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
15677 2008-12-02  Andreia Gaita  <shana@jitted.com>
15679         * panel.cpp: Fix debugging messages
15681 2008-12-01  Larry Ewing  <lewing@novell.com>
15683         * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
15684         we can handle image and video brush opacity properly.
15686         * src/control.cpp
15687         * src/layout.cpp
15688         * src/panel.cpp
15689         * src/shape.cpp
15690         * src/text.cpp: use the new Fill and Stroke methods when using
15691         brushes.  Fixes test-imagebrush-opacity* when the masters are
15692         correctly updated.
15694 2008-12-01  Chris Toshok  <toshok@ximian.com>
15696         * frameworkelement.h: add decl for ClearBindingExpression.
15697         
15698         * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
15699         factor out the 2 operations (Detach + hash_remove) here since
15700         we'll be calling it in a couple places.
15701         (binding_destroy): this should delete value, not call ValueFree.
15702         (FrameworkElement::SetBindingExpression): call
15703         ClearBindingExpression if there's a current one, and don't ref the
15704         expression.  Value will hold one.
15705         (FrameworkElement::ClearValue): a couple of changes.
15706         
15707         1. Call ClearBindingExpression instead of just removing the
15708         binding from the hash (and not detaching it...)
15710         2. don't remove the style value from the style has.
15712         3. instead of looping over all the setters in the style just set
15713         the value back to the value in the styles hash.
15714         
15715         4. if we're going to be resetting the value to the style, don't
15716         notify listeners in UIElement::ClearValue.  it'll happen in
15717         SetValue.
15719 2008-12-01  Geoff Norton  <gnorton@novell.com>
15721         * audio.cpp: Fix a logic error that prevented falling back to alsa when
15722         built with both pulse and alsa support.
15724         r: toshok
15726 2008-12-01  Chris Toshok  <toshok@ximian.com>
15728         * template.cpp, template.h: when copying the tree over, register
15729         the template element names to their instantiated counterparts.
15730         and build up a NameScope object as we go.
15732         * frameworkelement.cpp: add a "template_namescope" which maps
15733         names that were registered in the template itself to elements in
15734         the instantiated visual tree.
15736         * control.cpp (Control::GetTemplateChild): look the child up in
15737         the template namescope, not against the visual tree.
15739 2008-12-01  Jackson Harper  <jackson@ximian.com>
15741         * xaml.cpp: Value types can not have properties set on them.
15743 2008-12-01  Fernando Herrera  <fherrera@novell.com>
15745         * mediaelement.cpp:
15746         * mediaplayer.cpp:
15747         * pipeline.cpp:
15748         * playlist.cpp:
15749         * playlist.h: Implement Server side playlists. Still missing duration based
15750         constraints.
15752 2008-12-01  Alan McGovern  <amcgovern@novell.com>
15754         * border.h: ChildProperty should not be exposed
15756 2008-12-01  Alan McGovern  <amcgovern@novell.com>
15758         * frameworkelement.cpp: If a null value is being set to a DP when using
15759         databinding, clear the value instead. Makes test pass. (left this out
15760         of the last commit)
15762 2008-11-28  Alan McGovern  <amcgovern@novell.com>
15764         * binding.h:
15765         * cbinding.h:
15766         * binding.cpp:
15767         * cbinding.cpp:
15768         * frameworkelement.cpp: DataBinding now works for one-way, one-time and
15769         two-way bindings with managed objects.
15771 2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15773         * audio.cpp: Remove a print_stack_trace.
15775 2008-11-27  Andreia Gaita  <shana@jitted.com>
15777         * runtime.cpp: enable debug #if that was disabling the D key.
15779 2008-11-27  Alan McGovern  <amcgovern@novell.com>
15781         * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
15783 2008-11-27  Alan McGovern  <amcgovern@novell.com>
15785         * binding.h:
15786         * cbinding.h:
15787         * binding.cpp:
15788         * cbinding.cpp:
15789         * frameworkelement.cpp: Allow the Binding class to be mapped between
15790         managed and unmanaged code.
15792 2008-11-26  Larry Ewing  <lewing@novell.com>
15794         * shape.cpp (Shape::IsCandidateForCaching): add more logic to
15795         avoid the cache in special cases.
15797 2008-11-26  Jackson Harper  <jackson@ximian.com>
15799         * xaml.cpp|h: clean up the managed/plugin interface, use Values
15800         for most things instead of expected DependencyObjects.
15801         * deepzoomimagetilesource.h|cpp: Add the uri property and a public
15802         constructor so we can parse these from attributes.
15803         * cbinding.h|cpp:
15804         * dependencyproperty.g.cpp: regen
15806 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15808         * frameworkelement.cpp: Store a Value * rather than
15809         BindingExpressionBase in the bindings hashtable to allow
15810         GetLocalValue to work.
15812 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15814         * frameworkelement.h:
15815         * dependencyobject.h:
15816         * frameworkelement.cpp: Styles are now used/ignored correctly when local
15817         values are set/unset. Added tests for this.
15819         * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
15821         * shape.cpp: args->new_value will be null if DO.ClearValue has been
15822         called. In this case use DP.DefaultValue
15824 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15826         * binding.h:
15827         * cbinding.h:
15828         * binding.cpp:
15829         * cbinding.cpp:
15830         * frameworkelement.h:
15831         * dependencyobject.h:
15832         * frameworkelement.cpp:
15833         * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
15834         unmanaged code. Only handles databindings.
15836 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15838         * binding.h:
15839         * cbinding.h:
15840         * binding.cpp:
15841         * cbinding.cpp:
15842         * frameworkelement.cpp: Rename the members of BidningExpressionBase to
15843         better reflect their actual usage.
15845 2008-11-26  Alan McGovern  <amcgovern@novell.com>
15847         * style.h:
15848         * style.cpp:
15849         * collection.h:
15850         * collection.cpp: InsertWithError should return a bool to match Insert
15852         * media.h:
15853         * media.cpp: Fix regression introduced in r119963 when changing which
15854         collection functions were virtual
15856 2008-11-25  Larry Ewing  <lewing@novell.com>
15858         * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
15859         rotations as well.
15861         * media.cpp (Image::GetCoverageBounds): be slightly smarter about
15862         computing coverage.
15864 2008-11-25  Geoff Norton  <gnorton@novell.com>
15866         * cbinding.(cpp|h): Regenerate
15867         * downloader.h: Expose the status code and status text to the
15868         DownloaderResponse object.
15870 2008-11-25  Alan McGovern  <amcgovern@novell.com>
15872         * style.h:
15873         * error.h:
15874         * style.cpp:
15875         * cbinding.h:
15876         * cbinding.cpp:
15877         * collection.h:
15878         * dependencyproperty.g.cpp: Added full support for sealing styles.
15880 2008-11-25  Stephane Delcroix  <sdelcroix@novell.com>
15882         * multiscaleimage.h: element_to_logical_point
15884 2008-11-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15886         * cbinding.cpp, cbinding.h: Regenerated.
15888 2008-11-24  Larry Ewing  <lewing@novell.com>
15890         * media.cpp (MediaBase::SetSource): only queue a tick if we need
15891         to, fixes regression on mediaelement downloaders.
15893         r:toshok
15895 2008-11-24  Larry Ewing  <lewing@novell.com>
15897         * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
15898         precise about the coverage bounds.  Use the coveragebounds when
15899         invalidating based on position so that we don't invalidate a lot
15900         more area than we need to.  Only use CAIRO_FILTER_FAST when
15901         playing use the default when in other states.
15903 2008-11-24  Geoff Norton  <gnorton@novell.com>
15905         * media.cpp: If we do a SetSource on a image element with a 
15906         completed downloader, short circuit the async call, as the downloader
15907         theoretically can be immediately reused in javascript after the call.
15908         Also remove the internal completed event after its been fired, for the
15909         same reason (downloader reuse).  Fixes halo3
15910         
15911         r: lewing
15913 2008-11-24  Larry Ewing  <lewing@novell.com>
15915         * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
15916         them where appropriate.
15918         * mediaplayer.cpp: use MOON_FORMAT_RGB.
15920 2008-11-24  Larry Ewing  <lewing@novell.com>
15922         * brush.cpp, brush.h: add IsAnimating member to indicate if the
15923         brush is expected to change each render tick.
15925         * shape.cpp: don't cache animating brushes.
15927 2008-11-22  Jeffrey Stedfast  <fejj@novell.com>
15929         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15930         Set the destination element and property on the binding expression
15931         so that we can easily get at them in the callback when the source
15932         property changes. Instead of passing 'this' as the user_data
15933         argument to the property change handler, pass the expression.
15934         (FrameworkElement::BoundPropertyChanged): No longer need to
15935         iterate thru the hash table, we now are able to get all the info
15936         we need from the binding expression.
15937         (FrameworkElement::bound_property_changed): Updated.
15939 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15941         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15942         Implemented properly (I think/hope).
15944 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15946         * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
15947         callback and user data.
15948         (BindingExpressionBase::DetachListener): Now takes a callback.
15950         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15951         Moved here from binding.cpp.
15952         (FrameworkElement::SetBindingExpression): Made protected instead
15953         of public.
15954         (FrameworkElement::GetBindingExpression): Same.
15956 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15958         * frameworkelement.cpp: Fixed to build w/o SL2 support.
15960 2008-11-21  Larry Ewing  <lewing@novell.com>
15962         * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
15963         filter in videobrush when scaling.
15965         r: kangaroo
15967 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15969         * binding.cpp (changed_cb): Implemented... but it's
15970         wrong. Committing anyay with a big FIXME explaining why it's
15971         wrong.
15973         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15974         New method to set a binding expression for a property.
15975         (FrameworkElement::GetBindingExpression): Get the binding
15976         expression for a property.
15977         (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
15978         stuff to make the logic a bit clearer.
15980 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
15982         * binding.cpp (BindingExpressionBase::AttachListener): We want to
15983         use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
15984         we want to provide our own callback, not re-use
15985         OnSubPropertyChanged() for a purpose it wasn't meant for.
15987         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
15988         #if 0'd out, we might not need this afterall.
15990         * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
15991         chaining up if the property change wasn't handled.
15993         * text.cpp (Inline::OnSubPropertyChanged): Same.
15994         (TextBlock::OnSubPropertyChanged): Same.
15995         (Glyphs::OnSubPropertyChanged): Same.
15997 2008-11-21  Larry Ewing  <lewing@novell.com>
15999         * shape.cpp: disable custom layout code as it seems to have
16000         changed in 2.0 final.
16002 2008-11-21  Alan McGovern  <amcgovern@novell.com>
16004         * frameworkelement.cpp: If a style is already set, you cannot set it
16005         again.
16007 2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16009         * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
16010           create such a Value.
16012 2008-11-21  Alan McGovern  <amcgovern@novell.com>
16014         * frameworkelement.cpp: Implement initial support for using a Style when
16015         it is present.
16017 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
16019         * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
16020         (TextBlock::OnSubPropertyChanged): Always chain up.
16021         (Glyphs::OnSubPropertyChanged): Always chain up.
16023         * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
16025         * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
16027         * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
16029         * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
16030         might not be correct.
16032         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
16033         Stubbed out.
16035 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
16037         * binding.cpp (BindingExpressionBase::AttachListener): Now takes
16038         an FE argument as the listener.
16039         (BindingExpressionBase::DetachListener): Same.
16041         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16042         Fixed up a bit.
16044 2008-11-20  Alan McGovern  <amcgovern@novell.com>
16046         * src.mdp:
16047         * binding.h:
16048         * binding.cpp:
16049         * frameworkelement.cpp: Add more support code for databinding.
16051 2008-11-19  Geoff Norton  <gnorton@novell.com>
16053         * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
16054         giving up on media entirely.
16056         r: toshok
16058 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
16060         Note: the way this is abstracted will probably go thru several
16061         iterations of change.
16063         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16064         Do special handling if setting a binding expression or if the
16065         value is replacing a binding expression.
16067         * dependencyobject.cpp (DependencyObject::IsValueValid): Made
16068         protected, no reason for this to be public.
16069         (DependencyObject::SetValueWithErrorImpl): New virtual method, has
16070         all the code logic of the old SetValueWithError().
16071         (DependencyObject::SetValueWithError): Call IsValueValid() and
16072         then SetValueWithErrorImpl().
16074 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
16076         * frameworkelement.cpp (FrameworkElement::IsValueValid):
16077         Overridden so that we can check if the Value is a
16078         BindingExpression. All DependencyProperties of FrameworkElements
16079         may be data-bound.
16081 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16083         * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
16084           Rendered/DroppedFramesPerSecond DP.
16085         * pipeline.cpp: Fix warning.
16087 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16089         * dependencyproperty.g.cpp: Regenerated.
16090         * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
16091         * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
16092           and DroppedFramesPerSecond.
16094 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16096         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
16097           type-generated.cpp, value.h: Added InputMethod.
16099 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16101         * geometry.cpp: Fix breakage in r119300.
16103 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16105         * dependencyproperty.g.cpp, transform.h: Corcompare.
16106         * geometry.h: Move FillRule from Geometry to
16107           PathGeometry/GeometryGroup.
16109 2008-11-18  Jeffrey Stedfast  <fejj@novell.com>
16111         * expression.h, binding.cpp|h: added to the build
16113 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16115         * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
16117 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16119         * uielement.h: Define UseLayoutRounding accessors to unbreak build.
16121 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16123         * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
16124           uielement.h: More corcompare work.
16126 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16128         * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
16129           value.h: Add TriggerBase, make EventTrigger inherit from it and
16130           regenerate.
16132 2008-11-17  Jeffrey Stedfast  <fejj@novell.com>
16134         * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
16136 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
16138         * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple 
16139         repeats when seeking anims with RepeatBehavior >= 2.0).
16141 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
16143         * clock.cpp: When running without idle hint (runtime init) do not apply it 
16144         here. Makes the idle hint switch actually do something and makes debugging
16145         easier.
16147 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
16149         * animation.cpp:
16150         * animation.h: The KeySpline quadratics used to generate interpolation
16151         values are generated dynamically = faster and less mem.
16153 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
16155         * animation.cpp:
16156         * animation.h: Slightly more nice value caching.
16158 2008-11-14  Geoff Norton  <gnorton@novell.com>
16160         * pipeline-ui.cpp:
16161         * codec-url.h:  Update to the final URLs for beta 1
16163         r: miguel
16165 2008-11-14  Geoff Norton  <gnorton@novell.com>
16167         * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
16168         handle the pango markup we're using.
16170         r: miguel
16172 2008-11-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16174         * mediaelement.cpp: SetMedia: when getting the playlist for an
16175           asxdemuxer, set the media for it. Fixes a memory leak (the media
16176           should get disposed with the playlist gets disposed).
16177         * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
16178         * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
16179           add a parameter to PlaylistEntry::SetMedia to specify whether the
16180           entry should start playing the media or not.
16182 2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
16184         * runtime.cpp (running_on_nvidia): Fix leak of Display
16185         r: kangaroo
16187 2008-11-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16189         * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
16190           request even if we're currently playing, there might be a PauseNow
16191           request already queued.
16193 2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
16195         * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
16196         r: fer
16198 2008-11-11  Geoff Norton  <gnorton@novell.com>
16200         * Makefile.am: Only build the appropriate pipeline-ui based on wether
16201         we're building on a os/arch combo that supports the SMP.
16202         * codec-url.h: Set the appropriate CODEC_URL for our target platform
16203         * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
16204         of the codec install pipeline.
16206 2008-11-11  Geoff Norton  <gnorton@novell.com>
16208         * debug.h: Its unlikely that debug flags will be set.
16210         r: spouliot
16212 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16214         * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
16215           Plugs a memory leak.
16217 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16219         * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
16220           too.
16222 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16224         * pipeline.cpp, pipeline.h: Plug a memory leak.
16226 2008-11-10  Geoff Norton  <gnorton@novell.com>
16228         * runtime.cpp: Do not enable debug features by default, and remove a 
16229         superflous warning.
16230         r: toshok
16232 2008-11-10  Geoff Norton  <gnorton@novell.com>
16234         * runtime.cpp: Force NVIDIA binary driver to go to the image backend
16235         to work around serious performance problems when we use accelerated
16236         rendering with it.
16237         r: toshok
16239 2008-11-10  Chris Toshok  <toshok@ximian.com>
16241         * runtime.cpp (copy_input_list_from_node): rename
16242         copy_input_list_with_visibility_check to this method.  the
16243         caller (HandleMouseEvent) already walks over the list to determine
16244         if an element has total render or hittest visibility == false.  By
16245         definition, everything before that in the input list (the input
16246         list is ordered from most deeply nested to the root) also has
16247         those == false, so we can short circuit things by traversing from
16248         the tail of the list, and then only copying the nodes we've seen
16249         before (but which come after) the offending one.
16251 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16253         * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
16254           pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
16255           move that to Playlist(Entry) and Dispose of the playlist instead.
16256           This makes re-playing already played content in playlists work
16257           again.
16259 2008-11-10  Michael Dominic K.  <mdk@mdk.am>
16261         * animation.cpp:
16262         * animation.h: Cache some vals internally in *Animation for better 
16263         performance in loop-called routines.
16265 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16267         * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
16268           Implement MediaElement.AudioStreamIndex.
16270 2008-11-07  Michael Dominic K.  <mdk@mdk.am>
16272         * clock.cpp: Fixing one broken block in the AnimationMatrix2 test. 
16273         It was broken but diff was too small to be picked by the test runner.
16275 2008-11-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16277         * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
16278           need to keep decoding until the entire input has been consumed.
16280 2008-11-06  Geoff Norton  <gnorton@novell.com>
16282         * pipline(-ui).cpp: Move the codec location on more time.
16283         r: miguel
16285 2008-11-05  Michael Dominic K.  <mdk@mdk.am>
16287         * animation.cpp:
16288         * animation.h: Fixing one more mem-leak case. Fixes #436068.
16290 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
16292         * downloader.h: change the signature of downloaderRequestFinishedHandler
16293         to pass the resulting uri.
16295         * downloader.cpp: validate the returned uri against redirection policies
16297         r:gnorton
16299 2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
16301         Patches by Argiris Kirtzidis to fix bug #441687
16303         * audio.cpp: Use g_alloca() to create dynamically sized arrays on
16304         the stack rather than relying on g++ features.
16306         * clock.cpp: Applied MSVC portability patch which implements
16307         gettimeofday().
16309 2008-11-04  Fernando Herrera  <fherrera@novell.com>
16311         * mediaplayer.cpp: Add logging information about selected streams
16312         properties.
16314 2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
16316         See tests/xaml/test-textblock-actualheight.html and
16317         test-textblock-hittest.html as compared with Microsoft
16318         Silverlight.
16320         * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
16321         actually do count toward ActualHeight metrics.
16323 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16325         * audio-pulse.cpp: OnContextStateChanged: always print an error message
16326           if we fail to connect to pa daemon.
16328 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16330         * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
16331           invalidate when that flag is set.
16333 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16335         * runtime.cpp: get_flags: take the default flags as an argument, this
16336           way the environment variables can disable flags which are enabled
16337           by default.
16339 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16341         * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
16342           codecs by default for browsers.
16344 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16346         * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
16347           because of a buffer underflow and we're waiting for the initial
16348           frame, enqueue a request for another frame. Fixes #440317.
16350 2008-11-03  Larry Ewing  <lewing@novell.com>
16352         * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
16353         extreme exposure issues in popfly.
16355 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16357         * runtime.h: Remove #include <config.h> from headers
16359 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16361         * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
16362           reading a header, try to sync to one. FindMpegHeader: Return proper
16363           error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
16364           #426440 (slideshow doesn't go beyond the first slide).
16366 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16368         * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
16369           opened, the final state is Stopped, not Paused. When media finish,
16370           the final state is Paused, not Stopped. Fixes #365827.
16372 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16374         * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
16375           external reference.
16377 2008-11-03  Fernando Herrera  <fherrera@novell.com>
16379         * audio-alsa.cpp:
16380         * audio-pulse.cpp:
16381         * audio.cpp:
16382         * audio.h:
16383         * debug.cpp:
16384         * debug.h:
16385         * dependencyobject.cpp:
16386         * downloader.cpp:
16387         * font.cpp:
16388         * http-streaming.cpp:
16389         * layout.cpp:
16390         * media.cpp:
16391         * mediaelement.cpp:
16392         * mediaplayer.cpp:
16393         * mms-downloader.cpp:
16394         * pipeline-asf.cpp:
16395         * pipeline-ffmpeg.cpp:
16396         * pipeline-ui.cpp:
16397         * pipeline.cpp:
16398         * playlist.cpp:
16399         * runtime.cpp:
16400         * runtime.h:
16401         * text.cpp:
16402         * textbox.cpp:
16403         * xaml.cpp:
16404         * yuv-converter.cpp: Change debug macros to runtime conditionals based
16405           on MOONLIGHT_DEBUG env variable of compile time. Checks are only
16406           enabled if configured with --with-debug=yes option.
16408 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16410         * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
16411           specified.
16413 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16415         * pipeline-ffmpeg.cpp: Revert r117547 and related.
16417 2008-11-02  Chris Toshok  <toshok@ximian.com>
16419         * text.cpp (TextBlock::InsideObject): textblocks are hit only in
16420         their ActualWidth/ActualHeight, not in the full bounding
16421         rectangle.  Fixes bug #434258.
16423 2008-10-31  Chris Toshok  <toshok@ximian.com>
16425         * runtime.h, runtime.cpp: remove transparency from properties of
16426         the surface
16427         (Surface::PaintToDrawable): add a @transparent argument to this
16428         method.
16430         * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
16431         transparency to Surface::PaintToDrawable.
16433         * window.h: move the idea of transparency here from Surface.
16435 2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
16437         Portability patch by Argiris Kirtzidis.
16439         * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
16441         * xaml.cpp (start_element): strchr() returns const.
16442         (repeat_behavior_from_str): Same.
16444 2008-10-31  Larry Ewing  <lewing@novell.com>
16446         * runtime.cpp (Surface::PaintToDrawable): instead of the content
16447         type check if active_window is fullscreen. This is uglier but the
16448         mozilla hands us rgb drawables not rgba drawables so until we have
16449         a better plan this will solve the problem.
16451 2008-10-31  Larry Ewing  <lewing@novell.com>
16453         * runtime.cpp (Surface::PaintToDrawable): only follow the
16454         transparent path if our target supports it.
16456 2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
16458         * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
16459         a bad stream so we dont include NULL holes streams[]
16461 2008-10-31  Michael Dominic K.  <mdk@mdk.am>
16463         * runtime.cpp: Reverting for now the recent crossing events 
16464         changes -- causes issues with Ink Journal.
16466 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16468         * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
16469         * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
16470           complex ifs on the GetType return value.
16472 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16474         * debug.cpp: dlopen libmono too for our stack walking methods.
16476 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16478         * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
16479           present in older ffmpeg version (r10885).
16481 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16483         * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
16484           conditions.
16486 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16488         * pipeline-ffmpeg.cpp: dlopen ffmpeg.
16490 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16492         * pipeline.cpp: Fix warning (variable might be used uninitialized).
16494 2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
16496         Fix for bug #435815.
16498         * stylus.cpp (StrokeCollection::AddedToCollection): Override so
16499         that we can avoid aborting if a stroke already has a logical
16500         parent (not an error for strokes).
16502         * error.h (MoonError::Clear): New convenience method.
16504 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16506         * libmoon.h: Fix build.
16508 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16510         * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
16511           Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
16512           mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
16513           src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
16514           into its own mediaelement.[cpp|h].
16516 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16518         * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
16519           mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
16520           mplayer.[cpp|h] -> mediaplayer.[cpp|h].
16522 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16524         * cbinding.cpp, cbinding.h: Regenerated.
16526 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16528         * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
16529           mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
16530           pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
16531           pipeline.[h|cpp] to pipeline-asf.[h|cpp].
16533 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16535         * pipeline.h: IMediaDemuxer: Add Source getter.
16536         * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
16537           account streams which aren't selected. IMediaStream::AppendFrame:
16538           update last available pts with the frame's pts.
16539         * media.cpp: MediaElement::CalculateBufferingProgress: never use last
16540           available pts to calculate buffering progress for streams which can
16541           seek to directly to the requested pts. Fix math to check for
16542           negative values to avoid weird results.
16544 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16546         * media.cpp, media.h: MediaElement: fix buffering progress after
16547           seeking regression - don't only use the buffer level in the
16548           pipeline to report buffering progress, but take into accout the
16549           point from where we seek.
16550         * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
16551           the stream's LatestAvailablePts field whenever we read a frame.
16552           Also rename the previous 'stream' (IMediaSource*) field to 'source'
16553           to avoid confusion with AudioStream.
16554         * pipeline.cpp, pipeline.h: Add a last_available_pts field to
16555           IMediaStream and the corresponding GetLastAvailablePts to
16556           IMediaDemuxer, enabling the calculation of correct buffering
16557           progress after a seek. This also requires a codec abi version bump.
16559 2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
16561         * clock.h: Change MilliSeconds_[From|To]Pts to use the new
16562         PTS_PER_MILLISECOND define.
16563         * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
16564         resulting in zero (and the endless loop of #439631).
16566 2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16568         * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
16569           #439631.
16571 2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
16573         * downloader.cpp (scheme_is): Check protocol non-null.
16574         (same_scheme): Same.
16576         * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
16577         instead of file. Also make sure to parse the path in all valid
16578         cases.
16580 2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16582         * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
16583           target_pts.
16584         * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
16585           do anything.
16587 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
16589         * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
16590         to parse out the uri scheme.
16592 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
16594         Performance optimization patch for bug #409793
16596         * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
16597         Rect bounds argument so that we can update a bounds of our
16598         choosing.
16599         (Stroke::ComputeBounds): Updated.
16600         (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
16601         (Stroke::OnCollectionItemChanged): Same.
16602         (InkPresenter::PostRender): Reset stroke dirty regions.
16603         (InkPresenter::OnCollectionItemChanged): Invalidate only the
16604         stroke's dirty region.
16606 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16608         * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
16609           null.
16611 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16613         * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
16614           work with ffmpeg.
16615         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
16616           up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
16617           i.e. the decoder output is the input of the previous time we called
16618           avcodec_decode_video, so keep track of pts from previous frame and
16619           properly set pts of the decoded frame.
16621 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16623         * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
16624           frame is above the target pts (previously we only showed the frame
16625           if the start pts was above the target pts, causing us to show one
16626           frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
16628 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16630         * media.cpp: MediaElement::Play: Call Play when in Opening state too.
16632 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16634         * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
16635           we should just work as if there's no audio at all. The video might
16636           play after the audio has stopped if the a/v streams have different
16637           length.
16639 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16641         * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
16642           queue_mutex unlocked, since the node dtor may cause unrefs, causing
16643           other dtors to be called, and it may all end up in Media::Dispose
16644           which will then try to lock the mutex again (and deadlock).
16646 2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
16648         * font.cpp (style_info_parse): Tokenize the style string so that
16649         the individual sub-parsers can be a bit smarter than than
16650         strstr().
16651         (style_width_parse): Made smarter - now handles lwsp between
16652         multi-word width specifiers (or no lwsp at all).
16653         (style_weight_parse): Same.
16655 2008-10-23  Larry Ewing  <lewing@novell.com>
16657         * media.cpp: remove compute bounds since it mirrors
16658         FrameworkElement now.
16660 2008-10-23  Larry Ewing  <lewing@novell.com>
16662         * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
16663         GetSizeForBrush.
16665 2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
16667         * textbox.cpp (TextBox::Paint): Updated.
16669         * text.cpp (TextBlock::Paint): Updated.
16671         * layout.cpp (TextLayout::Render): Swapped origin & offset
16672         arguments which feels more natural to me.
16674 2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
16676         * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
16677         width over 2048 pixels since this is likely to be corrupted values.
16678         * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
16679         someday people will laugh at me for proposing such a small value)
16681 2008-10-23  Larry Ewing  <lewing@novell.com>
16683         * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
16685         * textbox.cpp:
16686         * text.cpp: call layout with the new arguments.
16687         
16688 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16690         * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
16691           fast-forwarding video when seeking to a position which hadn't been
16692           downloaded (since we automatically pause the video then). Fixes
16693           #435908.
16695 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16697         * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
16698           DroppedFramesPerSecond. Only in SL 2.0, but very useful for
16699           debugging 1.0 too.
16701 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16703         * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
16704           changed size). IMediaStream: Remove msec_per_frame, it's already in
16705           VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
16706           loose less precision.
16707         * mplayer.cpp: Calculate advance frame timeout based on video fps.
16709 2008-10-22  Chris Toshok  <toshok@ximian.com>
16711         * runtime.cpp (Surface::HandleUICrossing): disable the crossing
16712         check from r116528 in the case of a windowless plugin (where
16713         event->window == NULL).  Also, active_window->GetGdkWindow should
16714         never be trusted to return the actual window - it's use is
16715         strictly to find the screen/monitor for full-screening.  In the
16716         windowless case it returns the toplevel netscape window.
16718 2008-10-22  Larry Ewing  <lewing@novell.com>
16720         * brush.cpp, brush.h: remove the uielement references from the api
16721         pass the required information as a rect to SetupBrush instead.
16723         * shape.cpp, shape.h:
16724         * panel.cpp:
16725         * layout.cpp:
16726         * text.cpp:
16727         * uielement.cpp:
16728         * control.cpp:
16729         * broder.cpp: update SetupBrush callers for the new signature.
16731 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16733         * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
16734           last_current_pts to their max value, to detect when they haven't
16735           been set yet. Properly reinitialize these variables (to their max
16736           values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
16737           case.
16738         * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
16739           current pts, handle this. Fixes fast-forwarding issue in #435908.
16741 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16743         * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
16744           use random memory if we don't have a reader.
16746 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16748         * mms-downloader.cpp: Add logging methods.
16750 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16752         * media.cpp: Sprinkle Dispose calls to plug leaks.
16754 2008-10-20  Chris Toshok  <toshok@ximian.com>
16756         * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
16757         before reassigning (and reallocating memory for) it.
16759         * dependencyobject.h, dependencyobject.cpp: add an optional
16760         argument to all the EventObject::AddHandler* overloads, called
16761         data_dtor, which is invoked just before the EventClosure is
16762         destroyed so that the data can be freed.
16764 2008-10-20  Chris Toshok  <toshok@ximian.com>
16766         * window-gtk.h, window-gtk.cpp: move the Surface conversion from
16767         MouseCursor -> GtkCursor here.
16769         * runtime.h, runtime.cpp: surface only deals with MouseCursors
16770         anymore.  the gtk support is in window-gtk now.
16771         
16772         * window.h: remove SetCursor (GdkCursor) and add
16773         SetCursor (MouseCursor), so subclasses of MoonWindow can do their
16774         own thing.
16776 2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
16778         * media.cpp (MediaElement::MediaOpened): If the stream decoder is
16779         null, use null for the decoder_name. Fixes a segfault.
16781 2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
16783         * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
16784         since a lot of loops don't handle NULL values.
16786 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
16788         * runtime.cpp: More fixes to crossing events: when entering fullscreen
16789         ignore the crossing events coming from previous window. Otherwise we get
16790         double enter/leave pair.
16792 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
16794         * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
16795         correctly (no parent window).
16797 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16799         * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
16800           nothing if not DEBUG is set, removing the need for surrounding all
16801           print_stack_trace calls with #if DEBUG.
16803 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16805         * pipeline.cpp: Remove debugging code.
16807 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
16809         * animation.cpp:
16810         * animation.h:
16811         * applier.h: Fixing one more osbcure case of Storyboard transitions where
16812         stopping a prev sboard makes the next one starting from bad base value.
16814 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
16816         * runtime.cpp: Make sure we get the new pointer motion notify when 
16817         entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
16818         but interestingly doesn't fix the original problem of #434267.
16820 2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
16822         * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
16823         when using "backend=image".
16825 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16827         * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
16828           now, not tiled), and fix inner loop, we were including one pixel
16829           too many for width and height.
16831 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16833         * pipeline.cpp: RegisterMSCodecs: if there's no codec in
16834           ~/.mozilla/plugins, use just the filename of the codec library and
16835           make dlopen search for it. This makes it easier to run parallell
16836           tests from different revisions without having the codecs from each
16837           revision overwrite eachother in user's home.
16839 2008-10-16  Geoff Norton  <gnorton@novell.com>
16841         * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
16842         center it in the available window instead.
16844 2008-10-16  Geoff Norton  <gnorton@novell.com>
16846         * pipeline-ui.cpp: Avoid a resize when realizing which causes an
16847         annoying flicker in the codec window.
16849 2008-10-16  Geoff Norton  <gnorton@novell.com>
16851         * pipeline.cpp: Unbreak the world.
16853 2008-10-16  Geoff Norton  <gnorton@novell.com>
16855         * pipeline(-ui).cpp: Use the updated mscodec name and location.
16857 2008-10-16  Fernando Herrera  <fherrera@novell.com>
16859         * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
16861 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
16863         * text.cpp (TextBlock::Layout): Delay allocation of List so that we
16864         don't leak when TextBlock::TextProperty is NULL.
16866 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
16868         * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
16869         on the window. Fix one more leak.
16871 2008-10-16  Jb Evain  <jbevain@novell.com>
16873         * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
16874         mark managed constructor internal.
16876 2008-10-16  Jb Evain  <jbevain@novell.com>
16878         * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
16879         instead of an ArgumentException when providing an out of range index.
16881 2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16883         * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
16885 2008-10-15  Chris Toshok  <toshok@ximian.com>
16887         * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
16888         is already down, and if so, don't emit another event.  (really?
16889         there's a test for this?  ugh.).  also, let Keyboard know the key
16890         is down.
16891         (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
16893         * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
16894         quite a bit -- it might soon deserve its own file.  It now
16895         maintains a static hashtable of keys that are pressed/released
16896         inside the moonlight plugin, and has logic to map a gdk keyval to
16897         Key, and query if a particular key is pressed.
16899 2008-10-15  Larry Ewing  <lewing@novell.com>
16901         * uielement.cpp: fix the transform ordering.
16903         * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
16905 2008-10-15  Larry Ewing  <lewing@novell.com>
16907         * uielement.cpp, uielement.h: remove UpdatePosition and
16908         ComputePosition, all transform changes are handled in
16909         ComputeTransform now.
16911         * shape.cpp, shape.h: update for the new transform api.
16912         
16913         * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
16914         
16915         * canvas.cpp: Use UpdateTransform. 
16917         * point.h: add a (lame) == operator.
16918         
16919 2008-10-15  Larry Ewing  <lewing@novell.com>
16921         * geometry.cpp, geometry.h: add shape bounds caching to all
16922         geometry classes apply the transform when retrieving the bounds.
16923         Make GetBounds the public bounds interface and make the
16924         computation interface protected.
16926         * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
16928 2008-10-14  Larry Ewing  <lewing@novell.com>
16930         * geometry.cpp, geometry.h: remove unused arguments to
16931         ComputeBounds remove caching from PathGeometry.
16933         * uielement.cpp, shape.cpp: call with correct arguments.
16935 2008-10-14  Larry Ewing  <lewing@novell.com>
16937         * uielement.cpp, uielement.h: make ComputeTransform virtual and
16938         have it return a bool.
16940         * shape.cpp, shape.h: override ComputeTransform and optimize the
16941         bounds computations.  Use a general ComputeShapeBounds for actual
16942         drawn bounds compuations for now.
16943         
16944         * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
16945         circuit path to DirtyTransform for elements that can recompute
16946         without updating bounds.
16948 2008-10-13  Larry Ewing  <lewing@novell.com>
16950         * geometry.cpp, geometry.h: remove unused arguments from function
16951         prototypes.
16952         
16953         * uielement.cpp, shape.cpp: update calls.
16954         
16955 2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
16957         Fix for bug #435798
16959         * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
16960         that we are setting the default brush/inlines.
16961         (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
16962         the actualHeight.
16964 2008-10-14  Chris Toshok  <toshok@ximian.com>
16966         * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
16967         the return value.
16968         (MoonWindowGtk::InitializeFullScreen): unref the return value of
16969         GetGdkWindow.
16971         * cbinding.h, cbinding.cpp: regen so we don't have to use void*
16972         for the parent parameter to MoonWindowGtk.
16974 2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
16976         * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
16977         the hashtable while we're flushing it on shutdown. Add a few more
16978         checks and avoid re-creating the hashtable on flush.
16980 2008-10-14  Geoff Norton  <gnorton@novell.com>
16982         * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
16983         longer requiring the bits_per_pixel.
16985 2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
16987         * window.h: GetGdkWindow () method
16989         * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
16990         taking the parent window reference. Only go fullscreen on the monitor
16991         moonlight is running on.
16993         * runtime.cpp: call the new MoonWindowGtk ctor
16995 2008-10-14  Fernando Herrera  <fherrera@novell.com>
16997         * pipeline-ui.cpp: Override codecs download URL with
16998         MOONLIGHT_CODEC_URL env variable if present.
17000 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
17002         * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
17003         variable expecting it to be the value returned from read(), don't
17004         modify it inside the loop, use another variable for that. Before
17005         eating leading whitespace, make sure we have data.
17007 2008-10-13  Fernando Herrera  <fherrera@novell.com>
17009         * audio.cpp: Fix AudioSources::GetNext iteration for next playing
17010         source logic. Fixes bug #433267
17012 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
17014         * media.cpp (MediaElement::Play): Don't add a TickCall to start
17015         playing if we haven't even opened the media yet. Fixes bug
17016         #434462.
17018 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
17020         * dependencyproperty.cpp: Fixing a mem leak.
17022 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
17024         * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
17025         This fixes some recent problems in PopFly.
17027 2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
17029         * downloader.cpp (validate_policy): Made static so we don't export
17030         this symbol.
17032 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
17034         * dependencyproperty.cpp (detach_target_func): Fix bad function 
17035         signature for GHFunc.
17036         * dependencyobject.cpp (unref_object): Fix bad function signature
17037         for GFunc.
17039 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17041         * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
17042           start buffering until this is set to true (starts out as false).
17043         * media.cpp: Only enable buffering on the media after reading the
17044           markers, otherwise we may loose markers in the beginning of the
17045           media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
17046           tick call to notify the MediaElement that a marker has been added,
17047           always check in AdvanceFrame.
17048         * mplayer.cpp: Add a null check in a printf.
17050 2008-10-10  Larry Ewing  <lewing@novell.com>
17052         * media.cpp (Image::DownloaderComplete): handle the case where the
17053         sureface uri and the new uri are the same.
17055 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17057         * pipeline-logo.cpp: New logo.
17059 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17061         * media.cpp: MediaElement::Reinitialize: Dispose the media to break
17062           cyclic refs.
17063         * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
17064           get non-decoded frames anymore. Open: Handle null demuxers,
17065           shouldn't happen, but at least we won't crash if it happens.
17066         * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
17067           Media::Open: unref the decoder after giving it to the stream, the
17068           stream now take a ref on the decoder. Media::EnqueueWork:
17069           queued_requests might be nothing if we're disposed. IMediaStream:
17070           move cleanup to dispose and take a ref on the decoder. Add decoder
17071           getter/setters, and update code to use them.
17073 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
17075         * applier.cpp: Fix another bad function signatures for GFunc.
17077 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17079         * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
17080           FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
17081           stuttering when using ffmpeg.
17083 2008-10-09  Jackson Harper  <jackson@ximian.com>
17085         * runtime.cpp: The resize event is only emitted when switching
17086         from fullscreen to non fullscreen.
17088 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17090         * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
17091           deleting them.
17093 2008-10-09  Jackson Harper  <jackson@ximian.com>
17095         * runtime.cpp: When we change to/from fullscreen there should be a
17096         resize event.
17098 2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
17100         * media.cpp (Image::CreateSurface): Protect against a NULL
17101         filename (valid value). This will avoid crash like bug #433810
17102         even if, in this case, the problem lies elsewhere (bad downloader
17103         which looks related to #433814).
17105 2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
17107         * font.cpp (FontFace::LoadDefaultFace): Pass the families to
17108         LoadDefaultFont() for font name comparison, we need to match the
17109         font names exactly or fall back to the next font.
17111 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17113         * audio.cpp: Add a nullcheck.
17115 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17117         * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
17118         don't dupe) uri.
17120 2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
17122         * font.cpp: Add fallback for Liberation fonts.
17124         * pipeline.cpp (Media::Warning): Replacement for both
17125         Media::AddMessage() methods.
17127 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17129         * applier.cpp: Fix function signatures for GFunc and GHFunc.
17130         Fix random crash when closing silverlight world #433461
17132 2008-10-08  Larry Ewing  <lewing@novell.com>
17133         * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
17134         any existing render_cb attachments before adding new ones in case
17135         our realize wordering is out of sync.
17137         Fixes the rest of b.n.c #432975
17139 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17141         * mp3.cpp: Fix boolean->MediaResult logic.
17143 2008-10-08  Jackson Harper  <jackson@ximian.com>
17145         * playlist.cpp|h: When we encounter invalid characters in an
17146         attribute try to patch them and reparse the document.
17148 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17150         * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
17151           block sizes instead of hard-coded almost-matching values. Make
17152           mpeg_frame_length return a floating point value, and in ReadHeader
17153           calculate total duration using floating point. Fixes
17154           test-mp3-media-properties.html
17156 2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
17158         * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
17159         1.8.0, changing the error msg.
17161 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17163         * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
17164         on bad XAML input when no (NULL) dependecy property is returned.
17166 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17168         * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
17169           MediaMarker refcounted. Fix a couple of crashing leakfixes, and
17170           simplify cleanup code a tiny bit.
17172 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17174         * audio-pulse.h: Remove unused method definition.
17176 2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
17178         * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
17179         the old baseValue before allocating a new one.
17181         * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
17182         delete dx_info when we're done with it. Also get rid of the
17183         unneeded parser pointer since we're just using this->parser
17184         anyway.
17186 2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
17188         * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
17189         GdkColor unless we need them. Unref the pixmap after the call to
17190         gdk_cursor_new_from_pixmap.
17192 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
17194         * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
17195         a MediaFrame leak-per-node whenever the queue is cleared.
17197         * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
17198         frame->bufefr before updating it to point to a new malloc'd
17199         buffer.
17200         (ASFDemuxer::TryReadFrame): Delete the frame on error.
17201         (IMediaStream::PopFrame): After getting the node's frame, set the
17202         node->frame to NULL.
17204 2008-10-06  Larry Ewing  <lewing@novell.com>
17206         * media.cpp, media.h: rework image code to skip using a downloader
17207         when a cached image surface is available.  Fix a crash where
17208         multiple loading errors occur for a single image.  Rewrite
17209         existing SetSourceAsync ticks when the source changes again before
17210         the initial tick was processed.  
17212         The goal here is to greatly reduce the work we do in cases where
17213         existing sources are moved between images. Future work should
17214         consist of moving things to the ImageSource model internally.
17216 2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
17218         * text.cpp (Glyphs::Layout): Handle NULL values coming from 
17219         GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
17220         not come up before today or why it now fails anyway).
17222 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
17224         * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
17225         stuff, it's too expensive for what we need.
17226         (ImageBrush::TargetUnloaded): Same.
17228 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17230         * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
17232 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17234         * pipeline.cpp: Reorganize some code.
17236 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17238         * audio.cpp, audio.h: Access the Media directly to enqueue frames,
17239           avoiding the need for a tick call on the main thread. If audio
17240           underflowed and we don't have more data available, set buffer
17241           underflow flag on the media player.
17242         * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
17243           the data available, return MEDIA_NOT_ENOUGH_DATA.
17244         * downloader.cpp, downloader.h: Remove RequestPosition methods, no
17245           longer needed.
17246         * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
17247           use that value to determine if we should seek or not.
17248         * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
17249           audio/video needs more data, but the buffer is empty.
17250         * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
17251           have an in-memory buffer of demuxed frames (one queue for frames
17252           for each stream), and calculate buffer size from that.
17253           ProgressiveSource: open an additional file descriptor for writing,
17254           makes locking unnecessary. Change al io to return failure if there
17255           is not enough data, this allows us to remove all the
17256           blocking/waiting logic. MemoryQueueSource: push seeks to
17257           MmsDownloader, instead of waiting for MmsDownloader to check for
17258           pending seeks. FileSource: don't reinvent the wheel and use stdio
17259           to get buffered io instead of having buffering logic ourselves.
17260         * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
17261           underruns correctly.
17262         * media.cpp: MediaElement: Retrieve buffer size from the demuxer
17263           instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
17264           trying to open media and retry later on.
17266 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17268         * src.mdp: Updated.
17270 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17272         * dependencyobject.cpp: Use atomic operations with
17273           objects_created|destroyed.
17275 2008-10-02  Chris Toshok  <toshok@ximian.com>
17277         * resources.cpp (glib_is_stupid): we need to cast value in order
17278         to delete it.
17280 2008-10-02  Geoff Norton  <gnorton@novell.com>
17282         * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
17283         Add some headers needed to compile when #undef DEBUG
17285 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
17287         * xaml.cpp:  Fix mixup between delete and g_free
17289 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17291         * value.cpp: Fix == for KeyTime (padding too). Add comments and
17292         indent method correctly.
17294 2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
17296         * xaml.cpp: Move the definition of XamlElementInfo to the top so
17297         that g++ doesn't complain about deleting an incomplete type inside
17298         the XamlElementInstance dtor. Also gets rid of other g++ compiler
17299         warnings.
17301         * list.cpp (List::InsertAfter): New convenience function to sort
17302         of balance the API.
17304         * font.cpp (FontFace::Load): Don't ref the default face, it is
17305         returned to us with a ref already.
17307 2008-10-02  Jackson Harper  <jackson@ximian.com>
17309         * xaml.cpp: Now that Info's aren't shared, Instance's can free
17310         them.  Also properties need to free their name.
17312 2008-10-02  Larry Ewing  <lewing@novell.com>
17314         * geometry.cpp (Geometry::OnSubPropertyChanged): move
17315         OnSubPropertChanged to Geometry to pick up transform changes until
17316         a better solution is devised.  Fixes updated
17317         test-clip-invalid-update.htm.
17319 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17321         * value.cpp: Fix == for Duration and RepeatBehavior. We can't
17322         use memcmp to compare them since they include (unassigned)
17323         padding. Both structs overrides their == operator so we use that.
17325 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
17327         * resources.cpp: Free the values (not only their content) when
17328         the hash table is destroyed. Correctly (delete) free the value
17329         when compiled against glib < 2.12 (e.g. SLED10).
17331 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17333         * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
17334         mess clipping. Add similar fill rule setting code in Geometry::Draw
17335         because Shape::Fill is not called for clipping (but the fill rule
17336         still applies). Comment both so I don't mess with them again :)
17338 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17340         * font.cpp (FontFace::LoadGlyph): We need to force the font size
17341         if we don't own it, since we don't know what the current size is
17342         set to.
17343         (FontFace::Kerning): Same.
17344         (FontFace::GetExtents): Here too.
17346 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17348         Attempt #2 at fixing bug #430766.
17350         * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
17351         - this helps us do better fallback for bug #430766.
17352         (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
17353         try to use the Microsoft Lucida Sans font if available. If not,
17354         fall back to GNOME's Bitstream Vera Sans font. Then fallback to
17355         DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
17356         render many of the glyphs in bug #430766, hence why it is last
17357         choice). If the user doesn't have the X.Org fonts, he's SOL.
17359 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17361         * value.h[.in],value.cpp: Fix operator == to work for non-DO and
17362         non-string values. This fix the issue of removing stuff from a
17363         ResourceDictionary (while a copy still exists in the underlying
17364         Collection).
17366 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17368         Attempt #1 at fixing bug #430766.
17370         * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
17371         argument to LoadFontFace() so that we don't fail when matching the
17372         loaded family name.
17374 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17376         * font.cpp (FontFace::OpenFontDirectory): Now a static class
17377         method.
17378         (FontFace::LoadFontFace): New static method which tries to load an
17379         FT_Face given an FcPattern and a list of families.
17380         (FontFace::FontFace): No longer tries to load an FT_Face, instead
17381         we have it passed to us as an argument.
17382         (FontFace::LoadDefaultFace): New static method to load a global
17383         FT_Face representing the default system font.
17384         (FontFace::GetDefault): Instantiates a new FontFace using the
17385         global system default FT_Face.
17386         (FontFace::Load): Now takes only a TextFontDescription (much
17387         cleaner/simpler). If we are loading the default system font or if
17388         loading the requested font fails, simply return a new FontFace
17389         based on the global system default FT_Face.
17390         (TextFont::TextFont): Now takes fewer arguments (cleaner API,
17391         yay!).
17392         (TextFont::Load): Now only takes a TextFontDescription argument to
17393         make the API simpler/cleaner.
17394         (TextFontDescription::CreatePattern): Now public and takes a
17395         'sized' argument specifying whether or not the created pattern
17396         should include the size field. This is needed because TextFont
17397         caches based on all attributes while FontFace caches on everything
17398         but size. Also, don't include weight, width, or slant if our font
17399         family is the default (Portable User Interface is not allowed to
17400         have any of those attributes).
17401         (TextFontDescription::IsDefault): New method to decide if our
17402         family is the default or not.
17403         (TextFontDescription::GetFamilies): New convenience method to
17404         strsplit the family string into an array.
17405         (TextFontDescription::SetFamily): If the value "Portable User
17406         Interface" is set, set our family to NULL instead.
17408 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17410         * geometry.cpp (GeometryGroup::Draw): Make sure the original
17411         fill rule is still in effect at the end of drawing the group.
17413 2008-10-01  Chris Toshok  <toshok@ximian.com>
17415         * geometry.cpp (GeometryGroup::Draw): reinstate the call to
17416         cairo_set_fill_rule removed in r105643.  This fixes
17417         http://mapul.com/Tutorials.html.
17419 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17421         * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
17422         extents.PointInside check since there was no cairo_restore
17423         if false was returned. Looks likely that false was not much
17424         returned (if ever).
17426 2008-09-30  Chris Toshok  <toshok@ximian.com>
17428         * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
17429         recompute our bounds when an item (can only be a stylus point)
17430         changes its properties.  Fixes stroke bounds in the face of
17431         dragging text in inkjournal.
17433 2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17435         * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
17436           pa_stream_[cork|trigger|flush|drain] since the audio source might
17437           have gotten deleted by the time the callback is called.
17439 2008-09-30  Chris Toshok  <toshok@ximian.com>
17441         * dirty.cpp (Surface::ProcessDownDirtyElements): use
17442         AddDirtyElement instead of |= to set flags, since it might require
17443         dirty list manipulation.
17445 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17447         * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
17448         this time with new/delete to make it work with non-DO.
17450 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
17452         * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
17454 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17456         * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
17457         returns false.
17459 2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
17461         * downloader.cpp: fix the leak in validate_policy.
17463 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17465         * debug.cpp: Make sure allocated 'binary' is freed in every case
17466         inside addr2line_offset.
17468 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17470         * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
17471           ensures that the dtor won't be called while playing or that we'll
17472           be playing destructed sources, but Close might be called at any
17473           time.
17475 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17477         * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
17478           underflows and /0 errors.
17480 2008-09-29  Chris Toshok  <toshok@ximian.com>
17482         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
17483         if during the course of traversing the tree, we come across a temp
17484         namescope, merge that up instead of recursing down even further.
17485         (DependencyObject::SetLogicalParent): only clear the namescope if
17486         we're merging ourselves into a parent namescope.
17488         * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
17489         here.  the parser does it for us if we're parsing an element, and
17490         programmatically created objects don't seem to have them.
17492 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17494         * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
17495         to get the download policy based on the uri. By default, returns
17496         MediaPolicy.
17497         (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
17498         mms://
17499         (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
17500         of hardcoding mms:// check.
17501         (MediaBase::OnPropertyChanged): Same.
17503         * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
17504         (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
17505         image once we have at least 1 target which is loaded in the visual
17506         tree.
17507         (ImageBrush::TargetUnloaded): Disallow image downloads once our
17508         loaded_count falls back to 0.
17509         (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
17510         events.
17511         (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
17512         and Unloaded events placed on the target object.
17514         * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
17516         * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
17517         AddTarget()/RemoveTarget() on DO property values as they are
17518         set/unset.
17519         (DependencyObject::AddTarget): New virtual method which gets
17520         called on DependencyObject property values when they are set on a
17521         target.
17522         (DependencyObject::RemoveTarget): Same but when unset.
17524         * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
17525         state-change of allowing new downloads vs not.
17526         (MediaBase::OnLoaded): Call SetAllowDownloads(true).
17528 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17530         * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
17531         state. Fixes some regressions introduced by moving the async
17532         downloading logic from MediaBase::SetSurface() into
17533         ImageBase::OnLoaded().
17535 2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
17537         * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
17539 2008-09-28  Chris Toshok  <toshok@ximian.com>
17541         * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
17542         SetValue (NameProperty) - just set the NameProperty, it'll update
17543         the proper namescope automatically.
17544         (get_parent): remove.
17545         (set_parent): remove.  we no longer need to maintain a temporary
17546         chain while parsing.  there's also no need for set_parent(NULL)
17547         anywhere.
17548         (XamlElementInstance::TrySetContentProperty): if there was an
17549         error in DependencyObject::SetValueWithError or
17550         Collection::AddWithError, raise a parser error.
17551         (dependency_object_add_child): call
17552         Collection/ResourceDictionary::AddWithError, and raise a
17553         parser_error if it fails.  also, remove set_parent (NULL) calls.
17555         * dependencyobject.h,
17556         dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
17557         (DependencyObject::RegisterAllNamesRootedAt): this now takes a
17558         MoonError argument so we can signal when there's been a conflict.
17559         (DependencyObject::SetLogicalParent): this also now takes a
17560         MoonError argument, and this is where ALL the namescope merging
17561         code lives.  It's been removed from everywhere else.  Also, this
17562         change means we can no longer be setting/clearing the parent in
17563         xaml.cpp, as it destroys temp namescopes.
17565         * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
17566         a MoonError parameter, so we can communicate back an
17567         error (conflicting names) properly.
17568         (NameScope::Dump): new method.
17569         
17570         * collection.h, collection.cpp (Collection::AddWithError): new
17571         method, generate a binding for this instead of Add.  This allows
17572         us to check for name conflicts when a DOCollection is updated.
17573         (Collection::InsertWithError): same.  Also, this method has
17574         something quirky about it - it calls AddedToCollection *before*
17575         the collection is modified.  suck, but the logic in that code
17576         needs to be run before the change occurs.
17577         (Collection::AddedToCollection): add a MoonError arg so we can
17578         properly pass errors back up.
17579         (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
17580         MoonError arg.
17581         (DependencyObjectCollection::AddedToCollection,
17582         DependencyObjectCollection::RemovedFromCollection): remove
17583         namescope handling from here.
17584         
17585         * animation.h,
17586         animation.cpp (KeyFrameCollection::AddedToCollection): track api
17587         change to Collection::AddedToCollection.
17589         * resources.h, resources.cpp: track changes to AddedToCollection,
17590         RegisterAllNamesRootedAt, and AddWithError.  Also, remove
17591         namescope handling code from here.
17593         * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
17594         
17595 2008-09-28  Chris Toshok  <toshok@ximian.com>
17597         * geometry.cpp (Geometry::OnPropertyChanged): this method was
17598         never chaining up to DependencObject::OnPropertyChanged, which it
17599         must do for properties whose ownerType != Geometry.
17601 2008-09-28  Chris Toshok  <toshok@ximian.com>
17603         * media.cpp (TimelineMarkerCollection::Add): no need to check the
17604         element type of the value, by the time it makes it here it should
17605         already be the right type.
17607 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
17609         * media.cpp (MediaBase::OnLoaded): Logic moved here from
17610         SetSurface().
17611         (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
17612         should start the downloader yet.
17614         * xaml.cpp: Revert the hydrating check for SetSurface() from the
17615         previous commit. This is causing a bunch of failures :(
17617 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
17619         * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
17620         parser_info->hydrating and parser_info->hydrate_expecting based on
17621         whether or not we are really doing a HydrateFromString() vs
17622         CreateFromString().
17623         (create_element_info_from_imported_managed_type): Only
17624         SetSurface() if we are hydrating.
17625         (XamlElementInstanceNative::CreateItem): Same.
17626         (XamlElementInfoManaged::CreateElementInstance): Here too.
17627         (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
17628         (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
17629         (XamlElementInfoImportedManaged::CreateElementInstance): Same.
17630         (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
17631         (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
17633 2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17635         * dependencyobject.cpp, dependencyobject.h: Make objects_created and
17636           objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
17637           track a specific type, might be useful when the id varies from run
17638           to run. Make Dispose public.
17639         * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
17640           destructed.
17641         * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
17642           cleanup properly there instead of in the dtor. This breaks a
17643           circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
17645 2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
17647         * downloader.cpp: use StreamingPolicy for streaming
17649 2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
17651         * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
17652         g_str_has_prefix() on NULL strings.
17654 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17656         * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
17657           only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
17659 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17661         * downloader.cpp: validate_policy: Fix boolean logic according to
17662           comment, fixes crash.
17664 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17666         * media.cpp: Plug one more leak.
17668 2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
17670         * downloader.cpp: neforce security policies on Open ()
17672 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17674         * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
17675           for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
17676           exist anymore.
17678 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17680         * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
17682 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17684         * downloader.cpp: Fix a potential leak.
17686 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17688         * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
17689           delete the listener link, not only remove it. Plugs a leak.
17691 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17693         * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
17694           yuv-converter.h: Sprinkle virtual on some destructors.
17696 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17698         * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
17699           another leak.
17701 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17703         * audio-pulse.cpp: Another leak plugged.
17705 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17707         * debug.cpp: Fix stack traces.
17709 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17711         * audio-pulse.cpp: Add a missing unref.
17713 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17715         * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
17717 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17719         * pipeline-ui.cpp: Hush.
17721 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17723         * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
17724           functions.
17726 2008-09-24  Aaron Bockover  <abockover@novell.com>
17728         * pipeline-ui.cpp: 
17729         * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
17730         in regards to header messages, detail messages, spacing, padding, and
17731         button layout; use a GtkDialog instead of a GtkWindow, and take all
17732         input through the dialog's response signal; require the user to explicitly
17733         tell us that they never want to see the installer again instead of 
17734         assuming on cancel; fix crash when cancelling while downloading
17736 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
17738         * dependencyproperty.cpp (resolve_property_path): Fixicated.
17740 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
17742         * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
17743         given to g_file_test 
17745 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
17747         * dependencyproperty.cpp (resolve_property_path): Cleaned up the
17748         code, robustified, and fixed bug #429396.
17750 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
17752         * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
17753         does not exists.
17754         [Fix bug #429396]
17756 2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17758         * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
17759         * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
17760           pipeline-logo.cpp and made it an extern variable to avoid
17761           duplicating the entire image in the binary for every time we want
17762           to use it.
17763         * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
17764           codecs from our configuration, and always register ms codecs first
17765           in the list. NullDecoder: fix a buffer overrun and update according
17766           to pipeline-logo changes.
17767         * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
17768           to store our configuration.
17769         * media.cpp: MediaElement::MediaOpened: if any of the streams is
17770           handled by a nulldecoder, it means we don't have ms codecs
17771           installed. If so, show the codec downloader UI.
17772         * Makefile.am, src.mdp: Updated.
17774 2008-09-23  Chris Toshok  <toshok@ximian.com>
17776         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17777         back out (#if false) this change for now.
17779 2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
17781         * runtime.h|cpp: Surface::GetSourceLocation()
17783 2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
17785         * uielement.cpp: Delete the temporary region before returning on an
17786         invisible element (common in defiwind).
17788 2008-09-22  Chris Toshok  <toshok@ximian.com>
17790         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17791         another case we hadn't addressed - if the object we're merging
17792         *from* doesn't have a namescope, we iterate over the entire tree,
17793         registering names into our (possibly temporary, if it didn't exist
17794         before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
17796         * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
17797         leak.
17799 2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
17801         * dependencyobject.cpp (merge_namescope): Return the parent_ns so
17802         that our caller doesn't have to call FindNameScope() in case it
17803         was created.
17804         (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
17805         change.
17807 2008-09-22  Larry Ewing  <lewing@novell.com>
17809         * geometry.cpp (Geometry::Draw): fix the transform brokeness that
17810         crept in.  Fixes test-geometry-transform.xaml
17812 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
17814         * animation.cpp:
17815         * clock.cpp:
17816         * clock.h: 0-time animations are valid (as in: passing the timeline
17817         validation test) but do nothing. Fixes the clock11 test.
17819 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
17821         * animation.cpp:
17822         * animation.h: Attach storage only once. Fixes a crash in clock21.html.
17824 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
17826         Fix for bug #427560
17828         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17829         Use FindNameScope() to get the scope to merge into, and only call
17830         this once - don't re-get it ever loop.
17832 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
17834         * dependencyobject.cpp (EventObject::AddXamlHandler): New method
17835         to add a handler from XAML so that we can force the listener token
17836         to be 0, like Silverlight does.
17838 2008-09-19  Michael Dominic K.  <mdk@mdk.am>
17840         * animation.cpp:
17841         * animation.h: Attach the storage to the prev storage on the
17842         partuclar AnimationClock/Storage Begin, not when the parent
17843         storyboard begins. That fixes: #412074 .
17845 2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
17847         * src/downloader.cpp:
17848         * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
17849         argument. Drop downloder_open method.
17850         * src/media.cpp:
17851         * src/playlist.cpp:
17852         * src/deepzoomimagetilesource.cpp:
17853         * src/text.cpp: use the new Open with the corresponding policy.
17855 2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
17857         * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
17858         offenders are gone now but it's still leaking in a few cases.
17860 2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17862         * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
17863           any custom Cleanup methods (allowing the Cleanup method to free
17864           buffer if g_free isn't the way to do it).
17866 2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
17868         Fixes bug #410619.
17870         * dependencyobject.cpp (class EventLists): Init current_token to
17871         1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
17872         apps use 0 to mean that a g_signal is not connected).
17874 2008-09-18  Geoff Norton  <gnorton@novell.com>
17876         * media.cpp: Stop leaking pixbuf loaders.
17878 2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
17880         * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
17881         g_free-ing it later.
17883 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17885         * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
17886           RUNTIME_INIT_CODECS_DEBUG.
17887         * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
17888           info.
17890 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17892         * src.mdp: Updated.
17893         * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
17894           moonlight logo for video and plays silence for audio.
17895         * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
17896         * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
17897           data.
17898         * pipeline-logo.inc: Added.
17900 2008-09-17  Larry Ewing  <lewing@novell.com>
17902         * border.cpp:
17903         * control.cpp:
17904         * grid.cpp:
17905         * frameworkelement.cpp: start filling in InvalidateArrange and
17906         InvalidateMeasure calls.
17908         * panel.cpp:
17909         * panel.h:
17910         * canvas.h:
17911         * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
17912         change handling here from panel since it is a Canvas property.
17914 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17916         * pipeline.h: Remove some dead code.
17918 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17920         * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
17921           add flags to disable both ffmpeg and ms codecs and include them by
17922           default.
17923         * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
17924           (until it gets integrated in libmscodecs.so), and register the mp3
17925           codec. Media::Initialize: Update according to runtime init flag
17926           changes, and always register null encoders.
17928 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17930         * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
17931           delete downloaded media files.
17933 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17935         * dependencyobject.cpp: Add TODO.
17937 2008-09-17  Jackson Harper  <jackson@ximian.com>
17939         * xaml.cpp: Don't try setting the content prop in managed if there
17940         is no cdata content (we're just dealing with spaces).
17942 2008-09-17  Larry Ewing  <lewing@novell.com>
17944         * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
17945         use the right index value.
17947 2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
17949         * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
17950         SizeChangedEventArgs.
17952 2008-09-17  Michael Dominic K.  <mdk@mdk.am>
17954         * clock.cpp:
17955         * clock.h: Separate raising events from raising completed events. 
17956         In certain clock hierarchies this would cause us to emit completed event
17957         before raising animation setter events.
17959         * applier.cpp: Enabling the applier again.
17960         * applier.h: Animation resets don't have INSTANT precedence. The just 
17961         have higher precedence than normal animation setters.
17963 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17965         * audio-pulse.cpp: Remove stray characters.
17967 2008-09-16  Chris Toshok  <toshok@ximian.com>
17968         
17969         * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
17971         * frameworkelement.h, frameworkelement.cpp
17972         (FrameworkElement::UpdateLayout): override
17973         UIElement::UpdateLayout, and if that base class method returns
17974         true, emit LayoutUpdatedEvent.
17976         * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
17977         DirtyMeasure.
17978         (UIElement::InvalidateArrange): add DirtyArrange.
17979         (UIElement::DoMeasure): this should drive the measure process -
17980         needs filling in, though.
17981         (UIElement::DoArrange): this should drive the arrange
17982         process. same.
17983         (UIElement::UpdateLayout): change return type to bool.  call
17984         DoMeasure and DoArrange synchronously, and return true if we
17985         arrange.
17987         * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
17988         toplevel.
17990         * cbinding.h, cbinding.cpp: regen.
17992 2008-09-16  Larry Ewing  <lewing@novell.com>
17994         * clock.cpp: make AddTimeout take a priority. Make the render
17995         timeout slightly lower than default so that we process gdk events
17996         before rendering.
17998         * media.cpp: raise the priority of the media timeout so that it
17999         doesn't drop below default or the render tick.
18001 2008-09-16  Chris Toshok  <toshok@ximian.com>
18003         * dirty.h, dirty.cpp: add a priority queue-like setup for the
18004         dirty lists, where priority == level in the visual hierarchy.
18005         Processing the down dirty list proceeds from lower "priority" to
18006         higher, and the up dirty list proceeds from higher to lower.
18007         * runtime.h, runtime.cpp: use the new dirty lists.
18009         * uielement.h, uielement.cpp: add a visual_level field, which is
18010         updated when the element is added to the
18011         hierarchy (this->visual_level = parent->visual_level + 1).
18013 2008-09-16  Jackson Harper  <jackson@ximian.com>
18015         * xaml.cpp: keys should be a property of the instance.
18017 2008-09-16  Fernando Herrera  <fherrera@novell.com>
18019         * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
18020           has codecs=microsoft.
18021         * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
18022           in RUNTIME_INIT_BROWSER.
18024 2008-09-16  Jackson Harper  <jackson@ximian.com>
18026         * xaml.cpp: Move cdata handling code into the content property
18027         setters, allow managed content property setters to set values from
18028         strings.
18030 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18032         * audio-pulse.cpp: dlsym another method previously forgotten.
18034 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18036         * multiscaleimage.h, textbox.h: Use quotes to include our headers.
18038 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18040         * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
18041           don't link with alsa anymore
18043 2008-09-16  Jb Evain  <jbevain@novell.com>
18045         * template.h (TemplateBinding): decorate with a SLVersion=2.
18047 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18049         * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
18050           link with pulseaudio anymore. Hopefully fixes #425560.
18052 2008-09-16  Fernando Herrera  <fherrera@novell.com>
18054         * asf/asf-structures.h:
18055         * asf/asf.cpp:
18056         * asf/asf.h:
18057         * mplayer.h:
18058         * pipeline.h: Don't use relative paths in #includes.
18059         * Makefile.am: Add -Iasf
18061 2008-09-15  Michael Dominic K.  <mdk@mdk.am>
18063         * src/applier.cpp: Disabling the applier for now, it seems there are still
18064         some tiny 'issues' with it.
18066 2008-09-15  Chris Toshok  <toshok@ximian.com>
18068         * dependencyobject.h, dependencyobject.cpp: add real
18069         PropertyChange callbacks (so we can implement listeners without
18070         the listener being a dependencyobject - which is nice for
18071         TemplateBindings, which don't need all that overhead.)
18072         
18073         * template.h, template.cpp: switch over to using this new listener
18074         interface.
18076 2008-09-15  Chris Toshok  <toshok@ximian.com>
18078         * xaml.cpp (dependency_object_set_attributes): add the
18079         TemplateBinding to the item, not the containing template.
18081 2008-09-15  Larry Ewing  <lewing@novell.com>
18083         * applier.h: really disable the applier to make changes instant,
18084         fixes page turn and the test regressions.
18086         * applier.cpp: ref and unref the object to avoid crashes on
18087         popfly.
18089 2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18091         * src.mdp: Updated with new files.
18093 2008-09-12  Larry Ewing  <lewing@novell.com>
18095         * grid.cpp (Grid::Measure): accumulate colspan width and pass
18096         pixel size restrictions on to the children.
18098 2008-09-11  Michael Dominic K.  <mdk@mdk.am>
18100         * animation.cpp:
18101         * applier.cpp:
18102         * applier.h: Adding some defines for applier precedences + a way
18103         to instant apply with precedence == 0.
18105 2008-09-10  Michael Dominic K.  <mdk@mdk.am>
18107         * clock.cpp: Properly emit the Completed event after the properties have
18108         been applied.
18110 2008-09-09  Michael Dominic K.  <mdk@mdk.am>
18112         * animation.cpp:
18113         * applier.cpp: Removing debug messages, adding proper free code.
18115 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18117         * animation.cpp:
18118         * animation.h:
18119         * applier.cpp: Do not set the values, instead move them to applier. 
18121 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18123         * applier.cpp:
18124         * clock.cpp:
18125         * clock.h:
18126         * runtime.cpp:
18127         * runtime.h: Moving the Applier instance to TimeManager.
18129 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18131         * runtime.cpp:
18132         * runtime.h: Adding Applier to Surface.
18134 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18136         * applier.cpp:
18137         * applier.h: Adding a basic Flush method, totally bad for now.
18139 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18141         * applier.cpp:
18142         * applier.h: Adding basic Apply function that applies all the changes
18143         to objects.
18145 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18147         * applier.cpp:
18148         * applier.h: Adding basic method to add property to apply on object.
18150 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18152         * Makefile.am:
18153         * applier.cpp:
18154         * applier.h: Introducing the applier helper class. Will be used 
18155         to apply property changes in order.
18157 2008-09-11  Jackson Harper  <jackson@ximian.com>
18159         * xaml.cpp: Move some of the content property setting logic into
18160         the XamlElementInstance's.
18162 2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
18164         * multiscaleimage.cpp: draw a pattern that should look like
18165         a MSI (currently still wrong)
18167 2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
18169         * text.h (class Run): Apparently Run's TextProperty is internal in
18170         managed-land.
18172 2008-09-10  Larry Ewing  <lewing@novell.com>
18174         * border.cpp:
18175         * frameworkelement.cpp:
18176         * shape.cpp, shape.h:
18177         * canvas.cpp: update to pass the new more extensive tests.
18179 2008-09-10  Larry Ewing  <lewing@novell.com>
18181         * size.h:  Tweak to match updated tests.
18183 2008-09-09  Chris Toshok  <toshok@ximian.com>
18185         * style.h (class Setter): make ValueProperty's PropertyType
18186         'object' instead of 'Managed'.
18188         * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
18189         little more bulletproof.
18190         (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
18191         NULL, don't create a TemplateBindingNode (and add it to the list)
18192         in that case.
18194         * type.h.in (class Type): remove OBJECT - it gets autogenerated
18195         now.
18197         * xaml.cpp (start_element): we need to set inst->parent before
18198         setting the attributes, as the attributes might include a
18199         StaticResource (or TemplateBinding) that requires us to walk back
18200         up the tree.
18201         (XamlElementInfoNative::CreateElementInstance): create a
18202         XamlElementInstanceTemplate if the type is a subclass of
18203         FRAMEWORKTEMPLATE.
18204         (dependency_object_set_attributes): return out of this after
18205         adding the templatebinding (so we don't end up in the managed xaml
18206         loader code trying to set properties to "{TemplateBinding ...}"
18207         Also, if the property type is OBJECT, call into the loader (like
18208         we do with MANAGED), and fix the logic check on
18209         p->loader->SetAttribute in that case.
18211         * type.h, type-generated.cpp: regen.
18213 2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
18215         * xaml.cpp: Don't unref NULL collections. Fix regression when
18216         parsing invalid points (or doubles).
18218 2008-09-08  Chris Toshok  <toshok@ximian.com>
18220         * xaml.h, xaml.cpp: stopgap before jackson gets the completely
18221         managed approach to managed object parsing going.  a few key
18222         changes:
18224         1) xaml_load_managed_object takes an out bool
18225         parameter (is_dependency_object) so the managed code can create
18226         non-DO subclasses, and then the parser will pass that GCHandle
18227         back to managed code in set_attribute.
18229         2) added an add_child callback to the loader so that managed DO
18230         subclasses (and non-subclasses) can deal with collection
18231         properties.  theres no ContentProperty handled in managed code,
18232         yet.
18234 2008-09-08  Geoff Norton  <gnorton@novell.com>
18236         * audio-*.(cpp|h): The Alsa code requires us to join the play
18237         thread before we remove the audio sources otherwise we can 
18238         end up in a race accessing closed pcm's when shutting down.
18240 2008-09-08  Geoff Norton  <gnorton@novell.com>
18242         * audio.cpp: Ensure that we dont enter an infinite loop before
18243         we actually start playing a source.
18245 2008-09-08  Larry Ewing  <lewing@novell.com>
18247         * frameworkelement.cpp: make things 1.0 safe.
18249 2008-09-08  Larry Ewing  <lewing@novell.com>
18251         * frameworkelement.cpp (FrameworkElement::Arrange): rework to
18252         match some of the Measure logic
18254         * border.cpp:
18255         * canvas.cpp, canvas.h:
18256         * control.cpp, control.h: rework arrange implementation to match
18257         the measure logic and the current thinking on arrange.
18259         * uielement.cpp, uielement.h: expose render_size accessor.
18261 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
18263         * tilesource.h|cpp: keep the source and tiles info on the c++ side
18265         * multiscaleimage.cpp: draw a cairo pattern instead of nothing
18267 2008-09-08  Larry Ewing  <lewing@novell.com>
18269         * grid.cpp: Chain collection changed up properly.
18271 2008-09-07  Larry Ewing  <lewing@novell.com>
18273         * thickness.h (struct Thickness): add +/-/- to thickness to clean
18274         up some of the other code.
18276         * rect.h: remove ShrinkBy now that we can negate thickness
18278         * size.h: clean things and make GrowBy stop at 0 now that we can
18279         deal with thickness addition outside of things.
18281         * canvas.cpp:
18282         * frameworkelement.cpp: 
18283         * control.cpp:
18284         * border.cpp: subtract the padding and border thickness from
18285         available size before passing it to children.  Handle some corner
18286         cases in measure with ugly hacks.
18287         
18288 2008-09-07  Larry Ewing  <lewing@novell.com>
18290         * canvas.cpp, canvas.h:         
18291         * control.cpp, control.h:
18292         * border.cpp:
18293         * grid.cpp:
18294         * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
18295         actual contents.
18297         * frameworkelement.cpp: Make measure pre and post condition the
18298         output rather than doing it in the overrides themselves.
18300         * size.h: make sure min/max will never set a known size to NAN.
18302 2008-09-07  Chris Toshok  <toshok@ximian.com>
18304         * type.h.in: add OBJECT kind.
18306         * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18308 2008-09-06  Chris Toshok  <toshok@ximian.com>
18310         * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
18311         - instead use 'Foo foo(args)'.  the former creates 2 objects to
18312         the latter's 1.
18314         * media.cpp (MediaElement::GetValue): same.
18316         * uielement.cpp: same.
18318         * error.h, error.cpp (class MoonError): make this a class instead
18319         of a struct, add a default ctor, remove Dispose and use ~MoonError
18320         instead, add FillIn methods that take a "code" as well as an
18321         ErrorType to support the parser.
18323         * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
18324         rid of GError and use MonoError exclusively, move the internal
18325         EventLists/EventList types to the .cpp file.  Also, remove a few
18326         redundant methods on DependencyObject.  The hit at call sites is
18327         negligable (one additional line, perhaps), and the call sites are
18328         few and far between.
18330         * xaml.cpp (dependency_object_set_attributes)
18331         (dependency_object_set_property): call
18332         DependencyObject::SetValueWithError.
18334         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
18335         the property here.  the DO api is gone.
18337 2008-09-06  Chris Toshok  <toshok@ximian.com>
18339         * grid.h, grid.cpp: flesh out some of the
18340         OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
18341         Also add in a completely broken and unfinished MeasureOverride
18342         implementation.  It passes some of the tests, but not for the
18343         right reasons :) Lastly, move the GridUnitType enum to enums.h
18345         * enums.h: move GridUnitType here, and rename its elements to have
18346         a "GridUnitType" prefix.
18348         * xaml.cpp: track GridUnitType enum references.
18350         * dependencyproperty.g.cpp: fix up attached properties getters to
18351         return default values if there is one.
18353 2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
18355         * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
18356         actually change the lauout, so no need to set the dirty flag when
18357         it changes.
18358         (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
18359         Padding property.
18360         (TextBlock::Paint): Same.
18362 2008-09-05  Larry Ewing  <lewing@novell.com>
18364         * uielement.cpp: use render bounds rather than bounds to determine
18365         if we have something to draw.
18367         * stylus.h, stylus.cpp: remove the EmptyBackground method.
18369         Fixes the annotation regression in page turn (again).
18370         
18371 2008-09-04  Larry Ewing  <lewing@novell.com>
18373         * uielement.h (class UIElement): generate managed accessors for
18374         the subtree hack.
18376 2008-09-04  Chris Toshok  <toshok@ximian.com>
18378         * xaml.cpp (dependency_object_add_child): add code here for
18379         FrameworkTemplate, call SetVisualTree with the child.
18381         * control.cpp (Control::Control): init bindings.
18382         (Control::~Control): unref applied_template and delete bindings.
18383         (Control::ApplyTemplate): make sure we return false here from a
18384         few error places (NULL template, a template with a NULL
18385         visual_tree.)
18387         * template.cpp (FrameworkTemplate::FrameworkTemplate): init
18388         visual_tree to NULL.
18389         (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
18390         (FrameworkTemplate::SetVisualTree): new method, set visual_tree
18391         and ref it.
18392         (ControlTemplate::DuplicateObject): we need to special case a
18393         couple of classes (collections, templates) in order to traverse
18394         them.. ugh.
18395         (ControlTemplate::Apply): if the visual_tree is null, don't try to
18396         copy it.
18398         * template.h (class FrameworkTemplate): add SetVisualTree method
18399         for the parser.
18401 2008-09-04  Larry Ewing  <lewing@novell.com>
18403         * uielement.cpp, uielement.h: new methods GetSubtreeObject and
18404         ElementAdded ElementRemoved.
18406         * dependencyobject.h: remove ContentAdded, ContentRemoved.
18407         
18408         * collection.cpp, collection.h: rename ContentWalker to
18409         VisualTreeWalker use GetSubtreeObject () rather than content for walking.
18411         * template.cpp, template.h: make Apply return the newly created
18412         tree.
18414         * panel.cpp, panel.h:
18415         * control.cpp, control.h: add template_root child that isn't
18416         hooked into the normal tree.  Start implementing ApplyTemplate and
18417         GetTemplateChild.
18419         * usercontrol.cpp: mess around with Content a little in making it
18420         use the ElementAdded ElementRemoved logic since UserControl
18421         doesn't really support template changes.
18422         
18423         * border.h: implement GetSubtreeObject. 
18425         * stylus.cpp:
18426         * dirty.cpp:
18427         * frameworkelement.cpp:
18428         * canvas.cpp, canvas.h: update for new treewalker.
18430 2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
18432         * layout.cpp (TextLayout::Render): Added some new arguments which
18433         aren't actually used yet but will be eventually (assuming I
18434         continue with this approach).
18436         * textbox.cpp (TextBox::Paint): Don't bother painting the
18437         background, control does this for us.
18439 2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
18441         * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
18442         own file, implement the downloader.
18444 2008-09-03  Chris Toshok  <toshok@ximian.com>
18446         * dependencyobject.h: as much as i hate this, add
18447         GetCurrentValues() for the template stuff.
18449         * xaml.cpp: add XamlElementInstanceTemplate and initial support
18450         for TemplateBindings.
18452         * template.h, template.cpp: add a bunch of stuff for templates.
18454         * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
18455         watch for template property changes, and apply the template in
18456         OnLoaded (or if we're already loaded).  Also, add accessors for
18457         TemplateProperty.
18459         * dependencyproperty.g.cpp: regen.
18461 2008-09-03  Larry Ewing  <lewing@novell.com>
18463         * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
18464         the new Size methods.
18466         * border.cpp, border.h: add some initial (broken) rendering
18467         support, rework measure to use some of the new rect and size
18468         methods.
18470 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18472         * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
18473         property chanegs, no need to re-layout or invalidate - according
18474         to my little test program, Silverlight 2 Beta 2 does not change
18475         the rendered text when this property changes - any newlines in the
18476         input text stay there.
18478 2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
18480         * resources.cpp: (ContainsKey) Don't crash if a null key is
18481         supplied. (Remove) same. (Add) same.
18483 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18485         * enums.cpp (initialize_enums): Map Horizontal and
18486         VerticalScrollBarVisibility properly.
18488         * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
18489         think we need this for TextBox controls since their
18490         ActualWidth/Height aren't based on the text extents afaik.
18491         (TextBox::Paint): Implemented, sorta.
18493 2008-09-03  Chris Toshok  <toshok@ximian.com>
18495         * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
18496         code.
18498 2008-09-03  Larry Ewing  <lewing@novell.com>
18500         * uielement.cpp, uielement.h: 
18501         (UIElement::FrontToBack): Make FrontToBack non-virtual and move
18502         the generic logic here.
18504         * control.cpp, control.h:
18505         * panel.cpp, panel.h: Remove ftb logic, everything is handled in
18506         uielement now.
18508 2008-09-03  Larry Ewing  <lewing@novell.com>
18510         * uielement.cpp, uielement.h: 
18511         * media.cpp, media.h:
18512         * panel.cpp, panel.h:
18513         * shape.cpp, shape.h: Add GetCoverageBounds virtual method
18514         to let elements compute their own opaque coverage.
18516 2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
18518         * multiscaleimage.h|.cpp: new MultiScaleImage type
18520 2008-09-02  Chris Toshok  <toshok@ximian.com>
18522         * resources.h, resources.cpp: constify this.
18523         (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
18524         logic.
18526         * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
18527         resource lookups.
18528         (dependency_object_set_attributes): add support for StaticResource
18529         lookups.  going to refactor all this to add support for
18530         TemplateBinding.
18532 2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
18534         * eventargs.h (class CollectionChangedEventArgs): Implemented
18535         accessor methods to get/set the event arg values.
18537         * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
18538         strdup the event_name string and also updated to use an accessor
18539         method to prevent a possible NULL dereference.
18541 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18543         * animation.cpp:
18544         * animation2.h: Reworking the animation hookup storage fix. Checking for
18545         subclass is plain dumb. Just make an exception for ObjectAnimation.
18547 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18549         * animation.cpp: Fixing a problem in animation hookup 
18550         storage -- the type/kind that the animation generates has to be the subclass
18551         of the type/kind the target property is ready to accept.
18553 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18555         * multiscalesubimage.h: fixing code generation decorators
18557 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18559         * multiscalesubimage.h: new type
18561 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18563         * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
18564         end so that we can fall back to that position as the line
18565         width (we don't want to include trailing spaces unless
18566         underlined).
18567         (TextLayout::Render): If the line width is greater than the
18568         allowable width, keep the line left-aligned like Silverlight does.
18570 2008-08-29  Chris Toshok  <toshok@ximian.com>
18572         * resources.cpp (ResourceDictionary::Clear): call
18573         Collection::Clear after we've cleared the hash so the hash will be
18574         empty in event handlers.
18576 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18578         * layout.cpp (TextLayout::Layout): Do a slightly better job of
18579         keeping track of line->width - still not 100% correct.
18581 2008-08-28  Chris Toshok  <toshok@ximian.com>
18583         * Makefile.am: add resources.h and resources.cpp
18585         * xaml.cpp (class XamlElementInfo): add x:Key field (since this
18586         can't set a field on the object -- it might be a value type).
18587         (class XamlElementInstanceValueType): remove the empty
18588         implementation of SetAttributes.  we'll define it later.
18589         (XNamespace::SetAttribute): handle name/key behavior here.  Only
18590         allow one of them to be set on an object. Also, only attempt to
18591         set DependencyObject::NameProperty on an item if it's not a value
18592         type.
18593         (start_element): don't add value type children to their parent in
18594         start_element (as we haven't read the data that will allow us to
18595         create the value typed object.)  we need to push this off to the
18596         end_element handler.  also return early if there are problems
18597         setting attributes.
18598         (end_element_handler): if we're creating a value typed ELEMENT,
18599         add the child to the parent here.
18600         (dependency_object_add_child): add some ResourceDictionary
18601         validation here (if there's no key, etc), and actually call
18602         dict->Add(key, child).
18603         (XamlElementInstanceNative::CreateItem): don't crash if we failed
18604         to create an item.  (fixes one of the crashes caused by the
18605         ResourceDictionaryTests - ParseDouble)
18606         (XamlElementInstanceValueType::SetAttributes): call
18607         value_type_set_attributes.
18608         (value_type_set_attributes): stripped down version of
18609         dependency_object_set_attributes, as there are only a handful (is
18610         it really only x:Name and x:Key?) attributes we handle on value
18611         types.
18612         (globally): always call set_parent as opposed to
18613         ->SetLogicalParent.  we might not be dealing with a DO-subclass.
18615         * xaml.h (class XamlLoader): remove the explicit C api calls
18616         xaml_create_from_file, xaml_create_from_str, and
18617         xaml_hydrate_from_str.  Replace them with instance methods on
18618         XamlLoader (CreateFromFile, CreateFromString, and
18619         HydrateFromString, respectively) Add WithError variants of the
18620         these, and have the generator generate bindings for them so we can
18621         throw parse exceptions into managed code.
18623         * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
18625         * value.h.in (struct Value): add Is overload with
18626         additional_types.
18628         * uielement.h: include resources.h.
18630         * collection.h, collection.cpp: change the api in a few ways to
18631         make ResourceDictionary easier to write - make Count virtual,
18632         remove all the type checks for element type from methods, and add
18633         that check to Collection::CanAdd.  ResourceDictionary overrides
18634         that and always returns true.  Make Clear return a bool.
18636         * animation.h, animation.cpp: track collection changes.
18638         * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
18639         implementations to the .cpp file.
18641         * resources.h, resources.cpp: split out the code for
18642         ResourceDictionary here.  ResourceDictionary is an odd fish.  In
18643         1.0 land, it provides the same api as a collection, and things can
18644         be looked up by name via findName.  In 2.0 land, items in
18645         ResourceDictionaries have to have either an x:Key or x:Name
18646         attribute.  If both are lacking it's an error.  If the former is
18647         specified you can only get at it through Resources["name"].  If
18648         the latter is specified, you can use both Resources["name"] or
18649         findName("name").
18651         * dependencyobject.cpp, dependencyobject.h: add Is and GetType
18652         overloads that take additional_types.  Make IsValueValid take an
18653         additional_types parameter too.  Expose ClearValue to managed code
18654         so we can actually clear the Value* to null without using
18655         the (unsupported from the generator) old method of passing
18656         IntPtr.Zero (Value* now maps to "ref Value" in generated
18657         pinvokes.)  Lastly add a SetValueWithError method so we can throw
18658         exceptions in managed code.
18660         * border.h: add defaults for Padding and BorderThickness.
18662         * border.cpp: simplify things a bit since we don't have to worry
18663         about padding/border thickness being NULL.
18665         * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
18667 2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
18669         * layout.cpp (TextLayout::Render): Respect TextAlignment.
18671 2008-08-26  Chris Toshok  <toshok@ximian.com>
18673         * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
18674         rid of this g_assert, it's crashing the moon-unit tests.  just
18675         warn and bail.
18676         (DependencyObject::SetSurface): don't do anything if the surface
18677         is already set to the same value.
18679         * animation.cpp (Storyboard::SetSurface): don't do anything if
18680         GetSurface() == surface.
18682         * text.cpp (Glyphs::SetSurface): same.
18684         * uielement.cpp (UIElement::SetSurface): same.
18686         * brush.cpp (ImageBrush::SetSurface): same.
18688         * media.cpp: same.
18690         * collection.cpp (DependencyObjectCollection::SetSurface): same.
18691         (Collection::RemoveAtWithError): this (against logic) raises
18692         ArgumentException, not ArgumentOutOfRangeException.
18694 2008-08-25  Chris Toshok  <toshok@ximian.com>
18696         * rect.h, rect.cpp: rename the w/h fields to width/height, since
18697         every other instance of similar fields are named that.
18699         * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
18700         uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
18701         brush.cpp: track rect change.
18703 2008-08-25  Chris Toshok  <toshok@ximian.com>
18705         * border.h, border.cpp: implement ArrangeOverride, and fix up some
18706         test failures in MeasureOverride.
18708         * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
18709         also set the desired size here (to the final size we get from
18710         ArrangeOverride.)
18712 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18714         * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
18715         proper kinds of values (TYPE::DEPENDENCY_OBJECT).
18717 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18719         * animation.cpp:
18720         * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
18721         Also adding validation methods.
18723 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
18725         * animation.cpp:
18726         * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
18727         implementation.
18729 2008-08-24  Geoff Norton <gnorton@novell.com>
18730         
18731         * media.h: Add a new overload to set the SourceProperty from managed land.
18732         * media.cpp: Support async source changing downloader creation for ImageSource
18733         * cbinding.(cpp|h): Regen
18735 2008-08-23  Geoff Norton  <gnorton@novell.com>
18737         * mplayer.cpp: Only ref the audio if we have it as well.
18739 2008-08-23  Geoff Norton  <gnorton@novell.com>
18741         * bitmapimage.h: Add to the build
18743 2008-08-23  Geoff Norton  <gnorton@novell.com>
18745         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
18746           type.h, value.h: Regenerated
18747         * downloader.cpp|h: Return failure state for downloader->GetResponse
18748         * runtime.h: Generate C bindings for IsMainThread.
18750 2008-08-23  Larry Ewing  <lewing@novell.com>
18752         * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
18753         properties.  Move the quadratic generation into
18754         GenerateQuadratics.
18756         Regenrate and remove the managed wrappers.
18757         
18758 2008-08-23  Larry Ewing  <lewing@novell.com>
18759         
18760         * xaml.cpp (value_from_str): fixed crossed commits with Auto
18761         parsing.
18763         * collection.cpp (ContentWalker::Step): add some debug logic to
18764         protect against an error case for now.
18766 2008-08-23  Chris Toshok  <toshok@ximian.com>
18768         * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
18770         * thickness.h, thickness.cpp: rename thickness_from_str to
18771         Thickness::FromStr, and make it return a bool instead of a
18772         pointer, as Point and Rect do.
18774         * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
18776         * xaml.cpp (value_from_str): use the CornerRadius parsing method,
18777         and track the change to the Thickness one.
18779 2008-08-23  Larry Ewing  <lewing@novell.com>
18781         * xaml.cpp (value_from_str): quick auto hack so we can test
18782         controls more.
18784         * runtime.cpp (RenderNode::Render): fix typo in merge
18786 2008-08-23  Larry Ewing  <lewing@novell.com>
18788         * uielement.cpp, uielement.h: move basic ftb logic here from
18789         panel.  Start storing extents allong with bounds.
18791         * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
18792         content walker.
18794         * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
18795         to uielement in front_to_back mode unconditionaly.
18797         * runtime.cpp, runtime.h: make RenderNode members private and move
18798         the ftb override logic here and out of the PostRender call.
18799         
18800         * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
18801         extents.
18803         * control.cpp, control.h: implement basic functionality.
18805 2008-08-22  Chris Toshok  <toshok@ximian.com>
18807         * color.h, rect.h, point.h: remove the copy ctors.  we don't need
18808         them, and they were causing crashes (!)
18810 2008-08-22  Chris Toshok  <toshok@ximian.com>
18812         * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
18813         take the margins into account, even when we're childless.
18815         * panel.h, panel.cpp: add MeasureOverride which always returns
18816         0,0.
18818         * border.h (class Border): add property accessors for everything.
18820         * border.cpp (Border::MeasureOverride): new implementation.
18822         * value.h.in, value.cpp: add CornerRadius support, and remove the
18823         unnecessary casts (and in the Rect/Point cases, calls to the copy
18824         ctor)
18826         * value.h, dependencyproperty.g.cpp: regenerate.
18827         
18828 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18830         * textbox.h (class SelectionChangedEventArgs): Added
18831         Text/SelectionChangedEventArgs.
18833 2008-08-22  Chris Toshok  <toshok@ximian.com>
18835         * frameworkelement.cpp (FrameworkElement::Measure): instead of
18836         always calling MeasureOverride here, we call the registered manage
18837         callback if there is one.  So, we proxy into managed code here,
18838         invoke the virtual method FWE.MeasureOverride, and if there's no
18839         subclass override (or if it chains up for some reason), we end up
18840         in MeasureOverride by virtue of the pinvoke in
18841         FrameworkElement.cs.
18842         (FrameworkElement::MeasureOverride): move all the logic for the
18843         default MeasureOverride implementation here.  it's pretty
18844         braindead - takes margins into account, measures our child, makes
18845         sure our size is between Min/Max.  That's about it.
18846         (FrameworkElement::Arrange): same drill as ::Measure.
18847         (FrameworkElement::ArrangeOverride): still (incorrectly) return
18848         finalSize.
18850 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18852         * textbox.h: Made ArrangeOverride() virtual and added
18853         SelectionChangedEvent.
18855 2008-08-22  Chris Toshok  <toshok@ximian.com>
18857         * dependencyobject.cpp (DependencyObject::GetContent): guard
18858         against the value being NULL.
18860 2008-08-22  Larry Ewing  <lewing@novell.com>
18862         * collection.cpp (ContentWalker::ContentWalker): make
18863         ContentWalker understand directions (Logical, ZForward, ZReverse).
18865 2008-08-22  Larry Ewing  <lewing@novell.com>
18867         * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
18868         when drawing in the image backend.
18870 2008-08-22  Chris Toshok  <toshok@ximian.com>
18872         * frameworkelement.h, frameworkelement.cpp: add in the layout foo
18873         - provide implementations of Measure and Arrange that just call
18874         MeasureOverride and ArrangeOverride.  These are virtual and meant
18875         to be overridden either in unmanaged code (by simply overriding
18876         them), or in managed code (RegisterManagedOverrides is called in
18877         FWE.Initialize.)  Decorate the class with @CallInitialize so the
18878         managed ctor calls it.
18880         * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
18881         ctor, and add the layout methods.  Measure and Arrange are pure
18882         virtual.
18884         * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18885         
18886 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18888         * textbox.cpp (TextBox::Layout): Implemented rough layout.
18890         * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
18892 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
18894         * textbox.cpp (TextBox::ArrangeOverride): Added.
18896         * frameworkelement.h (class FrameworkElement): Changed default
18897         Width/Height values to NAN.
18899         * textbox.cpp: Initial implementation of TextBox, Layout and
18900         Rendering logic still missing.
18902 2008-08-22  Larry Ewing  <lewing@novell.com>
18904         * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
18905         values are there.
18907 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18909         * audio-alsa.cpp: Call Underflowed () when we run out of data.
18911 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18913         * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
18914           VideoEnded and AudioEnded states. Implement handling of VideoEnded
18915           state, and call MediaElement::MediaEnded when both states have been
18916           reached.
18917         * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
18918           all media finished (both video and audio) logic there.
18920 2008-08-21  Larry Ewing  <lewing@novell.com>
18922         * uielement.cpp (UIElement::ComputeLocalTransform): clean up
18923         accumulated transform logic.  Keep the parent TransformFor out of
18924         the local_transform.
18926 2008-08-21  Larry Ewing  <lewing@novell.com>
18928         * uielement.cpp (UIElement::Dispose): add logic removed from
18929         panel.
18931         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
18932         ContentWalker.
18934 2008-08-21  Chris Toshok  <toshok@ximian.com>
18936         [ fixes annotations not showing up in pageturn due to a NULL
18937         background on the ink presenter ]
18939         * stylus.h, stylus.cpp (class InkPresenter): add an override of
18940         EmptyBackground().  If we have a non-empty stroke bounding
18941         rectangle, return false.  Otherwise fall back to
18942         Panel::EmptyBackground.
18944         * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
18945         method.  the panel implementation returns true if GetBackground()
18946         returns NULL.  Use this virtual method instead of an explicit
18947         GetBackground() call in Panel::FrontToBack.
18949 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18951         * enums.cpp: Added ScrollBarVisibility enum
18953         * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
18954         invalidate if the TextWrappingProperty changes too.
18956 2008-08-21  Chris Toshok  <toshok@ximian.com>
18958         * border.h, border.cpp, cornerradius.h: add new
18959         types.
18961         * Makefile.am: add border/cornerradius to the file list.
18963         * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
18964         dependencyproperty.g.cpp: regen.
18966 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18968         * textbox.h (class TextBox): The TextBox namespace should be
18969         System.Windows.Controls
18971         * stackpanel.h (class StackPanel): #include panel.h
18973 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
18975         * textbox.h: Initial implementation of the TextBox class (just
18976         stubs atm).
18978         * value.h.in (struct Value): Don't use int32_t or uint64_t,
18979         etc. Be consistent and use the glib types.
18981         * layout.cpp (TextLayout::Layout): Fixed
18982         LineStackingStrategy/LineHeight issues. If we are using
18983         BlockLineHeight & the specified LineHeight is not Auto, then we
18984         need to use 0.0 as the descender.
18986 2008-08-21  Chris Toshok  <toshok@ximian.com>
18988         * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
18989         accessors to all the subclasses.  They're autogenerated from the
18990         respective class's DP's.
18992         * animation2.h: same.
18994         * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
18996         * control.h (class Control): add some more GenerateAccessors.
18998         * control.cpp: and remove the manual implementations here.
19000         * dependencyproperty.g.cpp: regen.
19002 2008-08-21  Larry Ewing  <lewing@novell.com>
19004         * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
19005         debug spew.
19007         * xaml.cpp (value_from_str): unref the collections we create after
19008         setting them.
19010 2008-08-21  Jackson Harper  <jackson@ximian.com>
19012         * xaml.cpp: Can't rely on the type for getting a managed element's
19013         name, we have to pull it from the element name provided to the
19014         XamlElementInfo.
19016 2008-08-21  Chris Toshok  <toshok@ximian.com>
19018         * dependencyobject.cpp (DependencyObject::HasProperty): pass
19019         additional_types to IsSubclassOf.
19021         * type.h, type.cpp: add IsSubclassOf variants that take
19022         additional_types.  Fixes lookup problems of non-custom DP's on
19023         managed subclasses.
19025 2008-08-21  Chris Toshok <toshok@ximian.com>
19027         * value.h.in (struct Value): make all single arg primitive value
19028         typed ctors "explicit" so c++ won't do any magic implicit
19029         conversion from value type to Value.
19031         * value.h: regen
19033         * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
19034         Value()'s explicitly.
19036         * collection.cpp (DoubleCollection::FromStr): same.
19038 2008-08-20  Larry Ewing  <lewing@novell.com>
19040         * dependencyobject.cpp (create_temp_namescope): don't leak the
19041         temporary namescope we create.  Also don't create it over and over
19042         again.
19044 2008-08-20  Larry Ewing  <lewing@novell.com>
19046         * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
19047         virtual methods so that we can begin to simplify content rules.
19049         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19050         GetContent to handle the children in a generic way.
19052         * uielement.cpp|h: start moving generic uielement content logic
19053         here.  Implement OnLoaded and deal with content directly.
19054         
19055         * canvas.cpp|h: remove obsolete methods. Move most of zindex
19056         property logic from panel to here.
19058         * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
19059         to uielement.
19061         * control.cpp|h: generate accessors, start remove OnLoaded and
19062         SetSurface.
19064         * dependencyproperty.g.cpp: regen.
19065         
19066 2008-08-20  Chris Toshok  <toshok@ximian.com>
19068         * text.cpp, text.h: generate accessors for Glyph properties.
19070         * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
19071         shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
19072         xaml.cpp: make another pass through files switching to C++
19073         accessors from GetValue(FooClass::FooProperty)->AsFoo().
19075         * dependencyproperty.g.cpp: regen.
19077 2008-08-20  Chris Toshok  <toshok@ximian.com>
19079         * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
19080           canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
19081           frameworkelement.cpp, frameworkelement.h, geometry.cpp,
19082           geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
19083           namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
19084           shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
19085           text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
19086           uielement.h, xap.cpp, xap.h:
19088           mostly, decorate almost all DependencyProperties with
19089           @GenerateAccessors, add in lots of new ones that weren't present
19090           before (to the .h), and remove all those implementations from
19091           the .cpp files.
19093           Also, don't use #if SL_2_0 in the headers.  we can't depend on
19094           that being defined (especially once we install).  Any
19095           2.0-specific behavior needs to be done in the .cpp files.  There
19096           are still a few things that are wrong wrt
19097           this (dependencyproperty.g.cpp needs to define the DP's
19098           regardless of version, they can just be NULL in the 1.0 case for
19099           2.0 properties, for instance.)
19101         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
19103 2008-08-20  Chris Toshok  <toshok@ximian.com>
19105         * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
19107 2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
19109         * layout.cpp (TextLayout::Layout): Updated to take a
19110         TextLayoutHints argument for providing hints like text alignment
19111         and line stacking/height.
19113         * text.cpp (class TextBlock): Updated a bit for Silverlight
19114         2.0. All of the properties added in 2.0 are now there, although
19115         only 2 of them are respected at the moment (line stacking strategy
19116         & line height).
19118         * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
19120 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19122         * audio.cpp: NULL out the player instance after deleting it.
19124 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19126         * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
19127           called and if so, do nothing.
19129 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19131         * audio.cpp: We only support 1 or 2 channels for the moment.
19133 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19135         * media.cpp, media.h: Fix buffering progress to take into account that
19136           the first pts isn't necessarily 0 (happens for live media).
19138 2008-08-20  Chris Toshok  <toshok@ximian.com>
19140         * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
19141         Focus events on click in a 1.0 context.
19143 2008-08-20  Jackson Harper  <jackson@ximian.com>
19145         * xaml.cpp|h: Setting properties requires the xaml namespace so it
19146         can lookup managed types. TODO: It also needs the default
19147         assembly, but I am thinking of moving that to the loader.
19149 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19151         * mplayer.cpp: Properly ref/unref the AudioSource.
19153 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19155         * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
19157 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19159         * media.cpp, media.h, runtime.cpp: Remove media_init, just make
19160           runtime_init call Media::Initialize directly.
19162 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19164         * media.h, media.cpp: Remove media_element_advance_frame from header,
19165           no need to make it public.
19167 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19169         * mplayer.cpp: AdvanceFrame: only return true if we actually processed
19170           any frames. SeekCallback: clear the queue of audio frames as well.
19171         * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
19172           Don't change previous_position while we're seeking, and don't make
19173           it go backwards.
19174         * audio.cpp, audio.h: Added AudioSource::ClearFrames.
19176 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19178         * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
19180 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19182         * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
19183           generator.
19185 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
19187         * canvas.h, canvas.cpp:
19188         * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
19189         from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
19191         * panel.cpp, collection.cpp: related changes.
19193 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
19195         * uielement.h: change the generator instructions so the 
19196         NameProperty is generated in FrameworkElement.
19198 2008-08-19  Chris Toshok  <toshok@ximian.com>
19200         * dependencyobject.h,
19201         dependencyobject.cpp (DependencyObject::GetContent): ripped this
19202         out of a hack, should prove useful for the work coming up.
19204 2008-08-19  Chris Toshok  <toshok@ximian.com>
19206         * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
19208 2008-08-19  Chris Toshok  <toshok@ximian.com>
19210         * control.h, control.cpp (class Control): generate a binding for
19211         Control::InitializeFromXaml and drop the 2 manual C bindings.
19213         * cbinding.h, cbinding.cpp: regen.
19215 2008-08-19  Chris Toshok  <toshok@ximian.com>
19217         * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
19218         autogenerate our binding for it.
19220         * cbinding.h, cbinding.cpp: regen.
19222 2008-08-19  Chris Toshok  <toshok@ximian.com>
19224         * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
19225         real class, and remove the implementation of
19226         keyboard_get_modifiers.  instead, provide a c++ method (both a
19227         getter and setter) and annotate the Getter with
19228         GenerateCBinding/GeneratePInvoke.
19230         * collection.h, collection.cpp: reorder the class decls (why do
19231         people put private first?) and make CollectionIterator a real
19232         class, with annotated methods.  Also, move
19233         double_collection_from_str and point_collection_from_str to
19234         DoubleCollection::FromStr and PointCollection::FromStr
19235         respectively.  move double_garray_from_str out of here (to
19236         utils.h/utils.cpp)
19238         * utils.h, utils.cpp: new (hopefully last) home for
19239         double_garray_from_str.
19241         * point.h, point.cpp (struct Point): rename point_from_str to
19242         Point::FromStr.  no reason to have a C method for that.
19244         * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
19246         * window-gtk.h (class MoonWindowGtk): mark the ctor and
19247         GetWidget() with GenerateCBinding/GeneratePInvoke.
19249         * window-gtk.cpp: and remove their implementations.
19251         * xaml.cpp: convert over to all the new ::FromStr methods.
19253         * thickness.cpp: track new home of double_garray_from_str.
19255         * cbinding.h, cbinding.cpp: regen.
19257 2008-08-19  Chris Toshok  <toshok@ximian.com>
19259         * uielement.h, uielement.cpp: make almost all data
19260         private/protected.  Add a couple of methods to aid in
19261         this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
19262         cbinding for transform_point - it's never used.  Also, re-order
19263         the header to put public things first, then protected then
19264         private.
19266         * runtime.cpp: use IsLoaded.
19268         * panel.cpp: use ClearLoaded.
19270         * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
19271         TransformPoint.
19273 2008-08-19  Chris Toshok  <toshok@ximian.com>
19275         * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
19276         lists, as we will almost always have identical lists.  compare the
19277         head of the new list to focused_element to determine if focus
19278         changes.
19280 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19282         * pipeline.cpp: Beautify error messages.
19284 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19286         * media.cpp: test-inexistent-media(s) were failing due to ISP's
19287           tendency to return search pages for failed dns lookups. Fixed tests
19288           after testing with sane DNS settings and did the appropiate change
19289           in code (raise correct error message/number).
19291 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19293         * runtime.h: Make RUNTIME_INIT values sequential.
19295 2008-08-19  Chris Toshok  <toshok@ximian.com>
19297         * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
19298         of the object before parsing so that objects don't switch from the
19299         loader's surface to NULL as they're added to the hierarchy while
19300         being parsed.
19302 2008-08-19  Larry Ewing  <lewing@novell.com>
19304         * shape.cpp (Shape::InsideObject): check the extents first, then
19305         reorder the stroke/fill tests to test for the most likely first.
19307         Helps speed up sliverlight.net/world a bit.
19309 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19311         * mplayer.h, pipeline.h: No need to surround GetTypeName with
19312           OBJECT_TRACKING anymore.
19314 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19316         * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
19317           audio-pulse.h: Added, our new audio abstraction/implementation.
19318         * Makefile.am, src.mdp, type-generated.cpp: Updated.
19319         * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
19320         * runtime.cpp, runtime.h: Add runtime overrides for audio.
19322 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19324         * xap.cpp (xap_unpack): Fixed compiler warning.
19326 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19328         * media.cpp: Include headers mplayer.h doesn't include anymore.
19329           MediaElement::SetMedia: only set audio data on the MediaPlayer if
19330           the media has audio. TImelineMarkerCollection::Add: don't call the
19331           base class' Add, call base's Insert instead. Fixes a stack overflow
19332           since base class' Add calls Insert, which TimelineMarkerCollection
19333           overrides to call Add.
19335 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19337         * enums.cpp: Wrap 2.0-only code in SL_2_0.
19339 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19341         * zip/unzip.c: Get rid of unused variable.
19343         * value.cpp (Value::ToString): Get rid of unused variable.
19345 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19347         * dependencyobject.h: EventObject::ref: print a stack trace before the
19348           abort if we can, and fix typo in the abort message.
19350 2008-08-19  Geoff Norton  <gnorton@novell.com>
19352         * xap.cpp: Ensure we can actually enter the directory we're creating.
19354 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19356         * mplayer.cpp: Silence the compile warning.
19358         * color.cpp (color_from_str): Got rid of unused variable.
19360         * xaml.cpp (dependency_object_set_attributes): Don't need to use
19361         strlen(str) == 0 to figure out if the string is empty, just check
19362         the first char.
19363         (wrap_type): Removed. Doesn't seem to be used any longer.
19364         (get_type_for_property_name): Same.
19365         (panel_add_child): Same.
19366         (dependency_object_set_property): Made static.
19367         (dependency_object_set_attributes): Same.
19368         (dependency_object_hookup_event): Same.
19369         (dependency_object_missed_property): Same.
19371         * dependencyproperty.cpp (resolve_property_path): Use proper
19372         integer types and avoid calling strlen if all we care to know is
19373         if the string is empty.
19375         * runtime.cpp (Surface::Paint): Get rid of an annoying debug
19376         printf.
19377         (Surface::HandleMouseEvent): Removed unused variable.
19379 2008-08-19  Chris Toshok  <toshok@ximian.com>
19381         * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
19382         robust - handle Type.Event notation, making sure that the type is
19383         valid for the target.
19385 2008-08-19  Larry Ewing  <lewing@novell.com>
19387         * runtime.cpp|h: add override to use sofware fallbacks for
19388         rendering.
19390 2008-08-19  Chris Toshok  <toshok@ximian.com>
19392         * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
19393         1.0 and 2.0 cases.  big oops.
19395 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19397         * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
19398         of a warning that is no longer valid.
19400 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19402         * downloader.h, downloader.cpp: Add a request field to
19403           DownloaderResponse, and a response field to DownloaderRequest. When
19404           a request is aborted, also abort the response. This fixes a crash
19405           when we aborted the request before receiving a response, the
19406           response had no idea the request had been aborted (since the
19407           request didn't store the response after creating it, it couldn't
19408           notify the response of the abort), and happily accessed deleted
19409           objects.
19411 2008-08-18  Chris Toshok  <toshok@ximian.com>
19413         * runtime.cpp (Surface::CreateArgsForEvent): new method, create
19414         the right kind of args for a given event.  we should probably
19415         autogenerate this.
19416         (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
19417         one instance of the event args that we use to bubble along the
19418         element list.  If it's a RoutedEventArgs subclass, set the source
19419         to be the first element in the list, and check the "Handled"
19420         attribute after every emit to see if we should finish early (this
19421         provides for 2.0 semantics).
19422         (Surface::FocusElement): unfortunately the event generation is
19423         async, so add a tick call if we need to.  if we already have a
19424         tick call (meaning >= 1 focus change has happened already in this
19425         tick), we drop the intervening change(s).  This is likely wrong.
19426         (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
19427         the proper element lists.
19428         (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
19429         silverlight2 (and we have a focused element), emit the event on
19430         the list of elements from the focused element back up to the root.
19431         Otherwise just emit it on the toplevel.
19433         * runtime.h (class Surface): add GetFocusedElement/FocusElement
19434         methods, which are used to implement
19435         FocusManager.GetFocusElement() and Control.Focus().
19437         * uielement.h, uielement.cpp (class UIElement): remove a bunch of
19438         Emit$Event() methods that were never used.
19440         * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
19441         not just "Loaded".  there are parsing rules that we can't make use
19442         of here, so more work will likely have to happen in the parser.
19444         * trigger.h (class EventTrigger): add registered_event_id.
19446         * cbinding.h, cbinding.cpp: regenerate.
19448 2008-08-18  Geoff Norton  <gnorton@novell.com>
19449         
19450         * type-generated.cpp, cbinding.cpp|h: Rengerated
19451         * dependencyobject.h: Bind DependencyObject .ctor
19453 2008-08-18  Geoff Norton  <gnorton@novell.com>
19455         * deployment.h: Move CrossDomainAccess to
19456         * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
19457         can specify values from the enum.
19459 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19461         * cbinding.cpp, cbinding.h, uielement.h: Mark
19462           UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
19464 2008-08-18  Larry Ewing  <lewing@novell.com>
19466         * panel.cpp|h: remove SetSurface override, the
19467         DependencyObjectCollection::SetSurface does the work already.
19469 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19471         * uielement.cpp: Autogenerate more of the bindings, make
19472         desired_size private, etc.
19474 2008-08-18  Geoff Norton  <gnorton@novell.com>
19475         
19476         * eventargs.cpp|h: Change the return type to int, fix the build.
19478 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19480         * uielement.cpp (uielement_get_surface): Removed.
19481         (uielement_invalidate): Removed.
19482         (uielement_set_transform_origin): Removed.
19484         * transform.cpp: Removed manual c-bindings.
19486         * text.cpp: Removed manual c-bindings for property accessors.
19488 2008-08-18  Geoff Norton  <gnorton@novell.com>
19490         * type-generated.cpp, cbinding.cpp|h: Rengerated
19491         * uielement.cpp|h, type.h, value.h: Keyboard->Key
19492         * runtime.cpp|h: Move key translation to eventargs, and pass the
19493         raw GdkEventKey to KeyEventArgs.
19494         * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
19495         and remove the old KeyboardEventArgs.
19497 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19499         * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
19501         * size.cpp: Removed manual ctor c-binding.
19503         * shape.cpp: Removed manual c-bindings for property accessors.
19505 2008-08-18  Geoff Norton  <gnorton@novell.com>
19507         * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
19508         from managed Streams.
19510 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19512         * runtime.cpp: Removed manual c-bindings for Surface and renamed
19513         Get/SetTrans() to Get/SetTransparent().
19515         * panel.cpp: Removed manual c-bindings for property accessors.
19517         * media.cpp: Removed manual c-bindings for property accessors and
19518         other methods that are now autogenerated.
19520 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19522         * dependencyobject.h: Make the generator happy.
19524 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19526         * geometry.cpp: Removed manual c-bindings for property accessors.
19528 2008-08-18  Michael Dominic K.  <mdk@mdk.am>
19530         * runtime.h: Caller is "in main thread" also when the main_thread
19531         pointer equals NULL (no surface has been created).
19533 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19535         * debug.cpp: Fix a leak found by valgrind.
19537 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19539         * dependencyobject.h: Make GetTypeName virtual if we're tracking
19540           objects, enables better output of lost objects.
19542 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19544         * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
19545           more objects to be enqueued for unref, loop until there are none
19546           left.
19548 2008-08-17  Geoff Norton  <gnorton@novell.com>
19550         * downloader.cpp|h: Add a method for DownloaderResponse to 
19551         support a Header Visitor.
19553 2008-08-17  Geoff Norton  <gnorton@novell.com>
19555         * uielement.h: Expose desired_size as public to fix the build.
19557 2008-08-17  Chris Toshok  <toshok@ximian.com>
19559         * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
19561 2008-08-17  Chris Toshok  <toshok@ximian.com>
19563         * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
19564         INCLUDE_MANAGED_CODE.
19566 2008-08-15  Larry Ewing  <lewing@novell.com>
19568         * clock.cpp|h: add methods Jeff removed back. 
19570 2008-08-15  Chris Toshok  <toshok@ximian.com>
19572         * stylus.h (class DrawingAttributes): all managed DP fields are
19573         private.
19574         (class Stroke): DrawingAttributesProperty and StylusPointsProperty
19575         are private in managed-land.
19577 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19579         * grid.h: Autogenerate bindings for GetActualWidth/Height
19581         * grid.cpp: Removed manual c-bindings.
19583         * frameworkelement.cpp: Removed manual c-bindings.
19585 2008-08-15  Chris Toshok  <toshok@ximian.com>
19587         * eventargs.h (enum CollectionChangedAction): change Reset to
19588         Cleared, and add Clearing to handle the old functionality in
19589         DependencyObject::OnCollectionClear.
19591         * dependencyobject.h (class DependencyObject): remove
19592         OnCollectionClear.  we handle that case in OnCollectionChanged
19593         now.
19595         * panel.h, panel.cpp (Panel::OnCollectionChanged): move
19596         OnCollectionClear code to here.
19598         * uielement.cpp (UIElement::OnCollectionChanged): add
19599         ActionClearing code here.
19601         * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
19603         * collection.cpp (Collection::Clear): use
19604         EmitChanged (CollectionChangedActionClearing,...) instead of
19605         OnCollectionClear.
19607 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19609         * eventargs.cpp|h: Same.
19611         * control.cpp: Same.
19613         * contentcontrol.cpp: Removed manual property accessor c-bindings.
19615         * clock.cpp: Removed manual c-bindings for things that can be
19616         autogenerated.
19618         * brush.cpp|h: Removed manual c-bindings for property accessors.
19620         * animation.cpp|h: Added some convenience c++ property accessors and
19621         got rid of all of the manual c-bindings. Fixed them to be
19622         auto-generated.
19624         * stylus.cpp: Added c++ property accessors and updated the code to
19625         use them (cleans up some code) and also got rid of the c binding
19626         accessors. We'll autogenerate these.
19628 2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
19630         * layout.cpp: Don't add kerning before a dot (.). This match SL
19631         behavior (i.e. it's not a "sliding dot" algorithm like I expected)
19632         and the effect is visible in a few DRT (like #184).
19634 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19636         * uielement.cpp (UIElement::GetTriggers): Added for convenience.
19637         (UIElement::Dispose): Use the new convenience method.
19639 2008-08-15  Chris Toshok  <toshok@ximian.com>
19641         * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
19642         (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
19643         queue a re-sort.
19644         (Panel::OnCollectionChanged): simplify this since the code moved
19645         to ChildAdded/ChildRemoved.
19647         * panel.h, panel.cpp (Panel::Dispose): loop over our children
19648         setting their visual parent to NULL.
19650         * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
19651         trigger collection removing ourselves as the target.
19652         (UIElement::OnPropertyChanged): handle TriggersProperty here -
19653         remove target from the old triggers and set target on the new
19654         ones.
19655         (UIElement::OnCollectionChanged): new method, handle
19656         TriggersCollection.
19658         * dependencyobject.cpp: be consistent in our treatment of
19659         LogicalParent - clear it in every place we're removing a DO.  Warn
19660         if we're setting it again on the same DO.
19662         * collection.h, collection.cpp: remove triggercollection's
19663         added/removedfromcollection, adn remove uielementcollection's
19664         removedfromcollection.  Also, stop using a separate closure.  The
19665         collection's LogicalParent always has the same value - use that.
19667 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19669         * clock.cpp (TimeManager::SourceTick): Instead of always using up
19670         to 1/30 of a second for flushing the async queue, use only the
19671         time remaining in our render pass to flush it.
19673 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19675         * animation.h: KeyTimeProperty isn't nullable in managed code.
19677 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19679         * cbinding.cpp, cbinding.h: Regenerated.
19680         * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
19681           to at least open the source.
19682         * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
19684 2008-08-15  Jackson Harper  <jackson@ximian.com>
19686         * xaml.cpp: Need to advance after F.
19688 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19690         * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
19691           DRT#114.
19693 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19695         * dependencyproperty.g.cpp: Regenerated.
19697 2008-08-14  Larry Ewing  <lewing@novell.com>
19699         * animation.h (class KeyFrame): remove the KeyTime DP and make
19700         the ctor private this is an abstract class.
19702         * animation.cpp: retrieve the property via name.
19704 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19706         * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
19707         many times as we can in 1/30th of a second. Major visual
19708         performance improvement for bug #395160.
19710 2008-08-14  Jackson Harper  <jackson@ximian.com>
19712         * xaml.cpp|h: We need to pass a pointer to the top level control
19713         when hooking up a managed event, the managed code uses this to
19714         find the method to invoke.
19716 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19718         * uielement.cpp: Implemented property accessors for ZIndex
19720         * collection.cpp (UIElementZIndexComparer): Use
19721         UIElement::GetZIndex(). If, in the future, we make GetZIndex()
19722         return a cached value, now we'll automagically benefit from it.
19724 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
19726         ZIndex sorting optimization for bug #395160
19728         * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
19729         over the z_sorted list, it might not yet be
19730         populated (e.g. ResortZIndex() may not have been called yet).
19731         (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
19732         new collection is non-null.
19733         (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
19734         (Panel::OnLoaded): Queue a resort here too.
19736         * collection.cpp (UIElementCollection::AddedToCollection):
19737         Removed. We don't want to do the zindex sortign here anymore. Too
19738         slow. Instead, we'll have Panel::OnCollectionChanged() set the
19739         DirtyChildrenZIndices dirty flag so that the renderer forces a
19740         resort.
19741         (UIElementCollection::Insert): Removed, no need to override
19742         anymore since we won't be resorting by zindex here anymore.
19743         (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
19744         maintained as items are added/inserted, we need to always init the
19745         z_sorted array here even if we only have 1 item.
19747 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19749         * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
19750           instance.
19751         * playlist.cpp: Use DependencyObject::SetName instead of the C method.
19752         * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
19753           well as Name accessors.
19754         * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
19755         * runtime.cpp: Updated according to new method names.
19757 2008-08-14  Jackson Harper  <jackson@ximian.com>
19759         * xaml.cpp: We now create property instances from the property's
19760         type info not the property's parent type. This will allow us to
19761         have a managed attached property on a native object.
19763 2008-08-14  Chris Toshok  <toshok@ximian.com>
19765         * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
19767         * thickness.h, thickness.cpp: add thickness_from_str.
19769         * xaml.cpp: add thickness parsing.
19771 2008-08-14  Jackson Harper  <jackson@ximian.com>
19773         * xaml.cpp: Need to lookup property element name's in their
19774         namespace so that managed attached properties can be set.
19776 2008-08-14  Jackson Harper  <jackson@ximian.com>
19778         * xaml.cpp: If there is a dot in the element name we can assume
19779         it's a property (or at least not an element).  This should prevent
19780         some extra calls into managed code to try to create types from
19781         property names.
19783 2008-08-13  Geoff Norton  <gnorton@novell.com>
19785         * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
19786         calls into the time manager.
19788 2008-08-13  Geoff Norton  <gnorton@novell.com>
19790         * runtime.cpp|h: Add a binding for g_idle_add.
19792 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19794         * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
19795           MouseEventArgs methods.
19797 2008-08-14  Jackson Harper  <jackson@ximian.com>
19799         * type-generated.cpp: Value types.
19801 2008-08-13  Jackson Harper  <jackson@ximian.com>
19803         * xaml.cpp: Make sure we set content properties.
19805 2008-08-13  Jackson Harper  <jackson@ximian.com>
19807         * xaml.cpp: Add support for parsing value types.
19809 2008-08-13  Chris Toshok  <toshok@ximian.com>
19811         * panel.cpp (Panel::OnCollectionChanged): we only need to call
19812         OnLoaded on the new child.
19814 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19816         * stylus.h: StylusInfo doesn't have a managed equivalent.
19818 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19820         * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
19821         * cbinding.cpp, cbinding.h: Regenerated.
19823 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19825         * type.cpp: Remove spew.
19826         * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
19827           we're trying to get values, not set them.
19829 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19831         * dependencyproperty.g.cpp: Regenerated.
19832         * geometry.h: Added IsFilled property.
19834 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19836         * brush.h: Set correct managed DP access and property types.
19838 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19840         * *.h: Added GeneratePInvoke attribute to each ctor
19842 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19844         * text.cpp: s/Inlines/InlineCollection/g
19846         * xaml.cpp: s/Inlines/InlineCollection/g
19848         * collection.h (class InlineCollection): Renamed from Inlines.
19850         * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
19851         and also the ctor. Needed to prevent a crash in test-props.html
19853 2008-08-13  Geoff Norton  <gnorton@novell.com>
19855         * runtime.cpp|h: Reuse the old html_timer infrastructure for the
19856         intial DispatcherTimer implementation.
19858 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
19860         * media.h (class MediaElement): Make MarkersProperty internal for
19861         managed-side.
19863         * grid.h (class Grid): Make Column/RowDefinitionsProperties
19864         internal for managed-side.
19866         * text.h (class TextBlock): Make InlinesProperty internal for
19867         managed-side.
19869         * panel.h (class Panel): Update ChildrenProperty managed property
19870         access.
19872         Also added newlines to the end of some files to silence compile
19873         warnings.
19875 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19877         * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
19878           cbinding.cpp, cbinding.h: Regenerated.
19879         * geometry.h: Annotation fix.
19880         * Makefile.am, src.mdp: Added tilesource.h
19881         * tilesource.h: Added.
19883 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19885         * src.mdp, Makefile.am: Added animation2.h
19886         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
19887           dependencyproperty.g.cpp: Regenerated.
19888         * animation.h: Added missing 2.0 DPs and more annotations.
19889         * animation2.h: Added, contains 2.0 animation classes.
19890         * clock.h: There are no managed equivalent of TimelineGroup and
19891           ParallelTimeline, remove their Namespace annotation.
19893 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19895         * shape.h: Fix warning.
19897 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19899         * shape.h: The managed Shape class must be constructable, so make all
19900           pure virtual methods from the native Shape class just virtual.
19901         * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
19903 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19905         * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
19906           dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
19907           text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
19908           annotations to make gui-compare happier.
19910 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19912         * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
19913           style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
19914           tweaking.
19916 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19918         * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
19919           dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
19920           type-generated.cpp, value.h: Added a native StackPanel class and
19921           generate the managed StackPanel.
19923 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19925         * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
19926           namescope.h, stylus.h, transform.h: Tweak some annotations.
19928 2008-08-12  Chris Toshok  <toshok@ximian.com>
19930         * style.h (class Style): make the "Setters DP" field private.
19932         * template.h (class ControlTemplate): add TargetType DP
19934         * dependencyproperty.g.cpp: regen.
19936 2008-08-12  Chris Toshok  <toshok@ximian.com>
19938         * style.h (class Setter): hack for the DependencyProperty valued
19939         property.  we need to parse a string DP name in a context where we
19940         don't know the type to apply to it, so we need to have a string
19941         backed property.
19943         * dependencyproperty.g.cpp: regen.
19945 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19947         * collection.h: Annotate Collection.
19949 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19951         * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
19952           size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
19954 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19956         * src.mdp: Updated.
19958 2008-08-12  Chris Toshok  <toshok@ximian.com>
19960         * collection.cpp (Collection::Clear): make a temporary copy of the
19961         array so we can zero out the ptrarray before calling
19962         RemovedFromCollection.
19964 2008-08-12  Jackson Harper  <jackson@ximian.com>
19966         * xaml.h:
19967         * xaml.cpp: Hydrate now passes in the default assembly name and
19968         path (we can probably do away with path's I think that's just a
19969         holdover from 1.1).  If no assembly name is specified in the
19970         custom xmlns, the default's are used.
19972 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19974         * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
19975           style.h, uielement.h, grid.h, media.h: Tweaked annotations to
19976           support managed DP accessor generation.
19978 2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
19980         * collection.cpp (Collection::SetCount): Convenience function.
19981         (Collection::Clear): Use SetCount().
19982         (Collection::Insert): Same.
19983         (Collection::RemoveAt): Same.
19985         * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
19986         parent class rather than base class - while the
19987         DependencyObjectCollection might not currently override Add/Insert
19988         methods, if at some later point overrides are added, then we need
19989         to do no work here.
19991         * collection.cpp (DependencyObjectCollection::SetValueAt):
19992         Removed (not used anywhere).
19993         (Collection::SetValueAtWithError): This needs to call
19994         SetValueAt(), not GetValueAt().
19995         (Collection::SetValueAt): Delete the removed Value after emitting
19996         the event so we don't leak it.
19998 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20000         * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
20001           deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
20002           trigger.h, uielement.h: Use string instead of char* as
20003           @PropertyType.
20005 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20007         * animation.h, brush.h, canvas.h, clock.h, collection.h,
20008           contentcontrol.h, control.h, dependencyobject.h, deployment.h,
20009           downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
20010           namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
20011           transform.h, trigger.h, uielement.h, usercontrol.h: Added
20012           @Namespace annotations, and changed @PropertyType which were
20013           declared as gint32 (and are enums) to use the actual enum type.
20014         * dependencyproperty.g.cpp: Updated.
20016 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20018         * src.mdp: Updated.
20020 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20022         * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
20023           DependencyProperty to the Kind enum.
20025 2008-08-11  Chris Toshok  <toshok@ximian.com>
20027         * deployment.h (class Application): add ResourceProperty.
20029         * style.h: add ValueProperty.
20031         * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
20032         after adding the Version=2.0 stuff to the collection api.
20034         * dependencyproperty.g.cpp: regen.
20036 2008-08-11  Chris Toshok  <toshok@ximian.com>
20038         * error.h, error.cpp: add an enum to MoonError that lets us
20039         specify which exception to raise.
20040         
20041         * collection.h, collection.cpp: a few changes:
20043         1. make most methods take Value* now instead of Value, to ease the
20044         autogenerated bindings.  Leave in Add/Remove taking (Value v) so
20045         we can let c++ do some implicit conversion lifting for us.  Leave
20046         the (Value) variants as non-virtual, and make the Value* ones
20047         virtual.
20049         2. Make ::Add call ::Insert, instead of duplicating all the code.
20051         3. Move all calls of AddedToCollection and RemovedFromCollection
20052         to *after* the work has been done (they're past-tense, so do what
20053         their name implies.)  This means subclasses can assume the item is
20054         already in the array (or removed from it) when those methods are
20055         called.  The one holdout to this utopian ideal is Clear().  we
20056         need to fix that.
20058         4. Switch from overriding GetValue to handle CountProperty (and
20059         leaking a Value* every time we get it) to setting the
20060         CountProperty whenever we need to (in Insert/RemoveAt).
20062         5. Add special GetValueAtWithError, SetValueAtWithError, and
20063         RemoveAtWithError methods, that allow us to effectively raise
20064         exceptions from the unmanaged code.  Use the new
20065         MoonError::ErrorKind enum to specify which exception.
20067         6. remove a bunch of C api, which is now autogenerated.
20068         
20069         * dependencyproperty.g.cpp (dependency_property_g_init): regen to
20070         pick up Collection::CountProperty's default value.
20072         * cbinding.h, cbinding.cpp: autogen'ed collection api.
20074         * stylus.h, media.h, media.cpp: track collection changes.
20076         * dependencyobject.cpp: track MoonError enum change.
20078 2008-08-11  Chris Toshok  <toshok@ximian.com>
20080         * dependencyproperty.g.cpp: regen.
20082         * control.h (class Control): add StyleProperty.
20084 2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
20086         * layout.cpp: Compute line's height with more precision. This 
20087         removes the cumulative difference (over multiple lines) with
20088         Silverlight implementation. Fix DRT#209 (enough to PASS) and 
20089         improve several other ones (already passing but imperfect).
20091 2008-08-11  Chris Toshok  <toshok@ximian.com>
20093         * style.h: comment out 2 problematic DP's for now.
20095         * dependencyproperty.g.cpp: regen
20097 2008-08-11  Chris Toshok  <toshok@ximian.com>
20099         * style.h, style.cpp: add Style, SetterBase, Setter, and
20100         SetterBaseCollection unmanaged types.
20102         * Makefile.am: add them to the 2.0 build.
20104         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
20105         dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
20106         
20107 2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
20109         * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
20110         cache.
20111         (Polygon::OnCollectionChanged): Same.
20113         * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
20114         the TextDecorationsProperty changes too. Fixes the "underline
20115         hyperlinks" portion of bug #412986.
20117 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20119         * xaml.cpp: Remove debug spew.
20121 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20123         * array.cpp, array.h: Removed, no longer needed.
20124         * collection.cpp, collection.h: Moved double_garray_from_str to
20125           collection.cpp|h.
20126         * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
20127           shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
20128           xaml.cpp: Remove the double and point arrays, no longer needed.
20129         * type-generated.cpp: Remove the double and point arrays, no longer
20130           needed. Implement support for 2.0 events.
20132 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20134         * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
20135           during parsing).
20137 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20139         * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
20141 2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
20143         * *.h: Removed *_new() prototypes which are autogenerated in
20144         cbinding.h
20146 2008-08-08  Chris Toshok  <toshok@ximian.com>
20148         * template.h, template.cpp: new file, stub implementations for
20149         FrameworkTemplate and ControlTemplate.
20151         * Makefile.am: add template.h/cpp.
20153         * control.h: add Template property.
20155         * frameworkelement.h: add some 2.0 events.
20157         * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
20158         value.h, type-generated.cpp: regenerate.
20159         
20160 2008-08-08  Chris Toshok  <toshok@ximian.com>
20162         * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
20163         parser around in various methods (starting from the public
20164         xaml_set_property_from_str and value_from_str*) in order to get it
20165         down to where it's needed for the enum_* calls.
20167         * enums.h, enums.cpp: add a "sl2" argument so we can resolve
20168         sl1/sl2 specific enum values, and add the 2.0 specific
20169         Horizontal/VerticalAlignment mappings.
20171 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20173         * runtime.cpp: Remove comments to self :)
20175 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20177         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20178           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20179           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20180           animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
20181           control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
20182           clock.cpp, uielement.h, collection.h, geometry.h,
20183           contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
20184           collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
20185           frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
20186           namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
20187           registration from *_init methods, and remove *_init methods which
20188           turned out to be empty after that.
20190 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20192         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20193           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20194           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20195           animation.h, grid.cpp, downloader.h, shape.h,
20196           dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
20197           control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
20198           Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
20199           clock.cpp, uielement.h, collection.h, geometry.h,
20200           contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
20201           grid.h, collection.cpp, geometry.cpp, shape.cpp,
20202           dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
20203           brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
20204           usercontrol.h: Generate dependency property registration.
20206 2008-08-07  Chris Toshok  <toshok@ximian.com>
20208         * collection.h, collection.cpp (double_collection_from_str): new
20209         method.
20210         (point_collection_from_str): new method.
20212         * xaml.cpp (value_from_str): add support for
20213         DoubleCollection/PointCollection properties.  leave
20214         DoubleArray/PointArray in for now, although nothing should use it.
20216         * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
20217         PointArray/DoubleArray properties to using
20218         PointCollection/DoubleCollection.  This is unfortunately a
20219         necessity due to the 2.0 changes, but it should be transparent for
20220         everything else.
20222 2008-08-07  Larry Ewing  <lewing@novell.com>
20224         * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
20225         on ShiftPosition interaction with the shape cache to fix the
20226         droppings we were seeing in AnimationMatrix and
20227         StoryBoard_ModifyProperty.htm.
20229 2008-08-07  Geoff Norton  <gnorton@novell.com>
20231         * media.cpp: When the MediaElement source changes set the
20232         BufferingProgress back to 0 otherwise we may never emit a 
20233         BufferingProgressChangedEvent for the new source.
20235 2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
20237         * layout.cpp: Handle negative horiBearingX correctly. This gives
20238         better visual results in DRT #47 (same width value, up to 2 
20239         decimal) and #209 (not enough to make it PASS but I doubt the 
20240         master is ok, since I can't duplicate its output).
20242 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20244         * dependencyobject.cpp: HasProperty: accept attached properties for
20245           now.
20247 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20249         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20250           control.h, deployment.h, text.h, thickness.h, trigger.cpp,
20251           canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
20252           transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
20253           shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
20254           text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
20255           point.h, collection.h, geometry.h, contentcontrol.cpp,
20256           frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
20257           geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
20258           rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
20259           instructions to generate c constructors in headers and remove *_new
20260           implementations from cpp files.
20261         * dependencyobject.h: Typedef function pointer to avoid making the
20262           generator understand function pointer syntax. Update comments to
20263           new syntax.
20264         * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
20265         * type.h, type.h.in: Updated comments to new syntax.
20266         * mms-downloader.h: Use C++ syntax.
20267         * dependencyproperty.h, dependencyproperty.cpp: Make
20268           dependency_property_register_managed_property a method on the type
20269           and update comments to new syntax.
20270         * type-generated.cpp: Updated by new generator, which did actually
20271           catch a few errors.
20273 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20275         * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
20276           until it's fixed.
20278 2008-08-06  Geoff Norton  <gnorton@novell.com>
20280         * dependencyproperty.cpp: When registering a clashing DP
20281         return the original so that the code can act on it as it
20282         expects.  Fixes about 18 DRT regressions.
20284 2008-08-06  Chris Toshok  <toshok@ximian.com>
20286         * uielement.h, uielement.cpp: add GetTransformToUIElement, the
20287         unmanaged equivalent to the managed UIElement.TransformToVisual.
20289         Also change the signature of HitTest to take a Point, not two
20290         doubles.  Add a HitTest overload that takes a Rect in
20291         preparation for 2.0.
20293         * panel.h, panel.cpp: track HitTest signature change.
20295         * control.h, control.cpp: track HitTest signature change.
20297 2008-08-06  Chris Toshok  <toshok@ximian.com>
20299         * transform.h, transform.cpp: add a convenience ctor for Matrix
20300         that takes a cairo_matrix_t*.
20302 2008-08-06  Chris Toshok  <toshok@ximian.com>
20304         * type-generated.cpp (type_infos): fix ctors for UIElement and
20305         UIElementCollection.
20307 2008-08-06  Chris Toshok  <toshok@ximian.com>
20309         * frameworkelement.h, frameworkelement.cpp: add
20310         DataContextProperty.
20312 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20314         * type.cpp: Fix for old glib in sled.
20316 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20318         * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
20319           type-generated.cpp: Add custom properties to a GSList instead of
20320           the hash table given that several custom properties can be
20321           registered on the same type with the same name.
20323 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20325         * src.mdp: Make src and plugin projects build.
20327 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20329         * src.mdp: Updated.
20331 2008-08-05  Chris Toshok  <toshok@ximian.com>
20333         * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
20334         superclass of Transform, and move all the current Transform stuff
20335         there.
20337         * type.h, type-generated.cpp, value.h: resync
20339 2008-08-05  Chris Toshok  <toshok@ximian.com>
20341         * uielement.h, uielement.cpp, frameworkelement.h,
20342         frameworkelement.cpp: move the UIElement DPs back - the move to
20343         FrameworkElement breaks tests.
20345         * collection.cpp (TriggerCollection::AddedToCollection): quiet
20346         this down.
20347         (TriggerCollection::RemovedFromCollection): same.
20349 2008-08-05  Chris Toshok  <toshok@ximian.com>
20351         * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
20352         DependencyProperties.  we need a way to limit access to these to
20353         only the 2.0 case.
20355         * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
20356         TagProperty, TriggersProperty are moved to
20357         frameworkelement.h/.cpp.
20358         
20359         * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
20360         moved from UIElement to FrameworkElement.
20362         * size.h, size.cpp: add SizeChangedEventArgs.
20364         * thickness.h: move this type here
20366         * control.h: #include thickness.h
20368         * type.h, value.h, type-generated.cpp: regenerate for
20369         SIZECHANGEDEVENTARGS.
20370         
20371 2008-08-05  Chris Toshok  <toshok@ximian.com>
20373         * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
20375         * enums.h: add comment about keeping MouseCursors enum in sync
20376         with Cursor.cs.
20378         * enums.cpp: make all the mappings use symbols instead of integer
20379         constants.  Also, rename enums.c to enums.cpp so it can include
20380         the .h files for enums not in enums.h.
20382 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20384         * src.mdp: Remove visual.cpp|h from here too.
20386 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20388         * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
20389           type-generated.cpp, uielement.cpp, uielement.h, value.h,
20390           visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
20391           libmoon.h: Deleted Visual (moved content into UIElement), and
20392           renamed VisualCollection to UIElementCollection.
20394 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20396         * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
20397           GetValueWithError: Add a parameter to specify the exact type
20398           (including managed subclassing) of the object. HasProperty: use
20399           that parameter to determine if the type has the specified property
20400           or not.
20401         * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
20402           a is_custom field to determine if the property is our own or not.
20404 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20406         * cbinding.cpp, cbinding.h: Updated.
20407         * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
20408           dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
20409           type.h.in, type-generated.cpp: Create a Types class which may
20410           contain additional types. Change the DP/DO/Type overloads
20411           containing a Surface to take a Types argument instead.
20413 2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20415         * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
20417 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20419         * animation.cpp:
20420         * clock.cpp:
20421         * clock.h: Adding method to store a manual target (instead of a named target)
20422         for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
20424 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20426         * animation.cpp:
20427         * animation.h: A little bit of C API for KeySpline.
20429 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20431         * runtime.cpp: _get_surface can only be called from the main thread.
20433 2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20435         * src.mdp, cbinding.h, cbinding.cpp: Updated.
20436         * Makefile.am: Include error.cpp.
20437         * error.h, error.cpp: Added MoonError.
20438         * dependencyproperty.h: Make RegisterFull 2.0 only.
20439         * dependencyobject.h, dependencyobject.cpp: Added and implemented
20440           Get[[No]Default]ValueWithError and a HasProperty method which takes
20441           into account properties registered on a surface.
20443 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20445         * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
20446         * media.cpp: Use property accessors instead of GetValue.
20448 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20450         * cbinding.cpp, cbinding.h: Update.
20451         * dependencyproperty.cpp: RegisterFull: Only wrap method code in
20452           SL_2_0, fixed 1.0 build.
20454 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20456         * dependencyproperty.h: Make GetName return a const char*, and rename
20457           parameters from readonly to read_only (to not conflict with C#
20458           keywords).
20460 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20462         * src.mdp: Updated.
20463         * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
20464           DependencyProperty's C methods.
20465         * cbinding.cpp, cbinding.h: Added.
20466         * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
20467           moon/generators, and add methodgen to generate pinvokes, and cgen
20468           to generate c bindings.
20470 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20472         * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
20473           Implement property changed callbacks.
20475 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20477         * contentcontrol.h, control.h: Fix includes.
20479 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20481         * pipeline-ffmpeg.cpp: Fix warning.
20483 2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
20485         * dependencyobject.cpp (EventObject::Dispose): Call
20486         SetSurface (NULL)
20487         (EventObject::unref): Don't call SetSurface() here anymore.
20489 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20491         * runtime.cpp|h: Adding few utility functions to modify the flags
20492         at runtime -- provided that there are no surfaces currently
20493         present. Would be nice to be able to somehow do it before calling
20494         runtime_init ().
20496 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20498         * runtime.cpp|h: Adding an expose handoff custom
20499         function that can be set on surface.  It's called just after
20500         render_cb when something has been updated on the screen.
20502 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20504         * runtime.cpp|h: Adding a global surface list and an
20505         ability to access it.  I have a bad feeling we need some locking
20506         in the _get_surface_list function.
20508 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20509         
20510         * src.mdp: Updated.
20512 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20514         This is the proper fix for bug #412443
20516         * visual.cpp (VisualCollection::Dispose): Implement Dispose()
20517         method.
20518         (VisualCollection::RemovedFromCollection): Now that we know we are
20519         disposing, we can unset VisualParent here instead of in our
20520         dtor/Dispose() method, saving us from having to interate over our
20521         children twice.
20523         * collection.cpp (Collection::Dispose): Implement a Dispose()
20524         method which does what the dtor used to do.
20526         * dependencyobject.cpp (EventObject::unref): Call Dispose() just
20527         before deleting the object.
20529 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20531         * dependencyobject.cpp (struct Listener): Comment out the listener
20532         reffing from previous commit. I don't think this is correct.
20534         * visual.cpp (VisualCollection): Set z_sorted to NULL after
20535         freeing it so that parent class dtor calling
20536         RemovedFromCollection() will not poke at free'd memory.
20538 2008-07-31  Geoff Norton  <gnorton@novell.com>
20540         * Makefile.am: Undo part of the recent Makefile changes as they broke 
20541         the 1.0 build.
20543 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20545         Fixes bug #412443
20547         * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
20548         Ref the listener.
20549         (DependencyObject::RemovePropertyChangeListener): Unref the listener.
20551 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20553         * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
20554         this needs to chain up to
20555         DependencyObjectCollection::RemovedFromCollection() rather than
20556         AddedToCollection(). Duh.
20558 2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
20560         * contentcontrol.cpp|h: Added.
20562         * enums.h: Moved some font/text enums here from font.h
20564 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20566         * dependencyproperty.cpp: Fix build.
20568 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20570         * runtime.cpp: Fix 1.0 build.
20572 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20574         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
20575           type.cpp, type.h, type.h.in, typegen/typegen.cs,
20576           type-generated.cpp: Store DependencyProperties in the Type* instead
20577           of a hashtable keyed on the kind.
20579 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20581         * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
20582           given that since we might not have access to the surface where the
20583           type was registered, it's not possible to do any type checking 
20584         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
20585           Implement registration of managed properties on a surface.
20586         * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
20587           types registered on a surface, added a Type::MANAGED enum value.
20588         * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
20589           MANAGED type.
20591 2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
20593         * text.cpp (inline_new): Added.
20595 2008-07-29  Jackson Harper  <jackson@ximian.com>
20597         * xaml.cpp: Add a set_parent call, I need to do some fanagling
20598         there so collection items don't have their parents set.
20599         - Managed items that are being hydrated or created using x:Class
20600         need to get content properties from the managed world.
20601         
20602 2008-07-28  Chris Toshok  <toshok@ximian.com>
20604         * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
20605         type-generated.cpp: Add Size foo.
20607 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
20609         * value.cpp (Value::FreeValue): Oops, free Thickness.
20611 2008-07-28  Chris Toshok  <toshok@ximian.com>
20613         * control.h (struct Thickness): reorder fields to match managed
20614         struct.
20616 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
20618         * typegen/typegen.cs: Added Thickness.
20620         * value.h.in, type.h.in: Added Thickness.
20622         * value.cpp: Implemented Thickness value ctor/etc.
20624         * enums.h: Added more 2.0-specific enums.
20626         * control.cpp|h: Implemented property accessors/bindings and
20627         Thickness struct.
20629 2008-07-28  Michael Dominic K.  <mdk@mdk.am>
20631         * animation.cpp: When starting an SB that has been started already make sure to
20632         remove the Completed handler before the teardown. Fixes #405518.
20634 2008-07-28  Chris Toshok  <toshok@ximian.com>
20635         
20636         * collection.cpp (collection_iterator_next): move the check for
20637         index-in-range to after the increment of it.  that way managed
20638         code doesn't step off the end of the list.
20640 2008-07-26  Chris Toshok  <toshok@ximian.com>
20642         * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
20643         MouseEventArgs and KeyboardEventArgs classes subclasses of a new
20644         class - RoutedEventArgs.  Also, add a "Handled" field to both
20645         MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
20646         class to map to the 2.0 static Keyboard class.  it exposes nothing
20647         but a Modifiers property, which isn't updated at present, but will
20648         be by the Surface code (in the key event handler).
20650         * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
20651         type/value.
20653 2008-07-26  Chris Toshok  <toshok@ximian.com>
20655         * enums.h (enum ModifierKey): 2.0 specific enum for use by the
20656         Keyboard class.
20658 2008-07-26  Jackson Harper  <jackson@ximian.com>
20660         * xaml.cpp: If there isn't a managed content property, try looking
20661         for an unmanaged one.
20663 2008-07-26  Jackson Harper  <jackson@ximian.com>
20665         * xaml.h|cpp: Create elements for imported managed namespaces.
20666         
20667 2008-07-25  Chris Toshok  <toshok@ximian.com>
20669         * runtime.h, runtime.cpp: reformat the class decl to put public:
20670         stuff first.  add "bool silverlight2" to the surface ctor so we
20671         can start to use it for behavioral differences (routed event
20672         handlers, key events, focus, etc).
20674 2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
20676         * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
20677         multiple StrokeCollections at a time but they cannot be added to
20678         the same collection multiple times. Do not default to
20679         DependencyObjectCollection::CanAdd()'s behavior because it checks
20680         that the logical parent is unset (which will not be accurate for
20681         strokes).
20682         (StylusPointCollection): Same as StrokeCollection.
20684         * xaml.cpp (dependency_object_add_child): Set the logical parent
20685         of items to NULL before adding them to a collection.
20687         * collection.h (class Collection): Removed 'unique' field, it's
20688         not necessary afterall.
20689         (Collection::CanAdd): New virtual method to check if the value can
20690         be added to the collection (by default always returns true).
20691         (DependencyObjectCollection::CanAdd): Override CanAdd() by
20692         checking if the object being added has a logical parent. If it
20693         already has a parent, it cannot be added (this is how Silverlight
20694         behaves).
20696         * collection.cpp (Collection::Add): There's no such thing as
20697         'unique' anymore. Don't check if the value is already contained
20698         within our collection like the old code used to do, instead call
20699         our new virtual method CanAdd() to see if we can add it.
20700         (Collection::Insert): Check CanAdd().
20701         (Collection::SetValueAt): Check CanAdd().
20703 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20705         * collection.cpp (collection_add): Fixed.
20707         * collection.h: Get rid of convenience wrappers that aren't even
20708         used. Also removes the need for previous commit.
20710 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20712         * collection.h (class DependencyObjectCollection): Add virtual
20713         Add(), Clear() and Insert(). This makes it possible for subclasses
20714         to chain up if they need to override any of these.
20715         (class DoubleCollection): Same.
20716         (class PointCollection): Here too.
20718         * visual.cpp (VisualCollection::Clear): Chain up to
20719         DependencyObjectCollection::Clear() rather than
20720         Collection::Clear().
20721         (VisualCollection::Insert): Don't bother resizing the z_sorted
20722         array here, it will be done inside ResortByZIndex() anyway.
20723         (VisualCollection::Insert): Chain up to
20724         DependencyObjectCollection::Insert() rather than
20725         Collection::Insert()
20727 2008-07-24  Geoff Norton  <gnorton@novell.com>
20729         * downloader.cpp: When a downloader is reused reset the completed
20730         state when we get the new Open call.
20732 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20734         * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
20736         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20737         Unregister the NameScope the same way the old Collection::Remove()
20738         way did it. This way seems the most correct (RemoveAt() was
20739         totally broken and SetVal() doesn't seem right afterall).
20741 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20743         * collection.cpp: Added c-wrappers for creating new
20744         collections. Also changed the c-bindings for
20745         setting/adding/inserting/etc items to the collection to take
20746         Value* instead of Value. Should make it simpler for the managed
20747         code to pass that.
20749 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20751         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20752         Unregister the NameScope the same way it was done in the more
20753         common case in the old code (why were there different ways?).
20755         * text.cpp (TextBlock::OnCollectionChanged): Chain up.
20756         (TextBlock::OnCollectionItemChanged): Same.
20758         * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
20759         (GradientBrush::OnCollectionItemChanged): Chain up and notify
20760         listeners.
20762         * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
20763         (GeometryGroup::OnCollectionItemChanged): Chain up and notify
20764         listeners.
20765         (PathGeometry::OnCollectionChanged): Chain up.
20766         (PathGeometry::OnCollectionItemChanged): Chain up and notify
20767         listeners.
20768         (PathFigure::OnCollectionChanged): Chain up.
20769         (PathFigure::OnCollectionItemChanged): Chain up and notify
20770         listeners.
20772         * shape.cpp (Polygon::OnCollectionChanged): Chain up.
20773         (Polygon::OnCollectionItemChanged): Same.
20774         (Polyline::OnCollectionChanged): Same.
20775         (Polyline::OnCollectionItemChanged): Same.
20777         * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
20778         call NotifyListersOfPropertyChange().
20780         * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
20781         call NotifyListersOfPropertyChange().
20783 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20785         * collection.cp|h: Reworked Collections a lot. Collection is now a
20786         generic collection of Values. Added 3 new collections:
20787         DependencyObjectCollection (which holds DO's like the old
20788         Collection class did), DoubleCollection and PointCollection.
20790         * dependencyobject.h (DependencyObject::OnCollectionChanged):
20791         Changed the way this works to reflect the managed API.
20793         *.cpp|h: Updated to reflect above changes.
20795 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
20797         * utils.cpp (g_ptr_array_insert): New utility function.
20798         (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
20799         find the index where we want to add the item.
20801 2008-07-23  Chris Toshok  <toshok@ximian.com>
20803         * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
20804         transform.cpp, grid.cpp, animation.cpp, text.cpp,
20805         dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
20806         geometry.cpp, shape.cpp, dependencyobject.cpp,
20807         frameworkelement.cpp, media.cpp, brush.cpp: a couple of
20808         DependencyPropertyChanges:
20810         1. switch to the Silverlight/WPF naming of the two Types.
20811         type/value_type change to owner_type/property_type.
20813         2. go all gtk-3.0, and make things private with accessors.
20815 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20817         * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
20818           dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
20819           dependencyproperty.h, deployment.cpp, downloader.cpp,
20820           frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
20821           namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
20822           text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20823           usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
20824           GetDependencyObject from DependencyObject to DependencyProperty.
20826 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20828         * dependencyobject.h, dependencyproperty.h, Makefile.am,
20829           dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
20830           DependencyProperty to its own file before it grows bigger.
20832 2008-07-21  Jackson Harper  <jackson@ximian.com>
20834         * xaml.cpp: Add back in the ability to create elements from
20835         managed elements using the x:Class syntax.
20837 2008-07-21  Jackson Harper  <jackson@ximian.com>
20839         * user-control.h:
20840         * type-generated.cpp: The UserControl's Content Property name is
20841         Content not ContentProperty.
20843 2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
20845         * collection.cpp (collection_add): Fixed to return int.
20847 2008-07-21  Jackson Harper  <jackson@ximian.com>
20849         * xaml.cpp: Add support for parsing GridLength attribute values.
20851 2008-07-19  Geoff Norton  <gnorton@novell.com>
20853         * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
20854         stream when there is one available.  Fixes drt #2.
20855         Refactor some code duplication into a utility method.
20857 2008-07-19  Jackson Harper  <jackson@ximian.com>
20859         * xaml.cpp: We can't blindly assume an object has a content
20860         property.
20862 2008-07-19  Jackson Harper  <jackson@ximian.com>
20864         * type-generated.cpp: UserControl has a content property.
20865         * value.h|.h.in|.cpp: Add GridLength to Value.
20867 2008-07-18  Geoff Norton  <gnorton@novell.com>
20869         * media.cpp: Revert InitialBuffer work around as it has some unexpected
20870         consequences. :(
20872 2008-07-18  Geoff Norton  <gnorton@novell.com>
20874         * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
20875         get a new burst from the mms server with AccelBW.
20877 2008-07-18  Geoff Norton  <gnorton@novell.com>
20879         * media.cpp: If we're using a mms source we can attempt to start playing the 
20880         first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
20881         Fixes c9 stream start lag.
20883 2008-07-18  Geoff Norton  <gnorton@novell.com>
20884         
20885         * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
20886         our initial buffer quickly.
20888 2008-07-18  Geoff Norton  <gnorton@novell.com>
20890         * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
20891         * Makefile.am: Add mp3.(cpp|h) to the build.
20892         * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
20893         together, so we need to split them up and pass them to avcodec_decode_audio2
20894         one at a time.  Its also possible that we could get a partial frame, so we need
20895         to buffer that data. Fixes mms+mp3.
20897 2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
20899         Fix for bug #410206
20901         * text.h (TextBlock::GetBoundingHeight): Return the larger of the
20902         2 values.
20903         (TextBlock::GetBoundingWidth): Same.
20905 2008-07-18  Chris Toshok  <toshok@ximian.com>
20907         * Makefile.am (libmoon_include_HEADERS): add window.h and
20908         window-gtk.h
20909         (libmoon_la_SOURCES): add window-gtk.cpp
20911         * window.h: abstract class for windows, that surface will use to
20912         deal with window/widget level operations.
20914         * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
20915         gtk widgets.
20917         * runtime.h, runtime.cpp: factor out all the widget stuff from
20918         this file, along with all "width" and "height" fields.  now
20919         Surface knows nothing about widgets or windowless.  It speaks to
20920         MoonWindow implementations instead.  Add several public methods
20921         that the window implementations can call (anything HandleUI*) to
20922         communicate events back to the surface.
20924         * canvas.cpp: surface->Get{Width,Height} ==>
20925         surface->GetWindow()->Get{Width,Height}.
20926         
20927 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20929         * clock.cpp:
20930         * media.cpp: Reverting prev change, different solution: process the tick calls
20931         before processing the render.
20933 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20935         * media.cpp: If the downloader is already completed, don't do an extra async 
20936         call when setting source. Fixes the downloader-set-source... testcase.
20938 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
20940         * media.cpp: Fixing a crasher in case bad parameters passed from js.
20942 2008-07-18  Jackson Harper  <jackson@ximian.com>
20944         * xaml.h: New delegates and functions for the loader.  We need to
20945         call back into managed code when we import a xaml namespace so
20946         that it knows which objects are available and we need a new
20947         function for creating those objects.
20949 2008-07-18  Jackson Harper  <jackson@ximian.com>
20951         * usercontrol.cpp|h: Add C functions for accessing the Content
20952         element.
20954 2008-07-17  Jackson Harper  <jackson@ximian.com>
20956         * type.h:
20957         * value.h:
20958         * type-generated.cpp:
20959         * deployment.cpp|h: Add an Application type.  This doesnt directly
20960         map to the managed Application because it inherits from
20961         DependencyObject, but it allows us to parse Application XAML files
20962         and then we can pull the values we need.
20964 2008-07-17  Jackson Harper  <jackson@ximian.com>
20966         * libmoon.h: Add usercontrol.h, I want access to this in the
20967         plugin debug code.
20969 2008-07-17  Jackson Harper  <jackson@ximian.com>
20971         * xaml.cpp: Had a backwards IsSubclassOf here causing
20972         UserControl's content property to not get set (and I imagine many
20973         other content properties).
20974         * usercontrol.h: Add the ContentProperty metadata.
20976 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
20978         * downloader.h|cpp: provide hooks for DownloadeRequest
20980 2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
20982         * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
20984         * runtime.cpp (surface_create_downloader): We need to actually
20985         return the downloader here or our caller will just get garbage ;-)
20987 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
20989         * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
20991         * runtime.h: On desktop and browser by default use idle hinting.
20993 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
20995         * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
20996         control the use of idle hint in the clocks.
20998 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
20999         
21000         * runtime.h|cpp: add surface_get_downloader
21002 2008-07-16  Larry Ewing  <lewing@novell.com>
21004         * runtime.cpp: try to get the resize logic correct for all cases,
21005         including popfly, ControlState.htm and fullscreen tests.
21007         Fixes the (non)rendering issues in the popfly game creator.
21009 2008-07-16  Geoff Norton  <gnorton@novell.com>
21011         * mplayer.cpp: Its possible that extremely small audio files will
21012         never fill the sound buffer enough causing us to never call snd_pcm_open.
21013         Ensure that we open the buffer to play the sound before shutting down
21014         the player.
21016 2008-07-16  Geoff Norton  <gnorton@novell.com>
21018         * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
21020 2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
21022         * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
21023         greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
21024         looks better (but it already passed)
21026 2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21028         * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
21029           class doesn't do anything live/mms anymore. LiveSource: removed
21030           completely, never used. Added MemoryNestedSource to wrap another
21031           MemorySource without messing with its current position pointer.
21032           MemoryQueueSource: store already parsed packets instead of
21033           MemorySources in the queue, saves a memory allocation and prevents
21034           parsing each packet twice when buffering (once for the code which
21035           determines the last available pts, and again for the normal
21036           demuxing code path).
21037         * mms-downloader.cpp: Updated to not delete asf parser, unref it
21038           instead.
21039         * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
21040           wait a bit longer before ending up waiting for more data (which
21041           causes the MediaElement to go into buffering mode).
21042         * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
21043           anymore.
21045 2008-07-15  Larry Ewing  <lewing@novell.com>
21047         * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
21048         fix a regression in the fullscreen message code.
21050 2008-07-15  Jb Evain  <jbevain@novell.com>
21052         * deployment.cpp|h: start updating Deployment to sl2b2.
21054 2008-07-15  Jb Evain  <jbevain@novell.com>
21056         * deployment.h: remove SupportedCulture and SupportedCultureCollection
21057         as they no longer exist.
21058         * value.h, type.h, type-generated.cpp: regenerate.
21060 2008-07-15  Jb Evain  <jbevain@novell.com>
21062         * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
21064 2008-07-15  Jb Evain  <jbevain@novell.com>
21066         * list.cpp: set pointers to NULL instead of 0.
21068 2008-07-14  Geoff Norton  <gnorton@novell.com>
21070         * mplayer.cpp: If we've already reached the EOF in the audio stream
21071         don't keep processing GetNextBuffer.  This was causing us to emit
21072         MediaEnded more than once, causing failures in the test suite.
21074 2008-07-14  Geoff Norton  <gnorton@novell.com>
21076         * downloader.cpp:  Change completed to check a bool instead of 
21077         filename, as filename can now be set before the downloader is in fact
21078         completed.
21080 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21082         * media.cpp: Initialize Media with our downloader.
21083         * pipeline.cpp: Media::Open: Check if the source has ended while
21084           waiting for an asfparser. Remove print_stack_traces.
21086 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21088         * internal-downloader.h: Add InternalDownloader::GetType to allow the
21089           derived internal downloader to tell what kind of internal
21090           downloader it is.
21091         * file-downloader.h: Implement InternalDownloader::GetType.
21092         * downloader.h: Make the internal downloader publicly accessible. Add a
21093           Downloader::IsAborted method.
21094         * mms-downloader.h, mms-downloader.cpp: Implement
21095           InternalDownloader::GetType. Store the ASFParser we create in the
21096           class instance, so that the pipeline can get it. No need to write
21097           the header packet to the stream anymore.
21098         * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
21099           calculation of buffering progress to take into account that the
21100           currently available pts might be before the last played pts.
21101         * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
21102           callbacks anymore.
21103         * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
21104           argument and access the internal mms downloader on that Downloader
21105           to get the asf parser. Remove Read/Seek support from
21106           MemoryQueueSource, and just add a Pop method which returns a
21107           MemorySource for the next packet in the queue. Also add support to
21108           return all the packets in the queue as an array so that the
21109           ASFParser can easily determine the last pts available.
21110         * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
21111           g_mutex. Also make TickCall take a ref to the data parameter until
21112           the tick call has been made. This also ensures that the data
21113           parameter gets unreffed correctly when the tick call is never made
21114           (such as when we skip calls due to the TimeManager getting shut
21115           down).
21116         * dependencyobject.cpp: Don't ref in AddTickCall anymore.
21118 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21120         * playlist.cpp: Fix warning.
21122 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
21124         * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
21125         of horiAdvance since the later is rounded to an integer. FixMS
21126         DRT#45 and get better results (less differences) on many font
21127         related tests.
21129 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21131         * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
21133 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
21135         * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
21136         instead of doing it's own second to third order calculation.
21138 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21140         * mplayer.cpp: Don't store target pts from audio thread if we're paused
21141           (audio thread might not have gotten the pause request yet).
21143 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21145         * pipeline.cpp: Don't Signal more than once. I have no idea why the
21146           waiting thread doesn't wake up though.
21147         * mplayer.cpp: Comment out a printf, and always break the play loop
21148           when we're doing rw access.
21150 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
21152         * geometry.cpp|h: Remove useless code for computing bounds on
21153         PathFigure (now all handled at PathGeometry level).
21155 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21157         * mplayer.cpp: Fix a couple of leaks.
21159 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21161         * pipeline.cpp: There's no need to call AudioPlayer::Initialize
21162           anymore.
21163         * runtime.cpp, runtime.h: Added
21164           RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
21165         * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
21166           addition to the already supported MMAP access mode for alsa. This
21167           also required a major refactoring to only call alsa on the audio
21168           thread due to buggy pulseaudio hanging us (and the rest of the
21169           machine) otherwise.
21171 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
21173         * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
21174         inside each type (and out of the general case).
21176 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21178         * dependencyobject.cpp: Fix leak.
21180 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21182         * debug.cpp: Make valgrind happy.
21184 2008-07-09  Geoff Norton  <gnorton@novell.com>
21186         * media.cpp: Ensure that we clear our old loader when we set
21187         a new source.
21189 2008-07-09  Fernando Herrera  <fherrera@novell.com>
21191         * pipeline.cpp: Always set MemoryQueueSource element's size
21192         based to offset+n even for live sources.
21194 2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
21196         Fixes for bug #406934
21198         * text.cpp (Glyphs::SetSurface): Override so that we can start
21199         downloading the font as soon as the element gets (re)attached.
21200         (Glyphs::OnPropertyChanged): If we aren't attached, set
21201         uri_changed to true so that when we are (re)attached, we can start
21202         the download.
21204         * media.cpp (MediaBase::MediaBase): Init new state variable
21205         'source_changed' to false.
21206         (MediaBase::SetSurface): If source_changed and we are being
21207         attached to a surface, initiate a download.
21208         (MediaBase::SetSource): Set source_changed to false.
21209         (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
21210         our subclasses.
21211         (MediaElement::OnPropertyChanged): Don't handle SourceProperty
21212         changes anymore, let MediaBase do that for us.
21213         (Image::OnPropertyChanged): Same.
21215 2008-07-09  Geoff Norton  <gnorton@novell.com>
21217         * mms-downloader.cpp: Remove the guard we had against copying
21218         random memory and provide the correct amount of data to the 
21219         pipeline from each packet.
21221 2008-07-09  Geoff Norton  <gnorton@novell.com>
21222         
21223         * downloader.(cpp|h): NotifyFinished is now the finished
21224         event.  The filename will be set (if available) in SetFilename.
21225         * media.(cpp|h): Change to progressivly loading the image
21226         where available (fixes popfly).  We still fallback to file loading
21227         for the JS downloader case for now.
21229 2008-07-09  Larry Ewing  <lewing@novell.com>
21231         * runtime.cpp (Surface::motion_notify_callback): don't call
21232         get_pointer when in windowless mode, I don't think we can trust
21233         the results.
21235         * runtime.h (class Surface): make widget public so that we can
21236         peek at it in windowless mode.
21238 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
21240         * xaml.cpp: Always do a move after closing a path. Fix DRT test
21241         #138 (even if it was passing too!) for a bad (extra) arc.
21243 2008-07-08  Larry Ewing  <lewing@novell.com>
21245         * runtime.cpp, runtime.h: remove a bunch of code rot relating to
21246         temporary cairo surfaces that is no longer used.
21248 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
21250         * shape.cpp: Consider PenLineCap when computing bounds using
21251         cairo. Fix (even if it was passing) some corners in DRT test #7
21253 2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
21255         * xaml.h: Reorganized a bit.
21257 2008-07-07  Chris Toshok  <toshok@ximian.com>
21259         * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
21260         list if they lack a visual parent (and aren't the toplevel.)
21261         Fixes bug #406935.
21263 2008-07-07  Larry Ewing  <lewing@novell.com>
21265         * shape.cpp (Rectangle::BuildPath): handle some special case
21266         degenerates slightly differently.
21268         Fixes most of test-shape-rectangle-matrix.xaml.
21270 2008-07-07  Larry Ewing  <lewing@novell.com>
21272         * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
21273         degenerates in drawing, use the workaround there too.
21275         Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
21277 2008-07-03  Larry Ewing  <lewing@novell.com>
21279         * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
21280         rectangle geometry computation.  It matches in the sl
21281         implementation now.
21283         * shape.cpp: simplify rectangle and ellipse drawing and bounds so
21284         that they match the sl implementation and deal with degenerate
21285         cases better.  Try to avoid setting up a clip rectangle when it
21286         isn't needed.
21288 2008-07-07  Chris Toshok  <toshok@ximian.com>
21290         [ fixes the media element not showing up in flowers-for-you, bug
21291         #382490. ]
21292         * media.h, media.cpp: move Image::use_img_{width,height} and
21293         Image::updating into MediaBase and rename then
21294         use_media_{width,height} and updating_size_from_media.
21295         (MediaElement::OnPropertyChanged) duplicate the
21296         WidthProperty/HeightProperty stuff here (c&p from
21297         Image::OnPropertyChanged - this should probably just be refactored
21298         to MediaBase.  will do this later).
21299         (MediaBase::ComputeBounds): we don't need the subclass
21300         ComputeBounds methods.  Just put it here, as they share the same
21301         behavior.
21302         (MediaElement::SetMedia): remove the call to ComputeBounds here,
21303         since the new block of use_media_{width,height} checks will call
21304         UpdateBounds if they need to.
21305         
21306 2008-07-07  Fernando Herrera  <fherrera@novell.com>
21308         * media.cpp:
21309         * pipeline.cpp:
21310         * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
21311         we don't wait for new packets when the downloader has finished.
21312         Also calculate size based on offset + n for mms streams, so the
21313         ASFReader can check Eof based on positions.
21315 2008-07-05  Chris Toshok  <toshok@ximian.com>
21317         * dirty.cpp: remove the down_dirty_node_succ and
21318         up_dirty_node_pred code from here.  it arguably helped speed up
21319         insertions into the dirty lists, but at the cost of lots of
21320         dangling pointers.  we always walk up the tree looking for a
21321         down/up node.  works, and is much simpler.  and fixes bug #362561.
21323         * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
21324         up_dirty_node_pred code.
21325         
21326 2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
21328         * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
21329         when the atchname is invalid.
21331 2008-07-04  Chris Toshok  <toshok@ximian.com>
21333         * runtime.cpp (Surface::EmitEventOnList): don't leak the event
21334         args here.
21336 2008-07-03  Chris Toshok  <toshok@ximian.com>
21338         * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
21339         values need to be initialized in the ctors, not in animation_init.
21341 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
21343         * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
21344         since they are needed for stretching.
21346 2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
21348         * text.cpp (TextBlock::Render): Check to see if we need to
21349         calculate layout before painting.
21351 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
21353         * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
21354         Also remove the closing point since it's not needed (but that was
21355         not the problem, just a small memory saving).
21356         [Re-fix bug #391684]
21358 2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
21360         * text.h (TextBlock::GetBoundingWidth/Height): Use
21361         GetValueNoDefault() so we don't get 0.0 for the width/height if
21362         unset.
21364         Fixes for bug #404858
21366         * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
21368         * layout.cpp: Don't keep track of bbox_width and height anymore,
21369         it was never actually set to anything other than
21370         actual_width/height anyway.
21372         * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
21373         bounding box around the text (this is to aid in debugging text
21374         which may have a transform applied to it).
21376         * text.h (class TextBlock): Removed bbox_width and
21377         bbox_height. These were never anything other than
21378         actual_width/height respectively anyway.
21379         (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
21380         if set, else the ActualWidth.
21381         (TextBlock::GetBoundingHeight): Same.
21383 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21385         * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
21386         since their callers already do this. Simplify a bit Shape::
21387         InsideObject to check ret only if a Clip is present (instead of
21388         always checking it).
21390 2008-07-02  Chris Toshok  <toshok@ximian.com>
21392         * runtime.h, runtime.cpp: get rid of the cursor_func,
21393         invalidate_func, render_func stuff.  Instead use 3 virtual
21394         methods: SetCursor(GdkCursor*), Invalidate(Rect), and
21395         ProcessUpdates().  That way the plugin can instantiate a
21396         WindowlessSurface which overrides those methods instead of having
21397         the stupid callback mechanism we had.
21399 2008-07-02  Chris Toshok  <toshok@ximian.com>
21401         * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
21402         override the behavior.
21404 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21406         * moon-path.c: Revert ordering change I made in r105586 to fix
21407         a clipping issue (fillrule bug) as this breaks stroke dash (which
21408         confirm the original behaviour was the correct one).
21409         [Fix most of #404858]
21411 2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
21413         Fixes for bug #405514.
21415         * text.cpp (TextBlock::Layout): If the Text property is empty,
21416         default the actualHeight to the font's height.
21417         (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
21418         property changes, we need to set dirty to true (in most cases) so
21419         that the actual width/height values are recalculated.
21421 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21423         * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
21424         this change Polyline and Polygon to use Cairo instead of (faster
21425         but less acurate) custom code. In reality PathGeometry (PML) is 
21426         much more used than those Poly[line|gon] and (upcoming) caching 
21427         negate much of the impact.
21428         * geometry.cpp: Use the more precise (and surviving) 
21429         calc_line_bounds function that accept PenLineCap.
21431 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21433         * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
21434         chanegs between null and an actual brush (in either direction),
21435         invalidate the cached path because the shape may need to
21436         recalculate the stroke offsets.
21438 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21440         * xaml.cpp: Move reading the first point of C|Q beziers into the 
21441         loop. Fix quite a few misrendering for http://xmldocs.net/ball
21442         [Partial fix for #404858]
21444 2008-06-30  Chris Toshok  <toshok@ximian.com>
21446         * dirty.cpp: add all the ordering smarts to keep the two dirty
21447         lists partially sorted.  hopefully this won't be a huge
21448         performance hit.
21450         * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
21451         pointer for the down dirty list, and a "pred" for the up dirty
21452         list.
21454 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21456         * list.cpp (List::InsertBefore): Handle a NULL @before.
21458 2008-06-30  Geoff Norton  <gnorton@novell.com>
21460         * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
21461         more sane while we determine how to fix this properly.
21463 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21465         * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
21466         it's not correct.
21467         (Ellipse::ComputeShapeBounds): Same.
21469 2008-06-30  Michael Dominic K.  <mdk@mdk.am>
21471         * animation.cpp: Make sure our default KeySplines parameters are correct
21472         to generate a linear dynamics curve as Silverlight. Fixes #404850.
21474 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21476         * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
21478 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21480         * pipeline.h:
21481         * pipeline.cpp: Implement the packet writer MemoryQueueSource.
21482         * asf/asf.h:
21483         * asf/asf.cpp: 
21484         * media.h:
21485         * media.cpp: Use MemoryQueueSource for all mms streams
21486         * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
21488 2008-06-29  Chris Toshok  <toshok@ximian.com>
21490         * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
21491         child changes, invalidate them here.
21493         * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
21494         subtree invalidate from the zindex processing here.
21496 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21498         * pipeline-ffmpeg.cpp: Add debug spew.
21499         * media.cpp: Remove debug spew.
21501 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21503         * media.cpp, media.h: Add streamed markers to the media element on the
21504           main thread.
21506 2008-06-28  Geoff Norton  <gnorton@novell.com>
21508         * downloader.h: The finished event raises a success condition now
21509         so that we can notify failure on unsuccessful downloads.
21511 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21513         * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
21514           has stored, now called by the MediaPlayer when seeking. Execute the
21515           'seeking complete' logic on the main thread (marshalling
21516           SeekCallback to the main thread). Always use the thread-safe
21517           AddTickCallSafe instead of AddTickCall, and override
21518           EventSurface::SetSurface to lock/unlock the required locks.
21519         * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
21520           has stored, now called by the MediaPlayer when seeking. Execute the
21521           'seeking complete' logic on the main thread (marshalling
21522           SeekCallback to the main thread), and set the previous_position on
21523           the MediaElement to the seeked-to position when the seek is
21524           finished. Always use the thread-safe AddTickCallSafe instead of
21525           AddTickCall, and override EventSurface::SetSurface to lock/unlock
21526           the required locks.
21527         * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
21528           thread-safe version (AddTickCallSafe) and don't do any locking in
21529           AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
21530           SetSurface can do the proper locking.
21531         * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
21532           comparing to/from pts, MediaPlayer will now set previous_position
21533           correctly when seeking. AdvanceFrame: only check markers if we
21534           advanced or if we're not seeking. SetSurface: add proper locking,
21535           and use AddTickCallSafe where appropiate.
21537 2008-06-27  Larry Ewing  <lewing@novell.com>
21539         * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
21540         affects the subtree as well.
21542 2008-06-27  Larry Ewing  <lewing@novell.com>
21544         * uielement.cpp (UIElement::OnPropertyChanged): on things that can
21545         potentially be trapped by the Invalidate visibility check we need
21546         to invalidate the whole subtree before we start processing the
21547         dirty lists to avoid ordering issues.
21549         Fixes test/xaml/assorted/rendering-glitches2.html.
21551 2008-06-27  Chris Toshok  <toshok@ximian.com>
21553         * panel.cpp (Panel::FrontToBack): add a special case for
21554         non-translucent (but NULL background) panels - we don't render
21555         them at all.
21557 2008-06-27  Larry Ewing  <lewing@novell.com>
21559         * panel.cpp (Panel::FrontToBack): treat opacity specially for
21560         panel since we need the right subtree render region in PreRender.
21562 2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
21564         * downloader.cpp (dummy_downloader_create_web_request): Return
21565         NULL to fix a compile warning about control reaching the end of a
21566         non-void function.
21568 2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
21570         * downloader.[h|cpp]: move browserrequest/response from the plugin
21571         as downloaderrequest/response.
21573 2008-06-26  Chris Toshok  <toshok@ximian.com>
21575         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
21576         the shape cache.
21578         * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
21579         condition that was keeping small surfaces from being cached, so
21580         bubblemark gets a win from this (from ~38 to 70+ fps on my
21581         laptop).
21582         (Shape::ShiftPosition): if we have a cached surface, set the
21583         device offset to mirror the new bounds x/y.
21585 2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21587         * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
21588           dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
21589           Change AddTickCall to take a TickCallHandler (EventObject*)
21590           function pointer and a EventObject * tick_data instead of untyped
21591           function pointer/tick_data.
21593 2008-06-26  Chris Toshok  <toshok@ximian.com>
21595         * dependencyobject.h,
21596         dependencyobject.cpp (DependencyProperty::DependencyProperty):
21597         convert the name to downcase prior to registering and prior to
21598         calling g_hash_table_lookup to remove the casecmp overhead from
21599         our key comparisons.  store the converted name in DP::hash_key.
21601         * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
21602         and strcase_hash.
21604         * type.cpp: strcase_equal -> g_strcasecmp.
21606         * playlist.cpp (PlaylistParser::OnStartElement): same.
21608 2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
21610         * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
21611         logic/compiler warning and at the same time simplified.
21613         * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
21614         thickness into consideration. Fixes bug #400657.
21615         (Ellipse::ComputeShapeBounds): Same.
21617 2008-06-26  Chris Toshok  <toshok@ximian.com>
21619         * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
21620         re-sort the children by zindex.
21622         * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
21624         * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
21625         here.  just add it to the dirty list.
21627         * transform.h, transform.cpp: move the OnSubPropertyChanged method
21628         to MatrixTransform, so we can notify our listeners with the right
21629         property.
21631 2008-06-26  Chris Toshok  <toshok@ximian.com>
21633         * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
21634         need this to deal with sub-dependencyobjects of transforms (in
21635         this case, MatrixTransform's Matrix object.)  when you set
21636         properties on these subobjects, we need to update the transform.
21638 2008-06-26  Chris Toshok  <toshok@ximian.com>
21640         * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
21641         think it used to be there and was removed by me in a flurry of
21642         propertychanged event fixing way back) to take care of brushes
21643         properly causing the uielement to invalidate when the Brush's
21644         transform/relativetransform changes.
21646 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
21648         * geometry.h: #ifdef out GeometryFlags until we start using it.
21649         * shape.cpp: Remove unused global variable.
21651 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21653         * mplayer.cpp: AudioFinished: Check if we still have audio when the
21654           callback is reached. Fixes test-double-stop.html.
21656 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21658         * mplayer.cpp: When calculating start_time take into account current
21659           position. Fixes test-video-only-seek.html (and fox seeking without
21660           audio).
21662 2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
21664         * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
21665         uint comparisons.
21667 2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
21669         * geometry.cpp: Cache bounds, both logical and "physical" for
21670         PathFigure. This reduce the number of time we need to call 
21671         cairo_[path|stroke|fill]_extents functions and speed up many
21672         sites.
21673         * geometry.h: Add stuff needed for geometry.cpp changes.
21674         * xaml.cpp: Change geometry_from_str to directly create a 
21675         moon_path and avoid the PathFigure[Collection] DO. This match
21676         how Silverlight handle Path Markup Language (PML) and reduce
21677         memory requirements when huge PML are used.
21679 2008-06-24  Chris Toshok  <toshok@ximian.com>
21681         * shape.cpp (calc_offsets): we don't want to divide by the sin,
21682         because as angle approaches either 0, PI, or PI/2, the sin will
21683         approach 0, and therefore the deltas will grow very, very large.
21684         Turns out multiplying is what we want.
21686 2008-06-24  Larry Ewing  <lewing@novell.com>
21688         * runtime.cpp (Surface::Resize): set the width and height properly
21689         in the windowless case, let the widget resize logic handle it
21690         otherwise.
21691         (Surface:render_cb): don't process dirty elements if we are in a
21692         zombie state, just clear the dirty lists and move on.  Fixes a
21693         crash we were seeing when calling ForceRender on a zombie plugin.
21695 2008-06-24  Chris Toshok  <toshok@ximian.com>
21697         * runtime.cpp: in the switch from function pointer to integer in
21698         the HandleMouseEvent stuff, I didn't catch that C++ apparently
21699         doesn't flag NULL as different from 0.  This was causing the
21700         "HandleMouseEvent (NULL" to become effectively become
21701         "HandleMouseEvent (UIElement::DestroyedEvent" which of course
21702         breaks all sorts of things.  In bug 401884 it was causing the
21703         namescope to drop the named item from its hashtable, causing the
21704         tattoo needle to not move vertically.
21706 2008-06-23  Chris Toshok  <toshok@ximian.com>
21708         * uielement.cpp (UIElement::PreRender): comment from the code is
21709         changelog-worthy:
21710         
21711         we need this check because ::PreRender can (and will) be called
21712         for elements with empty regions.
21713         
21714         The region passed in here is the redraw region intersected with
21715         the render bounds of a given element.  For Panels with no
21716         width/height specified in the xaml, this region will be
21717         empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
21718         calling node if either the panel background or any of the children
21719         intersect the redraw region.)  We can't clip to the empty region,
21720         obviously, as it will keep all descendents from drawing to the
21721         screen.
21723 2008-06-23  Chris Toshok  <toshok@ximian.com>
21725         * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
21726         the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
21727         other, more specialized bounds that also need updating.
21729         * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
21730         to UIElement::ShiftPosition and also update bounds_with_children.
21732         * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
21733         chain up to Canvas::ShiftPosition, and also update render_bounds.
21735 2008-06-23  Chris Toshok  <toshok@ximian.com>
21737         * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
21738         between UpdatePosition and UpdateTransform according to the
21739         updatepos=yes/no override.
21741         * runtime.h, runtime.cpp: add updatepos=yes/no override.
21742         
21743 2008-06-23  Michael Dominic K.  <mdk@mdk.am>
21745         * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
21747 2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21749         * media.cpp: Don't check markers if from > to, no markers will ever be
21750           found in that interval. Also detect forward seeks by checking the
21751           difference between from and to, if difference > 1s, behave as a
21752           seek (and don't emit markers in that interval). 
21753         * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
21755 2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
21757         * animation.h: Added "Property Accessor" comments and grouped the
21758         property accessors, etc.
21760         * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
21761         printf.
21762         (EventObject::AddTickCall): Same.
21764         * dependencyobject.h (EventObject::GetSurface): Don't amke this
21765         virtual, nothing overrides it currently.
21767 2008-06-20  Michael Dominic K.  <mdk@mdk.am>
21769         * animation.cpp:
21770         * animation.h:
21771         * clock.cpp:
21772         * clock.h: When detaching/reattaching to Surface execute a special
21773         handler on clocks that (in case of animation clocks) removes the update
21774         property handler. This fixes the (regressed some time ago)
21775         StoryboardEnterLeave semantics test.
21777 2008-06-19  Jackson Harper  <jackson@ximian.com>
21779         * animation.h: 
21780         * type-generated.cpp: Make sure the content property is set.
21782 2008-06-19  Larry Ewing  <lewing@novell.com>
21784         * uielement.cpp (UIElement::PreRender): work around what appears
21785         to be a bug in the ftb logic by not clipping to the render region.
21787         * clock.cpp (SystemTimeSource::Start): make the timer priority
21788         DEFAULT again since otherwise we can get into starvation
21789         situations.
21791         * uielement.cpp (UIElement::PreRender): don't save/restore around
21792         the clip changes, they restrict the group bounds and speed up
21793         opacity related masking substantially.  (See bubblemark).
21795 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
21797         * font.cpp (FontFace::GetExtents): Only set face pixel size if the
21798         requested size is not what we already have set.
21799         (FontFace::LoadGlyph): Same.
21800         (FontFace::Kerning): Need to set pixel sizes here or our kerning
21801         could be off.
21803 2008-06-19  Chris Toshok  <toshok@ximian.com>
21805         * canvas.cpp (Canvas::OnSubPropertyChanged): call
21806         ui->UpdatePosition instead of UpdateTransform.  Since
21807         UpdateTransform calls UpdateBounds, this should save us a
21808         sometimes costly (in the case of Shape's) trip through
21809         ComputeBounds.
21811         * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
21812         node) and ComputePosition (called from ProcessDownDirtyElements.)
21813         (UIElement::ComputePosition): Apply the inverse absolute transform
21814         to the bounds x/y, compute the new transform, then reapply it to
21815         the bounds x/y to compute our new position.
21816         (UIElement::UpdateTransform): clear the DirtyPosition flag.
21817         (UIElement::UpdatePosition): only add the DirtyPosition flag if
21818         the Dirty*Transform flags aren't already set.
21820         
21821         * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
21822         Clip, LocalClip, and Position (only Position is implemented).
21824         * dirty.h: clean up the enum some, and add 3 new passes (only one
21825         of which, DirtyPosition, is implemented).
21827 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
21829         * transform.cpp: Started adding property accessor methods.
21831         * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
21832         (Canvas::[G,S]etTop): Same.
21834         * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
21835         (UIElement::[G,S]etTop): Same.
21837 2008-06-19  Chris Toshok  <toshok@ximian.com>
21839         * rect.h: add Get{Top,Bottom}{Left,Right} methods.
21841         * point.h, point.cpp: add Transform method.
21843 2008-06-19  Michael Dominic K.  <mdk@mdk.am>
21845         * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
21846         keyframes specified the duration is 0, not Automatic. This fixes the 
21847         http://www.etonline.com/silverlight/grammys50/ website.
21849 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
21850         
21851         * geometry.cpp: Use the new moon-path functions for ArcSegment
21852         and QuadraticBezierSegment
21853         * moon-path.c: Change some validation to use g_return_if_fail
21855 2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
21857         * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
21858         SetLeft().
21860         * control.cpp (Control::GetTransformFor): Simplified.
21862         * uielement.cpp (UIElement::SetLeft): Added for setting
21863         Canvas.Left property.
21864         (UIElement::GetLeft): Same.
21865         (UIElement::SetTop): Same.
21866         (UIElement::GetTop): Same.
21868         * canvas.cpp (Canvas::GetTransformFor): Simplified.
21870 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
21872         * shape.cpp: When possible (i.e. if we won't change the bounds
21873         anyway) avoid the second pass inside Shape::ComputeStretchBounds.
21874         This reduce (but does not eliminate) a BIG bottleneck for SL
21875         applications with many path using stretch (e.g. SL world).
21877 2008-06-18  Geoff Norton  <gnorton@novell.com>
21879         * media.cpp: The state when Seeking should not be changed to Stopped.
21880         Fixes another test.
21882 2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
21884         Partial fix for bug #400657.
21886         * dependencyobject.cpp (DependencyObject::IsValueValid): If the
21887         value is a null dependency object, don't check that the types
21888         match - it doesn't matter.
21890         * color.cpp (color_to_string): New convenience utility function to
21891         aid in debugging. Returns a pointer to a static string buffer, so
21892         be careful...
21894 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21896         * playlist.cpp, playlist.h: Only unref/null out the media in
21897           PlaylistEntry::Stop if we're a playlist and not if we're a single
21898           file.
21900 2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
21902         * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
21903         can be reused without a PathFigure-derived instance. Refactor
21904         code to expand/realloc paths to reduce duplication.
21906 2008-06-16  Chris Toshok  <toshok@ximian.com>
21908         * uielement.cpp (UIElement::OnPropertyChanged): call
21909         Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
21910         of FullInvalidate.
21911         (UIElement::OnSubPropertyChanged): same.
21913 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21915         * playlist.cpp: When Merging items only merge duration if the source
21916           has duration.
21917         * media.cpp: MediaElement::MediaOpened: when setting the media on the
21918           current item in the playlist, make sure we set the media on a
21919           PlaylistEntry, not on a (nested) Playlist.
21921 2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
21923         * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
21924         g_error() with g_warning(). There's really nothing else we can do
21925         here...
21926         (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
21927         allocating it again? Maybe some resources have been released since
21928         the ctor was called?
21930         * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
21931         g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
21933         * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
21934         g_warning() and return fail.
21936 2008-06-16  Michael Dominic K.  <mdk@mdk.am>
21937         
21938         * clock.cpp: Don't do the ExtraRepeat action when seeking.
21940 2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21942         * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
21943           method.
21944         * playlist.cpp: When we stop, clear out our media. This fixes an issue
21945           where we didn't correctly download a file if it was stopped after
21946           it was opened, but before fully downloaded, and then restarted.
21948 2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
21950         * dependencyobject.cpp (include): stdlib.h for strtol()
21952         Fix for jumping to the last page in PageTurn.
21954         * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
21955         UpdateTotalRenderVisibility() when the clip changes.
21957 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
21959         * animation.cpp:
21960         * moon-curves.c:
21961         * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
21963 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
21965         * Makefile.am:
21966         * animation.cpp:
21967         * animation.h:
21968         * moon-curves.c:
21969         * moon-curves.h: First version of the new algho for calculating the "y
21970         at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
21971         AnimationMatrix2 test.
21973 2008-06-12  Jackson Harper  <jackson@ximian.com>
21975         * xaml.cpp: Remove some cruft.
21976         - Rename Custom to Managed
21977         - We don't need element maps for the namespaces anymore
21978         - Deploy can go into the default list of namespaces.
21980 2008-06-12  Fernando Herrera  <fherrera@novell.com>
21982         * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
21983         terminated strings. Also keep any uri paramson the mms Ref.
21985 2008-06-12  Jackson Harper  <jackson@ximian.com>
21987         * xaml.cpp: Use the new stuff for creating wrapped types.
21988         - make XamlElementInstance pure virtual.
21990 2008-06-12  Jackson Harper  <jackson@ximian.com>
21992         * xaml.cpp: Clean up API for creating wrapped dependency objects.
21994 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21996         * type.cpp: Fix type verification to not check 2.0 types for 1.0
21997           builds.
21999 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22001         * media.cpp, media.h: Don't AutoPlay playlists which have already been
22002           autoplayed. Make Play/Pause/Stop/Seek async.
22003         * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
22005 2008-06-12  Chris Toshok  <toshok@ximian.com>
22007         * control.cpp, control.h, deployment.h, frameworkelement.h,
22008         grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
22009         uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
22010         can't use SL_2_0 in most places in headers (or rather, shouldn't).
22011         It might be a good idea to remove all references to it, but this
22012         at least gets the ms-tests running and passing again --with-mono.
22013         Switch to using SL_2_0 around the #includes in the .cpp files, and
22014         in value.h/type.h just include the 2.0 types.
22016         * usercontrol.h, usercontrol.cpp: split out the code from
22017         control.h, control.cpp here.
22019         * Makefile.am: add usercontrol.[h,cpp]
22021         * typegen/typegen.cs: fix up the header emission.
22023 2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
22025         * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
22026         ComputeBounds to avoid creating/destroying a new cairo context for
22027         each figure (it's now shared). Refactor PathFigure::Build not to scan
22028         the path list twice and rely on moon-path automatic size increase.
22029         Also avoid cairo_fill_extents if the path can't be filled or no fill
22030         brush is present.
22032 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22034         * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
22035           can't get a surface, nor if the surface is a zombie.
22036         * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
22037           return NULL now, add a null check.
22039 2008-06-11  Jackson Harper  <jackson@ximian.com>
22041         * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
22042         Instances to have a kind (they can access their kind from their
22043         info).
22045 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22047         * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
22048         methods (since Shape::Draw already does it) and remove
22049         cairo_set_fill_rule (since Shape::Fill does it).
22051 2008-06-11  Jackson Harper  <jackson@ximian.com>
22053         * xaml.cpp: Clean up the namespace map when destroying the parser.
22055 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22057         * geometry.h: Fix GeometryGround::ComputeBounds so it does
22058         not always returns 0,0,0,0 (from Geometry).
22060 2008-06-11  Geoff Norton <gnorton@novell.com>
22062         * downloader.cpp: Only Abort if we have a surface.
22063         * runtime.cpp: Detach the downloaders when we zombify.
22065 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22067         * moon-path.c: Reorder ellipse points so the fill rule can be 
22068         applied correcly (e.g. filling or clipping).
22070 2008-06-11  Michael Dominic K.  <mdk@mdk.am>
22072         * clock.cpp: Fixing seeking on nested storyboards. Fixes
22073         seek-test-nested-storyboard.xaml in assorted and one more
22074         AnimationMatrix2 block. Now only one left to fix...
22076 2008-06-10  Geoff Norton  <gnorton@novell.com>
22078         * mms-downloader.cpp: Reset our internal state after seeking so
22079         we can resume the stream in the right place.
22081 2008-06-10  Geoff Norton  <gnorton@novell.com>
22083         * mms-downlodaer.cpp: Remove some improperly commited debug code
22085 2008-06-10  Chris Toshok  <toshok@ximian.com>
22087         * control.h, control.cpp, deployment.h, uielement.h,
22088         uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
22089         runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
22090         now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
22091         specific types with the following typegen pragma: /*
22092         @SilverlightVersion="2" */ so that the generated files contain the
22093         proper ifdefs as well.
22095         * type-generated.cpp, type.h, value.h: resync with new ifdefs.
22097 2008-06-10  Jackson Harper  <jackson@ximian.com>
22099         * dependencyobject.cpp: Add todo for Name validation.
22101 2008-06-11  Fernando Herrera  <fherrera@novell.com>
22103         * xaml.cpp: Accept numbers and strings representing numbers as
22104         values for BOOL properties. Also accept "true" and "false" case
22105         variants.
22106         * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
22107         ending uris, so just check for "MSWMExt=.asf".
22108         Fixes hsn.tv, bug #362328.
22110 2008-06-10  Jackson Harper  <jackson@ximian.com>
22112         * xaml.cpp: ContentProperty should be on the ElementInfo not the
22113         ElementInstance, since you can only have one content property per
22114         a type.
22116 2008-06-10  Geoff Norton  <gnorton@novell.com>
22117         
22118         * mms-downloader.cpp: Fix some looping logic when seeking (partially
22119         fixed).  Fix a typo when enumerating the streams array to not exceed
22120         the bounds.
22122 2008-06-10  Jackson Harper  <jackson@ximian.com>
22124         * xaml.cpp: Remove default prefix override check.  This must have
22125         only been in one of the early versions of SL because I can't get
22126         SL to do it anymore.  This helps fix video page turn.
22128 2008-06-10  Jackson Harper  <jackson@ximian.com>
22130         * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
22132 2008-06-10  Chris Toshok  <toshok@ximian.com>
22134         * dependencyobject.h, dependencyobject.cpp: split the Emit()
22135         machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
22136         StartEmit returns a context object passed to the other two
22137         methods.
22139         * runtime.h, runtime.cpp: use the new
22140         EventObject::{Start,Do,Finish}Emit methods to make event bubbling
22141         more transactional - any changes made to the listener list for the
22142         event we're bubbling up, for any element in our input list, are
22143         delayed until after the event has propagated.  Fixes our test id
22144         191 (test-bubbling.html) as well as bug #351568.
22146 2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
22148         * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
22149         its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
22150         reuse it's physical bounds for logical instead of computing it 
22151         twice.
22153 2008-06-10  Michael Dominic K.  <mdk@mdk.am>
22155         * animation.cpp:
22156         * animation.h:
22157         * clock.cpp:
22158         * clock.h: Replacing CreateClock with AllocateClock implementation and
22159         making sure the latter is called for Storyboards. That fixes the nested
22160         storyboards inside other storyboards...
22161         test-animation-nested-storyboard.xaml and one step more for
22162         AnimationMatrix2.
22164 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22166         * dependencyobject.h: Another greppable comment.
22168 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22170         * dependencyobject.cpp: Add comment to assert which shows up while
22171           grepping.
22173 2008-06-06  Geoff Norton  <gnorton@novell.com>
22175         * file-downloader.h: Fix a bug between argument sending and class
22176         variables that was causing us to free and strdup the free'd pointer.
22178 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22180         * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
22181           GetResponseText.
22183 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22185         * src.mdp: Updated.
22187 2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
22189         * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
22190         members change order (like it did recently).
22191         (wrap_dependency_object): Get rid of unused variables.
22193         * media.cpp (Image): Made bools share a single int.
22195 2008-06-06  Jackson Harper  <jackson@ximian.com>
22197         * xaml.cpp: Use the Type system for looking up elements, make
22198         things a little more OOP so we can easily add some of the 2.0
22199         features.  Note:  This is going to break x:Code and deployment
22200         temporarily.
22201         
22202 2008-06-05  Geoff Norton  <gnorton@novell.com>
22204         * downloader.cpp, downloader.h: More refactoring to hide the zip related
22205         details in the FileDownloader.  NOTE: The exposure of the file downloader
22206         to the Text side is ugly and should be cleaned up.
22207         * text.cpp: Access obfuscated font details thru the FileDownloader API.
22208         * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
22209         the filename thru the downlodaer api.
22210         * downloader.cpp: No longer leak InternalDownloaders.
22212 2008-06-05  Geoff Norton <gnorton@novell.com>
22214         * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
22215         the $P packet pair, and implement and initial algorithm to do proper
22216         bandwidth stream selection.
22218 2008-06-05  Geoff Norton <gnorton@novell.com>
22219         
22220         * downloader.cpp:  Remove some left over unused variables, and the
22221         is_valid_mms_type inline.
22223 2008-06-05  Geoff Norton <gnorton@novell.com>
22225         * Makefile.am: Add file-downloader and mms-downloader to the build.
22226         * file-downloader.(cpp|h): This class is a implementation of the new
22227         InternalDownloader class utilized by the downloader to differentiate
22228         between MMS and regular requests.  We should move the zip logic here.
22229         * mms-downloader.(cpp|h): This class is the MMS implementation of the
22230         InternalDownloader class.
22231         * internal-downloader.h: Route callbacks from the plugin thru this class
22232         to their appropriate file (NPStream) / MMS based implementations.
22233         * downloader.cpp: Update the API to call the InternalDownloader based
22234         representation instead of large if (mms) branches.
22236 2008-06-05  Geoff Norton  <gnorton@novell.com>
22238         * downloader.cpp, downloader.h:  Initial implementation of MMS inside
22239         libmoon.  The API has been extended to register two additional callbacks
22240         to set HTTP headers, and the HTTP body.
22242 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
22244         * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
22245         --with-compatibility-bugs mode. It looks like the parsing is fine. The
22246         bug is now "implemented" in clock.cpp.
22248 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
22250         * clock.cpp: In ComputeNewTime when we're going over our duration time
22251         and we're AutoReversed, check actually how big the diff is cause it
22252         might be that we need to "wrap around self" and switch to forward time
22253         direction anyways (such is the case with seeking). 
22255         In other words, allow to seek into particular interation of
22256         RepeatBehavior="XXXx", not only the first one. Fixes one more
22257         AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
22259         This prolly needs a littlbe bit more work still, similiar mechanism
22260         needs to be present in DoRepeat etc.
22262 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
22264         * stylus.cpp: fixing a bug. stupid me.
22266 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
22268         * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
22269         ExtendTo (double, double) methods.
22271         * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
22272         intersection of bounds and StylusPointCollection::GetBounds in HitTest
22273         to avoid checking for stroke intersection in most of the cases. Speed
22274         up erasing in inkJournal.
22276 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22278         * clock.cpp: Interesting -- looks like in SL the timespan-based 
22279         RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
22280         0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
22281         Anyways, implementing this and fixing two more blocks in
22282         AnimationMatrix2.
22284 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22286         * clock.cpp: Slightly reworking the seek offsett calculations to include
22287         the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
22288         more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
22289         assorted test.
22291 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22293         * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
22294         test-seeking-speed-ratio.xaml from assorted tests and one more block in
22295         the AnimationMatrix2 test. 
22297 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22299         * control.cpp (user_control_new): %p does what %x was trying to do
22300         in this case, but without compile warnings :)
22302 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22304         Glyphs rendering optimization.
22306         * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
22307         instead of re-looping this logic again in Glyphs::Render().
22308         (Glyphs::Render): Just blit the path.
22310 2008-06-03  Chris Toshok  <toshok@ximian.com>
22312         * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
22313         a bunch and remove all the redundant checks.
22314         
22315         (DependencyObject::MergeTemporaryNameScopes): merge both DO and
22316         Collection versions into the same method to reduce code
22317         duplication.
22319         * dependencyobject.h: no need to provide multiple overloads for
22320         MergeTemporaryNameScopes.
22322 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22324         Text rendering optimization via reduction of font loading.
22326         * font.cpp (FontFace): A new abstraction for FT_Face which is
22327         meant to prevent Moonlight from ahving to load the same font face
22328         multiple times just because the FontSize attributes don't match.
22329         (TextFont): Greatly simplified this class by using FontFace.
22331 2008-06-02  Jackson Harper  <jackson@ximian.com>
22333         * xaml.cpp: Make sure we don't try to look up Content Properties
22334         on anything but elments.  Property elements are given the
22335         XamlElementInfo of their parent so GetContentProperty on a
22336         PROPERTY element will return the parent's content property.
22338 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22340         * clock.cpp: If we have duration-based RepeatBehavior set the
22341         repeat_count to 1 in bug-mode (--with-compatibility-bugs).
22343 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22344         
22345         * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
22346         even.
22348         * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
22349         RepeatBehavior=0:0:0.
22351 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22353         * clock.cpp: Even more timeline validation rules.
22355 2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
22357         * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
22358         by 64.0 since this makes it clear why we're doing it.
22360 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22362         * clock.cpp: Don't validate animations that have Duration of "00:00:00"
22363         and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
22364         test.
22366 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22368         * xaml.cpp: Adding a compatibility option
22369         (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
22370         RepeatBehavior bug.
22372 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22374         * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
22375         protection against the desync's coming from integers (TimeSpan) being
22376         multiplied by floating values (SpeedRatio). Better to be non-precise
22377         forward than backward.
22379 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22381         * clock.cpp: The initial ticking difference needs to be multiplied by
22382         the SpeedRatio as well. This fixes few timing desyncs. Fixes
22383         clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
22384         block from the AnimationMatrix2.
22386 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22387         
22388         * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
22389         you set an Image's Source property to an empty string (or null),
22390         it stops rendering the image.
22392 2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
22394         * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
22396 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22398         * layout.cpp|h (TextRun::IsUnderlined): Replacement for
22399         TextLayout::IsUnderline().
22400         (TextLayout::IsUnderline): Removed.
22402         * font.h (enum TextDecorations): Add a comment explaining that
22403         this is meant to be used as bit flags and not a normal
22404         enumeration.
22406 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22408         * font.h: Revert TextWrapping change as it regress DRT tests
22409         (it's possible that the value were right, but did not match
22410         the managed value used by Silverlight 1.1).
22412 2008-05-29  Jackson Harper  <jackson@ximian.com>
22414         * type.cpp: INVALID types don't have content properties.
22415         * dependencyobject.h: Content properties are stored on the Type so
22416         we don't need to store them here.
22417         * xaml.cpp: Get content properties from the Type system instead of
22418         the parser's internal type map.
22419         - We don't need to do any special handling in the start_element
22420         handler for content properties anymore.
22421         * control.cpp|h: We don't need to expose the content property
22422         anymore.
22423         - Mark the content property for controls.
22424         
22425 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22427         * font.h: Fix enum values for TextWrapping
22428         * layout.cpp: Fix regression (in earlier commit) for wrapping.
22430 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22432         * debug.cpp: Fix an invalid read issue found with valgrind.
22434 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22436         * layout.h|cpp: Handle invalid values for TextDecorations and
22437         TextWrapping like Silverlight does.
22439 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22441         * runtime.cpp: When setting the background color delete any previoys
22442           background color.
22444 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22446         * uielement.cpp: Fix minor leak.
22448 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22450         * src.mdp: Updated.
22452 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22454         * http-streaming.cpp: Handle quoted feature strings.
22456 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22458         * downloader.cpp: Null out request_position in the ctor.
22460 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22462         * clock.cpp: Reverting the change that invalidates the timelines which
22463         have 00:00:00 duration. It is actually supported by SL. 
22465 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22467         * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
22468         Multiply always instead of recursing down into properties.
22470 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22472         * animation.cpp: If "To" and "By" are not specified use the
22473         defaultOriginValue always instead of "start" (which might be "From").
22474         Fixes the test-animation-only-from.xaml and the green block in
22475         AnimationMatrix2.
22477 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22479         * clock.cpp: When Validating the timeline, if RepeatBehavior is
22480         incorrect make it 1.0 instead of marking the timeline as invalid.
22482 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22483         
22484         * downloader.cpp: Fix typo.
22486 2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
22488         * enums.c: Fix None value in style_simulations_map and remove
22489         unneeded one (they exists only in WPF but SL parser does not like
22490         them).
22491         * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
22492         supplied value are invalid. Add new constants specific to SL.
22493         * text.h: Add simulation_none. Share an integer between all bool
22494         flags.
22495         * text.cpp: Invalid values for StyleSimulation does not render
22496         the Glyphs.
22497         * runtime.cpp: Invalid MouseCursor values hides the cursor.
22499 2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
22501         Fixes the Legend (Space Invaders) demo without breaking
22502         storyboard_EnterLeaveSemantics.htm.
22504         * clock.cpp|h (Clock::Completed): New virtual method which gets
22505         called when a clock completes.
22506         (Clock::ComputeNewTime): If a clock completes (has no more
22507         repeats, etc) then call ::Complete().
22508         (ClockGroup::ClockGroup): Changed the name of emitted_complete to
22509         emit_completed which has also changed the meaning a bit.
22510         (ClockGroup::Begin): Updated.
22511         (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
22512         then emit the Completed event and reset emit_completed back to
22513         false so we don't re-emit.
22514         (ClockGroup::Completed): Set emit_completed to true.
22516 2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22518         * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
22519           DownloaderComplete only emit DownloadProgressChangedEvent if we
22520           have a surface.
22522 2008-05-27  Michael Dominic K.  <mdk@mdk.am>
22524         * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
22525         Silverlight 1.0/2.0 situation.
22527 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22529         * clock.cpp: Don't validate timelines that have specified duration of
22530         00:00:00. Fixes the test-animation-zero-duration test.xaml.
22532 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22534         * clock.cpp:
22535         * clock.h: When Validating the Timeline also make sure that the
22536         RepeatBehavior is correct, otherwise don't start the anim. Fixes the
22537         test-animation-zero-repeat-behavior test and brings us closer with
22538         AnimationMatrix2 test.
22540 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22542         * clock.cpp: When Validating TimelineGroup don't forget to call parent's
22543         base validation method.
22545 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22547         * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
22548         SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
22549         test-aniamtion-repeat-behavior.xaml test.
22551 2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22553         * src.mdp: Updated.
22555 2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
22557         * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
22558         cairo_save/cairo_restore since we don't use the context.
22560 2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
22562         * dependencyobject.[h|cpp]: merge namescopes on SetValue.
22564 2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
22566         * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
22568         * text.cpp (Glyphs::Layout): Reverted previous commit and go back
22569         to the magic math.
22570         (Glyphs::Render): Same.
22572 2008-05-22  Chris Toshok  <toshok@ximian.com>
22574         * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
22575         code.  Only include the +2 to each side if the outline color is
22576         non-transparent.
22577         (Stroke::AddStylusPointToBounds): same.
22578         (Stroke::OnPropertyChanged): new method.  we need to recompute the
22579         bounds if our DrawingAttributes change.
22580         (Stroke::OnSubPropertyChanged): same, if width/height/online-color
22581         of the drawing attributes change.
22583 2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
22585         * brush.cpp: Fix defaults when wrong values are being used for
22586         enumerations from Javascript.
22587         [Fix part of #340799]
22589 2008-05-22  Jackson Harper  <jackson@ximian.com>
22591         * dependencyobject.cpp: Only merge temp namescopes.
22593 2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22595         * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
22596           surrounding event emission with ref/unref, set a flag specifying
22597           that we're doing event emission, and catch unrefs which would cause
22598           object destruction replacing them with a delayed unref.
22600 2008-05-21  Chris Toshok  <toshok@ximian.com>
22602         * collection.cpp (Collection::Add): remove the check for AddToList
22603         returning -1.  It never will.  Also, call SetSurface() on the new
22604         child *before* we create the Collection::Node for it, so we can
22605         tell (in SetSurface) if it's being added individually to the
22606         surface, or as part of a subtree.  This is required to fix
22607         storyboard_EnterLeaveSemantics.
22609         * animation.cpp (Storyboard::SetSurface): resume the clock when
22610         we're reattached to the surface, but *only* if we're being added
22611         as part of a subtree (that is, we already have a logical parent
22612         when we hit this method.)
22614         * clock.cpp (Clock::Begin): revert the previous
22615         change (has_started needs to be initialized to false).  Required
22616         to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
22617         out another way to fix the site (or a better way that fixes one
22618         without breaking the other.)
22620 2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
22622         * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
22623         hard-coding the EM units ourselves.
22624         (Glyphs::Render): Same.
22626         * font.cpp (TextFont::PixelsPerEM): New convenience function.
22628         * clock.cpp (Clock::Begin): Init has_started to true. Fixes
22629         http://www.tek.co.jp/Legend
22631         * animation.cpp (Storyboard::storyboard_completed): Merged
22632         teardown_clockgroup() and invoke_completed() into a single
22633         callback. Also makes it so that we don't have to remove 2
22634         CompletedEvent handlers (which we were not doing properly afaict
22635         in Storyboard::Stop).
22636         (Storyboard::Stop): After unregistering the CompletedEvent handler
22637         and stopping the root_clock, tear down the clock group.
22639 2008-05-21  Larry Ewing  <lewing@novell.com>
22641         * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
22642         ellipses a little better.
22643         (Shape::ComputeStretchBounds): modify the needs_clip logic a
22644         little to catch the degenerate ellipse cases we were running into.
22646         Fixes test-shape-ellipse-stroke*.xaml.
22648 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22650         * clock.cpp: Include the offsett coming from the BeginTime in the
22651         seek_time calculations. Fixes seek-test-begin-time and
22652         seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
22654 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22656         * clock.cpp: Actually do set the seek_time before using it.
22658 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
22660         * clock.cpp: When seeking ClockGroup, don't seek children as weel
22661         (results in cumulative behavior).
22663 2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
22665         * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
22666         context since only the transform is changed (current point 
22667         location is not part of the context).
22669 2008-05-20  Larry Ewing  <lewing@novell.com>
22671         * runtime.cpp (Surface::motion_notify_callback): always return
22672         true in the windowed motion handler otherwise we something steals
22673         mouse events from us.
22675         Fixes most of MouseInput.htm
22677 2008-05-20  Michael Dominic K.  <mdk@mdk.am>
22679         * clock.cpp: Fixing a problem where timeline with BeginTime set do not
22680         respond at all to Seek. Brings us closer with AnimationMatrix2.
22682 2008-05-19  Jackson Harper  <jackson@ximian.com>
22684         * xaml.cpp: Only do the type wrapping if we are dealing with
22685         collection types, otherwise we just ignore the property decl.
22687 2008-05-19  Jackson Harper  <jackson@ximian.com>
22689         * xaml.cpp: When we wrap a property we need to ignore the property
22690         element so that the children get added to the wrapped object
22691         properly.
22692         * dependencyobject.cpp: We also need to merge the collection's
22693         namescope because collections can be created with their own temp
22694         namescope using createFromXaml.
22695         
22696 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22698         * animation.cpp:
22699         * animation.h:
22700         * clock.cpp:
22701         * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
22702         confusion.
22704 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22706         * animation.cpp:
22707         * animation.h: Adding an implementation for ExtraRepeatHandler to
22708         AnimationClock that fetches target value and sets it on
22709         AnimationStorage. Fixes clock37.xaml test.
22711 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22713         * animation.cpp:
22714         * animation.h: Adding helper methods to get target value out of the
22715         given AnimationTimeline. We're still missing implementations for
22716         keyframe-based anims. Coming soon.
22718 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22720         * animation.cpp:
22721         * animation.h: Adding two helper methods to AnimationStorage:
22722         GetStopValue (get's current base or (if set) stop value) and
22723         UpdatePropertyWithValue to manually force prop to a given state.
22725 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
22727         * clock.cpp:
22728         * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
22729         repeat. By default does nothing.
22731 2008-05-19  Jackson Harper  <jackson@ximian.com>
22733         * xaml.cpp: When createFromXaml ('<some property>...</property>')
22734         is called, we need to create and return an object that represents
22735         that property.  ie createFromXaml ('<Canvas.Triggers>...); should
22736         return a ResourceDictionary object.
22738 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22740         * downloader.cpp: Fix warnings.
22742 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22744         * clock.cpp: Added comment.
22746 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22748         * runtime.cpp: Destroy EventObject::objects_alive upon runtime
22749           shutdown.
22751 2008-05-16  Miguel de Icaza  <miguel@novell.com>
22753         * dependencyobject.h (DependencyObject::GetContentProperty):
22754         returns a DependencyProperty that is the target for the content of
22755         a XAML content assignment. 
22757         * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
22758         Class attribute as the object has already been created. 
22760         (start_element): Add support for the ContentPropertyAttribute on
22761         DependencyObjects to the XAML parser.       This is very primitive
22762         support at this point, and does not support collections, or type
22763         conversions as specified on the docs. 
22765         * control.cpp (Control::SetContent): Refactor setting the
22766         real_object into its own routine.     Currently takes a Surface
22767         parameter, not clear that this is even needed, but kept for
22768         compatibility with the old code. 
22770         (UserControl::OnPropertyChanged): Hook up setting the Content
22771         property.
22773         * runtime.cpp (Surface::Attach): Let the widget be UIElement.
22775 2008-05-16  Larry Ewing  <lewing@novell.com>
22777         * shape.cpp: draw ellipses with no width/height specified as the
22778         ms tests indicate.
22780         Fixes StretchAndShapes.xaml.
22782 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22784         * media.cpp: Abort the downloader when we emit MediaFailed, and always
22785           emit a DownloadProgressChangedEvent with 1.0 when we're finished
22786           downloading (we won't get any writes if the file has already been
22787           downloaded and mozilla just gives us the filename).
22789 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22791         * src.mdp: Updated.
22793 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22795         * downloader.cpp: Don't emit any events if we don't have a surface. Add
22796           warnings to Send(Internal) when we have no surface (the plugin is
22797           already checking for it, so if the warning is printed we're doing
22798           something else wrong).
22799         * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
22800           create, and when the toplevel canvas changes or the surface is
22801           destroyed clear the downloader's surface pointer.
22803 2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
22805         * downloader.cpp (Downloader::Abort): Set download progress to 0.
22807 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22809         * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
22810           NotifySize, mozilla calls NotifySize for every write.
22812 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22814         * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
22816 2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22818         * playlist.cpp: If we're stopping a playlist, reopen the first entry.
22819         * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
22820           so that Playlist can call them.
22822 2008-05-15  Larry Ewing  <lewing@novell.com>
22824         * runtime.cpp (Surface::button_press_callback): stop firefox from
22825         stealing our focus in the widget case by always returning true on
22826         button press events.  There may be a better way to handle this by
22827         only returning true if the press lands on and element but this at
22828         least improves the situation.
22830         Fixes FullScreenKey.htm.
22832 2008-05-15  Michael Dominic K.  <mdk@mdk.am>
22834         * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
22835         Filling state, this makes the idle optimization cover all the cases. Big
22836         perf boost expected.
22837         
22838 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
22840         Fix for tests/xaml/test-directory-in-zip.html
22842         * media.cpp (Image::Image): Initialize some new state variables to
22843         keep track of whether or not the FrameworkElement::Width and
22844         Height values are ever manually set.
22845         (Image::DownloaderComplete): Properly set the Width/Height
22846         property values based on whether a particular Width/Height have
22847         been requested. Use the image's native width/height if not.
22848         (Image::OnPropertyChanged): Listen for changes to Width/Height
22849         properties.
22851 2008-05-14  Larry Ewing  <lewing@novell.com>
22853         * src/uielement.cpp (UIElement::PostRender): clear any existing
22854         paths when rendering the bounds rectangle.
22856 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
22858         * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
22859         of the more complex GetValue API.
22861         * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
22862         error, return -1 (since this is an int32 return value, not bool).
22864 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22866         * media.cpp, media.h: Added MediaElement::IsLive, and move
22867           initialization of this field to before our MediaPlayer is opened.
22868         * mplayer.cpp, mplayer.h: For live sources the first frame might not
22869           come with pts = 0, so store that pts so that later we can correctly
22870           calculate how much we've actually played.
22872 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22874         * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
22875         * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
22876           and skip entries with zero duration.
22878 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22880         * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
22881           the read lock if don't have a surface or timemanager.
22883 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
22885         * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
22886         children) on DoRepeat (). Fixes a small regression in clock21.xaml
22887         introduced with last commit.
22889 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
22891         * clock.cpp:
22892         * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
22893         it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
22895 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22897         * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
22898           crashes when javascript removes the plugin in an eventhandler.
22900 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
22902         * media.cpp (MediaElement::DownloaderFailed): Make this more
22903         easily extensible.
22905 2008-05-13  Fernando Herrera  <fherrera@novell.com>
22907         * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
22909 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
22911         * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
22912         corruption of the source.* variables by creating local references
22913         to them and setting source.* to NULL before calling
22914         SetSourceInternal().
22916 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22918         * clock.cpp, clock.h: Remove InvokeOnMainThread.
22919         * dependencyobject.cpp, dependencyobject.h: EventObject: added
22920           AddTickCall. Requred when adding ticks from other than the 
22921           main thread.
22922         * downloader.cpp: Send: use a TimeManager to add the timeout.
22923         * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
22924           TimeManager::InvokeOnMainThread anymore, add the timeouts using a
22925           TimeManager instance.
22927 2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
22929         * list.cpp (List::List): Init length to 0.
22930         (List::Clear): Reset length to 0.
22931         (List::Append): length++
22932         (List::Prepend): length++
22933         (List::Insert): length++
22934         (List::InsertBefore): length++
22935         (List::Unlink): length--
22936         (List::Length): Fixed to be O(0) instead of O(n)
22938         * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
22939         instead of comparing List::Length() to 0.
22940         (Stroke::HitTest): Same.
22942 2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22944         * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
22945           prevents us from emitting the event again as a consequence of what
22946           any of the event handlers do.
22948 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22950         * animation.cpp:
22951         * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
22953 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22955         * animation.cpp:
22956         * animation.h:
22957         * dependencyobject.cpp:
22958         * dependencyobject.h: Float the AnimationStorage only when it's the
22959         current storage.
22961 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
22963         * animation.cpp:
22964         * animation.h: Introduce floating state for animation storage that has
22965         it's clock destroyed but it hasn't been stopped before. We need to keep the
22966         animation storage (reffed from the DependencyProperty hash) around to be
22967         able to get proper value for the next (continous) Storyboard on same
22968         property. Fixes #383879 and #375275.
22970 2008-05-09  Geoff Norton <gnorton@novell.com>
22972         * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
22973         ensure that we select the stream with the highest available bit
22974         rate, opposed to the first stream that we come across.
22976 2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
22978         * dependencyobject.cpp (DependencyObject::FindName): Don't need
22979         nested if/elses.
22981         * namescope.cpp (NameScope::FindName): Simplify.
22983 2008-05-08  Larry Ewing  <lewing@novell.com>
22985         * shape.cpp: silence some warnings.
22987 2008-05-08  Larry Ewing  <lewing@novell.com>
22989         * shape.h: remove ClipOnWidthAndHeight method, replace with
22990         needs_clip variable.
22991         
22992         * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
22993         the actual size of the object before and after the stretch and the
22994         stretch flags.  
22996         Speeds up Sprawl and a lot of other applications that use stretch
22997         extensively.
22999 2008-05-08  Larry Ewing  <lewing@novell.com>
23001         * runtime.cpp (Surface::expose_to_drawable): fill the background
23002         instead of painting and don't create the clip until the rendering
23004 2008-05-08  Miguel de Icaza  <miguel@novell.com>
23006         * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
23007         existing DependencyObject with the contents of a XAML string.  
23009         Needed for Silverlight 2.0 support, for the new model:
23010         create object then do LoadComponent on it.
23012 2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
23014         * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
23015         notation.
23017 2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
23019         * font.cpp: Removed old layout code.
23020         (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
23021         conversion macros to make understanding the code easier. Also,
23022         added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
23023         of broken fixed-width CJK fonts.
23025         * clock.cpp (TimeManager::Stop): Added for convenience.
23026         (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
23027         can make sure it is init'd properly via SetTimerFrequency() before
23028         Start()ing.
23030         * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
23031         not it's source's Start(). We need things like frequency to be
23032         setup and other values to be initialized properly.
23033         (Surface::Attach): After calling canvas->OnLoaded(), check that we
23034         are not zombied - if we are, return.
23036 2008-05-07  Larry Ewing  <lewing@novell.com>
23038         * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
23039         objects that the surface is undead.
23041 2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
23043         * animation.cpp (animation_shutdown): Renamed from
23044         animation_destroy().
23046         * text.cpp (text_shutdown): Renamed from text_destroy().
23048         * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
23049         include glib.h and use g_timeout_add() instead.
23050         (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
23051         not -1 (the timeout ids are uint, not int).
23052         (SystemTimeSource::SetTimerFrequency): Updated.
23053         (SystemTimeSource::Start): Updated.
23054         (SystemTimeSource::Stop): Updated.
23056         * list.cpp (List::Remove): Don't need to search for the node, we
23057         already have a pointer to it.
23059 2008-05-07  Larry Ewing  <lewing@novell.com>
23061         * runtime.cpp (Surface::Resize): handle a resize in windowless mode
23062         gracefully.
23064         Fixes part of windowless resizing.
23065         
23066 2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23068         * media.cpp: Handle the rtsp protocol too.
23069         * playlist.cpp, playlist.h: Store base and source_name as Uris.
23070           Implement GetFullSourceName better, and do some uri validation.
23071         * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
23072           disables canonicalization of trailing directory separators since
23073           asx playlists may treat urls differently depending on the presence
23074           or absence of any trailing directory separators. Added Clone ().
23076 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
23078         * animation.cpp:
23079         * animation.h: When attaching new animation storage and previous storage
23080         exist, flag it as non-resetable (meaning that the storage will never
23081         reset animated property to base/stop value). This fixes the
23082         storyboard-stopping-two.html test.
23084 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
23086         * dependencyobject.cpp:
23087         * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
23088         returns the previously attached AnimationStorage.
23090         * animation.cpp:
23091         * animation.h: When attaching new animation storage try to inherit the
23092         resetValue from the previously attached storage. Reset value is the
23093         value that we reset to when storyboard is stopped (originally it always
23094         used to be the base value of the current AnimationStorage). 
23096         This replicates the bahavior of SL where starting a new (second)
23097         storyboard on a property renders the prev storyboard useless
23098         (non updating the prop) but keeps it's "starting value" for storyboard
23099         reset. In other words we can say that starting a new storyboard on a
23100         prop makes this new storyboard a "continuation" of the prev storyboard.
23102 2008-05-05  Larry Ewing  <lewing@novell.com>
23104         * runtime.cpp (Surface::render_cb): only call ForceRender if we
23105         dirtied something.
23107 2008-05-05  Larry Ewing  <lewing@novell.com>
23109         * runtime.cpp: update the (almost unused) frame count where it can
23110         get hit in windowless.  Clear existing paths before rendering the
23111         expose box.
23113         Minor cleanups to help with debugging the expose regions.
23115 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
23117         * clock.cpp (TimeManager::Shutdown): Renamed from
23118         TimeManager::Stop() and also updated to remove all registered
23119         timeouts.
23121         * runtime.cpp (Surface): We no longer keep track of signal ids, we
23122         simply remove all signals on the widgets with 'this' as the user
23123         data.
23125         * clock.cpp (TimeManager::Stop): Added. New method to stop the
23126         time manager.
23128         * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
23129         emission of timeout events.
23131 2008-05-05  Michael Dominic K.  <mdk@mdk.am>
23133         * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
23134         other stuff.
23136 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23138         * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
23139           playing playlists, we only emit MediaEnded if we're playing the
23140           last entry in the playlist. Call Playlist::OnEntryEnded manually
23141           instead of letting the playlist rely on the MediaEnded event, since
23142           the MediaEnded event isn't raised for all entries. Playlist: Added
23143           IsCurrentEntryLastEntry.
23145 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23147         * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
23148           until the pipeline got all the data it was waiting for.
23150 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23152         * media.cpp, media.h: Add an EmitMediaOpened method and emit
23153           MediaOpened somewhat more aggressively, but only once.
23155 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
23157         * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
23158         this->height for the brush size - fixes TextTransforms.xaml once
23159         again.
23161 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23163         * media.cpp: Don't emit any BufferingProgressChanged events in
23164           OnPropertyChanged.
23166 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23168         * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
23169           ffmpeg won't decode any wma audio.
23171 2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
23173         * shape.cpp: draw the line caps with the stretch_transform matrix.
23174         Finetune the stretch computation again.
23176 2008-05-05  Miguel de Icaza  <miguel@novell.com>
23178         * src/control.cpp: Add a skeleton UserControl, to get a bit
23179         further on the loading of a Silverlight 2 application. 
23181         See the TODO, there are still many limitations.
23183 2008-05-04  Larry Ewing  <lewing@novell.com>
23185         * runtime.cpp: restrict invalidations to the active windowless
23186         bounds.
23188         Fixes massive drawing issues on http://my.liveatedu.com/ where
23189         were creating invalidations with a negative coords.
23191 2008-05-04  Miguel de Icaza  <miguel@novell.com>
23193         * xap.cpp: Expose xap_unpack, include when Mono runtime is
23194         included. 
23196         * deployment.cpp: Small fixups.
23198         * xaml.cpp (deploy_namespace): New namespace used to parse
23199         AppManifest.xaml files that start with a <Deployment> tag on the
23200         http://schemas.microsoft.com/client/2007/deployment namespace. 
23201         
23202         (xaml_init): Register the deployment classes.
23204         * type.cpp (type_is_dependency_object): Add new helper method
23205         to determine if a Kind is a DEPENDENCYOBJECT, the list is no
23206         longer separated in value-types and DependencyObjects, so its not
23207         possible to do a fast lookup from managed code. 
23209 2008-05-04  Chris Toshok  <toshok@ximian.com>
23211         [ fixes #361906, while simultaneously keeping halo3,
23212         ControlLife.htm, and ControlState.htm happy ]
23213         
23214         * runtime.h, runtime.cpp, type-generated.cpp: move back to the
23215         LoadEvent instead of the broken Attaching event, reverting
23216         r102288.
23218         * panel.h, panel.cpp: add a "emitting_loaded" guard around the
23219         body of OnLoaded so we don't end up re-entering this method.
23220         Also, revert r102196 as the ordering of parent-to-child was
23221         correct originally, there were just other ordering constraints we
23222         weren't handling.
23224         * control.h, control.cpp: same.
23226         * dependencyobject.h, dependencyobject.cpp: add a count field to
23227         EventClosure so we can support the "only_unemitted" arg in
23228         EventObject::Emit.  The idea is that the Loaded event seems to
23229         only be emitted on those events that haven't yet been emitted.
23230         This may also be implemented just by making Loaded event handlers
23231         one-shot (removing themselves after they fire), but this is easy
23232         enough and works.  The only event with this odd behavior (that I
23233         know of) is Loaded.
23235         * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
23236         flag (which may actually be useless now, given the Emit change)
23237         but don't emit Loaded only when the flag is unset.
23239         * collection.cpp: remove the last bit of closure access from
23240         VisualCollection.  The OnLoaded call now happens in
23241         Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
23242         spots in VisualCollection.
23244 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
23246         * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
23247         [Complete the fix for #383870]
23249 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
23251         * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
23252         glyphs into account when calculating extents. Fix usage of OriginX
23253         and OriginY as far as extents goes.
23254         (Glyphs::GetOriginPoint): Don't leak the TextFont.
23255         (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
23256         RenderTransformOrigin, Microsoft's implementation for Glyphs
23257         doesn't seem to take into account the width/height of the bounding
23258         box.
23259         (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
23260         rather than MIN (OriginX, 0), Min (OriginY, 0)
23262 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
23264         * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
23265         [Partial fix for #383870, bounds are not always correct]
23267 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
23269         * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
23270         rather than copying it from the cairo context for the same reason
23271         we did this for TextBlock segment path caching.
23273 2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23275         * playlist.h, playlist.cpp: Implemented ClientSkip.
23276         * media.cpp: Handle playlists entry with ClientSkip set correctly.
23278 2008-05-02  Michael Dominic K.  <mdk@mdk.am>
23280         * animation.cpp:
23281         * animation.h: For the KeySpline: getting rid of the ugly lookup-table
23282         with x -> y values and instead using a two-way curve approximation
23283         methodology for calculating the Spline progress. This is not 100% accurate
23284         (same as original bezier) for fine-grained values but removes all the
23285         precision problems and greatly improves the quality for long KeySpline
23286         animations (no more jags). 
23288 2008-05-01  Larry Ewing  <lewing@novell.com>
23290         * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
23291         invalidate here as changes in the upstream opacity could make us
23292         unable to invalidate later.
23294         Fixes invalidation of last hex in a sprawl run.
23296 2008-05-01  Larry Ewing  <lewing@novell.com>
23298         * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
23299         Previously there were no time manager handlers listening to events
23300         in windowless mode so we were missing expose events.  Make all
23301         invalidations go throw Invalidate so that they get picked up in
23302         windowless.  Take into account that exposes go to a full size
23303         window in windowless mode so we don't need to subtract the device
23304         offsets.
23306         Fixes most of the issues with
23307         http://silverlight.r2musings.com/weatherwidget/default.aspx and
23308         fixes the harness failure on ZIndex.htm.
23309         
23310 2008-05-01  Chris Toshok  <toshok@ximian.com>
23312         * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
23313         AttachingEvent, which is emitted after the toplevel control is set
23314         on the surface, but before UIElement::LoadedEvent is emitted on
23315         it.  Used by the plugin for hooking up the plugin onLoad handler.
23317 2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
23319         * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
23320         from the cairo_t after pathing out all of the glyphs for a segment
23321         of text, keep our own moon_path for caching. Apparently the path
23322         gotten from cairo_copy_path() has whatever transforms are on the
23323         context pre-applied which is the cause for the breakage in bug
23324         #375279.
23326         * font.cpp (TextFont::AppendPath): New method to append a glyph's
23327         path to a moon_path for caching purposes.
23329 2008-04-30  Fernando Herrera  <fherrera@novell.com>
23331         * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
23332         stream, fallback to http:// uri
23334 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
23336         * panel.cpp:
23337         * panel.h: Adding the panel_add_child helper method used by the ancient
23338         demo. It actually makes sense.
23340 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
23342         * Makefile.am:
23343         * collection.h:
23344         * text.cpp:
23345         * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
23346         the install. This way we don't need to bundle the zip includes.
23348 2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
23350         * shape.cpp: calc_line_bounds: compute the start|end caps in the
23351         bounds.
23353 2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
23355         * panel.cpp: Emit Loaded on Canvas before it's child.
23356         [Fix part #361906 - i.e. back to original issue]
23358 2008-04-30  Fernando Herrera  <fherrera@novell.com>
23360         * downloader.cpp:
23361         * downloader.h: export downloader_get_downloaded_file without the
23362         partName.
23364 2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23366         * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
23367           correctly, and calculate file duration as MS seems to be doing it.
23368           SkipFrame: when seeking don't take into account the size of the
23369           mpeg header, since we only peaked it. 
23371 2008-04-29  Michael Dominic K.  <mdk@mdk.am>
23373         * shape.cpp: Clipping is not taken into account with cairo_in_*
23374         functions therefore do the hit-test in two steps -- first check if
23375         within clipping bounds and then check if within shape bounds. Fixes
23376         #383894 and test-shape-cursor-clipping.xaml test. 
23378 2008-04-28  Chris Toshok  <toshok@ximian.com>
23380         * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
23381         before we emit our own Load event (and trigger the plugin's onLoad
23382         handler).
23384 2008-04-28  Chris Toshok  <toshok@ximian.com>
23386         * runtime.cpp (Surface::Attach): always emit Resize on Attach.
23387         fixes ControlState.htm.
23389 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23391         * typegen/typegen.cs: Minor fix to support C constructors immediately
23392           prepended with *.
23393         * type-generated.cpp: Regenerated (includes a lot more C constructors
23394           now).
23396 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23398         * geometry.h: Include glib.h before using glib macros.
23400 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23402         * xaml.cpp: Silently skip the attributes that are empty instead of
23403         throwing an error. Fixes the test-parser-empty-property.xaml and
23404         #383904.
23406 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23408         * brush.cpp: Make sure to use proper width for image stretching params.
23409         Fixes the image-brush-stretch-set.html and bug #383938.
23411 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23413         * shape.cpp: Added property accessors.
23415 2008-04-25  Chris Toshok  <toshok@ximian.com>
23417         * type-generated.cpp: add the Surface Loaded event.
23419         * runtime.cpp (Surface::widget_destroyed): null out s->widget if
23420         it matches too.  no more dangling pointers.
23422         * runtime.h, runtime.cpp: give the Surface class a Load
23423         event (used to run the JS OnLoad event in the plugin) and an
23424         IsLoaded accessor.
23426         * xaml.cpp (dependency_object_hookup_event): raise a parser error
23427         if an event is specified with a javascript: prefix.
23428         
23429 2008-04-25  Larry Ewing  <lewing@novell.com>
23431         * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
23432         changed logic inside a type check.
23434 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23436         * xaml.cpp (geometry_from_str): Use the new gemoetry property
23437         accessor methods.
23439         * geometry.cpp: Added property accessor methods
23441 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23443         * media.cpp: Always emit DownloadProgressEvents, even if we're
23444           buffering.
23446 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23448         * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
23449         method, so the Canvas.Top, Canvas.Left properties are read. Fixes
23450         inkJournal.
23452 2008-04-25  Geoff Norton  <gnorton@novell.com>
23454         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
23455         new libavcodec/avcodec.h
23457 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23459         * runtime.cpp (runtime_init): No longer need to call
23460         assembly_part_init().
23462         * deployment.cpp (assembly_part_init): Moved into
23463         deployment_init().
23465         * deployment.h: Added missing virtual dtors.
23467         * collection.cpp (Collection::GetCount): Added.
23469 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23471         * media.cpp: Set DownloadProgress to 0 when media fails to load.
23473 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23475         * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
23476           stream, emit it even if we missed it by up to 0.1 s. Refactored
23477           parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
23478           after we've either started playing or finished buffering. Emit
23479           MediaFailed/InvalidFileFormat if we failed to initialize the media.
23480           Reinitialize the media synchronously in SetSource.
23481         * media.h: Added
23483 2008-04-25  Michael Dominic K.  <mdk@mdk.am>
23485         * runtime.cpp:
23486         * uielement.cpp:
23487         * uielement.h: Also include the IsHitTestVisible status when checking
23488         our input_list after handling the mouse event. This fixes the
23489         mouse-enter-leave-hit-test-visibility.html test.
23491 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23493         * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
23495 2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
23497         * clock.cpp: Added property accessor methods for TimelineMarker
23498         and added c-bindings.
23500         * downloader.cpp: Same.
23502         * media.cpp: Added property accessors so that it isn't
23503         necessary to use long-winded c-function names to get property
23504         values. Also made all c-wrappers call the c++ property accessor
23505         methods.
23507 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23509         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23510           to the last rendered pts, since that's what is reported as our
23511           current position.
23513 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23515         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23516           to the last rendered pts, since that's what is reported as our
23517           current position.
23519 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23521         * runtime.cpp:
23522         * uielement.cpp:
23523         * uielement.h: Renaming UIElement::GetActualRenderVisibility to
23524         UIElement::GetActualTotalRenderVisibility for better name matching.
23526 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23528         * runtime.cpp: Another perf fix for the fix -- make it a corner case
23529         when the new_input_list needs to be copied. In most cases we can just
23530         reuse it. 
23532 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23534         * runtime.cpp:
23535         * uielement.cpp:
23536         * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
23537         the perf/sanity point of view. Here goes a better refactor.
23539         Adding UIElement::GetActualRenderVisibility which returns the visibility
23540         (like UIElement::ComputeTotalRenderVisibility) without setting the
23541         flags.
23543 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23545         * runtime.cpp: After emitting the events make sure to update our
23546         input_list since it can be changed -- as a result of somebody ie.
23547         changing element's visibility in the enter/leave callback. Fixes the
23548         #375220 (Microsoft downloads index chars).
23550 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23552         * animation.cpp: Do a slightly more precise generation of key-spline
23553         tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
23555 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23557         * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
23558           and raise MediaFailed.
23560 2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
23562         * geometry.h:
23563         * geometry.cpp:
23564         * shape.cpp:
23565         * shape.h: override some Compute[Shape]Bounds method to pass a matrix
23566         argument. Allows measuration of transformed Pathes and a 2nd pass to 
23567         refines the guesses we're doing for Stretches.
23569 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23571         * src.mdp: Updated.
23573 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23575         * media.cpp, pipeline.cpp, pipeline.h: Addded
23576           ProgressiveSource::NotifyFinished to notify that the download has
23577           finished. This is required for streaming downloads which download 0
23578           bytes, otherwise the pipeline will hang waiting for data.
23580 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23582         * collection.cpp, collection.h: TimelineMarkerCollection needs to be
23583           sorted at all times, added a virtual Collection::AddToList method
23584           which appends the item to the list (and overriden by
23585           TimelineMarkerCollection to add it in the correct position to keep
23586           the collection ordered).
23588 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23590         * clock.cpp, clock.h: Added property accessors to TimelineMarker.
23592 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
23594         * panel.cpp: Add property accessors and added c-bindings.
23596 2008-04-23  Geoff Norton  <gnorton@novell.com>
23598         * Makefile.am: Fix make dist when building with ffmpeg.
23600 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
23602         * frameworkelement.cpp: Added property accessors so that it isn't
23603         necessary to use long-winded c-function names to get property
23604         values. Also made all c-wrappers call the c++ property accessor
23605         methods.
23607         * text.cpp: Added property accessors to all text classes so that
23608         it isn't necessary to use long-winded c-function names to get
23609         property values. Also made all c-wrappers call the c++ property
23610         accessor methods.
23611         (TextBlock::LayoutSilverlight): Removed, logic moved into
23612         ::Layout().
23614         * animation.h: Make sure all c-API _new() functions take void as
23615         argument.
23617         * uielement.cpp: Added some property accessors.
23619         * text.cpp: Use the new SolidColorBrush ctor.
23621         * brush.cpp: Added property accessors to all brush classes so that
23622         it isn't encessary to use long-winded c-function names to get
23623         property values. Also made all c-wrappers call the c++ property
23624         accessor methods.
23625         (SolidColorBrush::SolidColorBrush): New .ctor to make life
23626         simpler.
23628 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23630         * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
23631           MediaPlayer with a negative pts.
23633 2008-04-23  Geoff Norton  <gnorton@novell.com>
23635         * libmoon.h: Drop mango.h
23636         
23637 2008-04-23  Geoff Norton  <gnorton@novell.com>
23639         * runtime.cpp: Remove pango support.
23640         
23641 2008-04-23  Geoff Norton  <gnorton@novell.com>
23643         * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
23644         support.
23645         
23646 2008-04-23  Geoff Norton  <gnorton@novell.com>
23648         * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
23649         include swscale and ffmpeg cpp files in the build if their configure
23650         flags are set.
23651         
23652 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23654         * type.cpp: When looking for types use case-insensitive type
23655           comparison. Fixes #375230 and #375231.
23657 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23659         * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
23660           don't take a ref to the context, and add a context_refcounted field
23661           to keep track of refcounting. This is required for long-living
23662           closures which would otherwise cause circular references. Add and
23663           implemetn a ASFMarkerDecoderInfo class, and implement notification
23664           of found markers back to listeners.
23665         * src.mdp: Updated.
23666         * downloader.cpp, downloader.h: Downloader: Add a streaming_features
23667           field, so that the plugin can return information about mms streams.
23668         * http-streaming.cpp, http-streaming.h: Added
23669           parse_http_streaming_features.
23670         * mplayer.h: Add property accessors for CanSeek and CanPause, and
23671           implement them. Select any marker streams.
23672         * media.h, media.cpp: MediaElement: store the marker closure in the
23673           instance, so that we can delete it upon destruction. Read the
23674           streaming features from the downloader in order to set
23675           CanSeek/CanPause properly. TryOpen: if we don't have a filename,
23676           but we do have a downloaded file, use the downloaded file as the
23677           source (might happen if streaming stops before TryOpen is called).
23678         * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
23679           implement them. Select any marker streams. Don't check if we can
23680           pause in Pause (), since MediaElement implements Buffering calling
23681           Pause on us. MediaElement is already checking if media can be
23682           paused or not.
23683         * Makefile.am: Added http-streaming.h|cpp.
23685 2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
23687         * rect.h: overrides for Union and IsEmpty to take a logical bool,
23688         allowing logical bounds computation.
23689         * geometry.cpp: use the overrided Union () in Computebounds
23690         * shape.cpp: This is the stretches' Holy Grail !
23692 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
23694         * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
23695         event->device non-NULL.
23697 2008-04-22  Larry Ewing  <lewing@novell.com>
23699         * playlist.h: remove expat references from public symbols.
23700         * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
23701         from the plublic headers.
23703         Start cleaning things up for ff3.
23705 2008-04-22  Chris Toshok  <toshok@ximian.com>
23707         * runtime.h, runtime.cpp: add Zombify() which sets the zombie
23708         flag.  basically this allows us to unwind gracefully from an event
23709         that has caused the surface to be destroyed.  when the flag is
23710         set, we basically stop emitting UI events that we're in the
23711         process of emitting.
23712         (Surface::widget_destroyed) simplify this, and zero out the
23713         widgets here so we don't destroy them again in ~Surface().
23714         
23715         * dependencyobject.h, dependencyobject.cpp: make unref_delayed
23716         public again, and don't warn about calling it on the main thread.
23717         we need it in the plugin.
23719 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
23721         * shape.cpp (Shape::DoDraw): Cast extents to int for
23722         AddToCacheSizeCounter().
23723         (Shape::IsCandidateForCaching): Same for
23724         VerifyWithCacheSizeCounter().
23726 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23728         * animation.cpp: Safely allow now the KeyTime property to be nullable.
23729         Fixes the Animation_NegativeTst.htm test.
23731 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23733         * animation.cpp:
23734         * animation.h: Making the Storyboard::Begin return bool (true if
23735         storyboard started correctly, false otherwise).
23737 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23739         * animation.cpp:
23740         * animation.h:
23741         * clock.cpp:
23742         * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
23743         to validate the Timeline before starting it. Timelines are always valid
23744         by default except for KeyFrame-based animations where we perform a
23745         check on the keyframes. 
23747         Storyboard doesn't start if any of it's timelines are not valid. This
23748         fixes the test-animation-invalid-keyframe-keytime.xaml test.
23750 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
23752         * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
23753         value, make it be NULL by default. This currently causes a segfault in
23754         the just-added test-animation-invalid-keyframe-keytime.xaml which is
23755         fine.
23757 2008-04-22  Fernando Herrera  <fherrera@novell.com>
23759         * pipeline.h:
23760         * pipeline.cpp: set the new read position after Seeking to pts.
23761         Added ProgressiveSource::SeekInternal that refuses to Seek to a
23762         non-filled position.
23764 2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23766         * dependencyobject.cpp, dependencyobject.h: Added another SetValue
23767           overload, to enable calling all SetValues with stack objects.
23768         * xaml.cpp: Fix a Value leak.
23770 2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
23772         Fixes a double-destroy bug in FullScreen.htm
23774         * runtime.cpp (Surface::Surface): Initialize normal_widget - never
23775         let it be NULL unless we are in windowless mode.
23776         (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
23777         'widget_normal' instead, this way we can't accidently destroy the
23778         fullscreen widget twice (e.g. if we are in fullscreen mode).
23779         (Surface::ConnectEvents): Record the unrealize signal id so that
23780         we can later disconnect from it.
23781         (Surface::DestroyWidget): Now takes a SignalIds argument so that
23782         we can disconnect from unrealize/destroy signals which may fire in
23783         response to destroying the widget.
23784         (Surface::InitializeWidget): Now takes a SignalIds argument so
23785         that we can save the destroy signal id.
23787 2008-04-21  Geoff Norton  <gnorton@novell.com>
23789         * runtime.cpp: Guard against freeing a list in a sub-event
23790         loop when crossings are invoked.  Fixes bug#378902
23791         
23792 2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
23794         * deployment.cpp: new dependency property objects for the
23795         Deployment class.
23797         * xap.cpp: XAP loader, unpacks and instantiates deployment, but
23798         does not load assemblies in VM.  Not sure if this should be done
23799         here (and add a VM dependency) or in the plugin and later as well
23800         on mopen.
23802         * runtime.cpp: Deployment initialization.
23804         * downloader.cpp Moved some code from here into utils.cpp: Expose
23805         CreateTempDir instead of MakeTempDir that takes care of creating
23806         the directory with a unique signature.
23808 2008-04-21  Geoff Norton  <gnorton@novell.com>
23810         * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
23811         to the C implementation.
23813 2008-04-18  Larry Ewing  <lewing@novell.com>
23815         * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
23816         changes invalidate our parents bounds to notify them that their
23817         subtree may have changed.
23819         Fixes the status boxes on MouseInput.htm
23821 2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
23823         * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
23824         and focus-out-event.
23825         (Surface::focus_in_callback): If we have a toplevel canvas, emit a
23826         GotFocus event on it.
23827         (Surface::focus_out_callback): If we have a toplevel canvas, emit
23828         a LostFocus event on it.
23829         (Surface::Attach): If our widget has focus, emit GotFocus event on
23830         our canvas right after we emit the Loaded event.
23832         * uielement.cpp (UIElement::EmitGotFocus): New method.
23833         (UIElement::EmitLostFocus): New method.
23835 2008-04-18  Geoff Norton  <gnorton@novell.com>
23837         * yuv-converter.cpp:  It seems that ffmpeg will occasionally
23838         over-pad the YUV buffers with a SIMD aligned amount (see
23839         timecode-*.wmv)
23840         
23841 2008-04-18  Michael Dominic K.  <mdk@mdk.am>
23843         * animation.cpp: Make sure we always return targetValue when
23844         progress >= 1.0 for Spline*KeyFrame's.
23846         This fixes the clock36.xaml test and PopFly bug of "line dirt
23847         leftovers" when collapsing block list or tutorial list.
23849 2008-04-17  Larry Ewing  <lewing@novell.com>
23851         * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
23853 2008-04-17  Larry Ewing  <lewing@novell.com>
23855         * src/eventargs.cpp:
23856         * src/eventargs.h: 
23857         * src/type-generated.cpp:
23858         * src/value.h: add a default ctor for MouseEventArgs.
23860 2008-04-17  Larry Ewing  <lewing@novell.com>
23862         * typegen/typegen.cs: don't require an svn repo for proper
23863         functioning, try to make the error messages functional still.
23865 2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23867         * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
23868           before trying to play/pause, otherwise nothing will happen (if
23869           coming from the Opening state). Fix printf.
23871 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23873         * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
23874           for DependencyProperty, if a property has this flag, it will always
23875           be changed, even if the new value is the same as the old value.
23876           DependencyObject::SetValue: honor the new always_change flag.
23877         * media.cpp: Set the always_change flag to true for
23878           MediaBase::SourceProperty.
23880 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23882         * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
23883           MediaOpened, so that it also happens when TryLoadFinished opens the
23884           media. Fixes media not starting to play when the media was
23885           downloaded between the moment we tried to open it and it was
23886           successfully opened.
23888 2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
23890         * color.cpp (color_from_str): Handle uint32 color values that are
23891         not hex.
23893 2008-04-17  Larry Ewing  <lewing@novell.com>
23895         * dependencyobject.cpp (DependencyProperty::DependencyProperty):
23896         initialize is_nullable.
23898         Fixes random failure of ParserErrors.htm.
23900 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23902         * media.cpp: MediaElement::TryOpen: always unref the FileSource we
23903           create when we're done with it.
23905 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23907         * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
23908           remember how many events the current type has, since in our
23909           destructor we can't get that information anymore. Add a new
23910           EventLists class which does the book-keeping.
23912 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23914         * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
23915           in the destructor. MediaElement::SetMedia: call ComputeBounds at
23916           the end. Fixes xaml/test-canvas-no-size.html
23918 2008-04-17  Michael Dominic K.  <mdk@mdk.am>
23920         * animation.cpp: It turns out that KeyFrames doesn't have default Value
23921         of NULL but rather 0/Black/etc.  
23923         This fixes the the test-animation-null-defaults-*.xaml tests and the bug
23924         in PopFly where clicking the block list collapser wouldn't do anything
23925         (it collapses now properly like the tutorial right pane). 
23927 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23928         
23929         * src.mdp: Updated.
23931 2008-04-16  Larry Ewing  <lewing@novell.com>
23933         * type.cpp: avoid an infinite recursion in LookupEvent.
23935         Fixes a crash in RuntimeErrors.htm.
23937 2008-04-16  Larry Ewing  <lewing@novell.com>
23939         * shape.cpp (Shape::ComputeStretchBounds): get another test working.
23941 2008-04-16  Larry Ewing  <lewing@novell.com>
23943         * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
23944         try to resolve the regression in stretch that had crept in.  Still
23945         working on a more complete patch.
23947 2008-04-16  Larry Ewing  <lewing@novell.com>
23949         * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
23950         a logical size.
23952 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
23954         * dependencyobject.cpp (free_value): value argument may be NULL.
23956 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23958         * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
23959           decreasing refcount, so that ref in event emission doesn't abort.
23960           Reenable ref/unref in event emission.
23962 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
23964         * dependencyobject.cpp (set_surface): value argument can be NULL.
23965         (DependencyObject::IsValueValid): Fixed compile warnings.
23967         * downloader.cpp: Properly set/reset Status and StatusText
23968         properties.
23969         (Downloader::Open): Properly reinitialize all state.
23970         (Downloader::Write): Clamp progress to 1.0 (altho it should never
23971         go above, especially not that I've fixed resetting 'total' state).
23973         * enums.c (initialize_enums): Don't cast arrays using
23974         GINT_TO_POINTER(), doesn't make any sense.
23976 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23978         * collection.cpp: Collection::EmitChanged: don't create a
23979           ChangeEventArgs if we don't need one, and unref it when we're
23980           finished with it.
23982 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
23984         * clock.cpp: Add protection against division by 0.
23986 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
23988         * animation.cpp:
23989         * animation.h: Don't detach the ClockGroup from parent on the Completed
23990         event. This is now finally no longer needed. While keeping the
23991         clockgroup means little perf difference it makes the whole thing much
23992         more simple to read (there is just one place that explains why Filling
23993         groups are no longer processed after Completed).
23995 2008-04-16  Larry Ewing  <lewing@novell.com>
23997         * shape.cpp: tweak the origin tweak again.  This should pass
23998         test-shape-path-stretch[34].xaml.
24000 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
24002         Fix for OMPackagingSource.htm
24004         * media.cpp (MediaElement::OnPropertyChanged): If the new source
24005         is empty, Invalidate().
24006         (MediaElement::Render): Render nothing if our downloader is NULL.
24008 2008-04-16  Larry Ewing  <lewing@novell.com>
24010         * shape.cpp: don't adjust the origin unless we are adjusting that
24011         axis.
24013 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24015         * playlist.cpp: Simplify printf.
24017 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24019         * src.mdp: Updated to (mostly) compile.
24021 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24023         * src.mdp: Updated.
24025 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24027         * typegen/typegen.sh: Updated to work correctly independently of
24028         the current directory when executed.
24030 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24032         * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
24033           collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
24034           downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
24035           type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
24036           uielement.cpp, uielement.h: Initialize our type system statically.
24037         * dependencyobject.cpp: Initialize our type system statically. Comparing a
24038           Kind value to another to determine type hierarchy isn't supported
24039           anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
24040           thing.
24041         * src.mdp: Updated.
24042         * type.cpp.in: Removed, no longer required.
24043         * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
24044           determine type hierarchy isn't supported anymore, use Value::Is or
24045           Type::IsSubclassOf, which are doing the right thing.
24047 2008-04-16  Larry Ewing  <lewing@novell.com>
24049         * shape.cpp (Shape::ComputeStretchBounds): fix typo.
24051 2008-04-16  Larry Ewing  <lewing@novell.com>
24053         * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
24054         that got accidentally lost when fixing other bits.
24056         Fixes regression in StretchAndShapes.xaml.
24058 2008-04-16  Jackson Harper  <jackson@ximian.com>
24060         * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
24061         we need to check if the property is Nullable and raise an error if
24062         it isn't.
24064 2008-04-16  Jackson Harper  <jackson@ximian.com>
24066         * dependencyobject.h|cpp: SetValue now validates values and
24067         returns false with a GError when invalid values are used.
24068         Subclasses can (and should) override IsValidValue to do their own
24069         value validation.
24070         * xaml.cpp: Use new SetValue that returns errors.
24071         
24072 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24074         * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
24075           don't have a surface anymore. We're probably executing after the surface
24076           has been destroyed.
24078 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24080         * src.mdp: Updated to include typegen/*.
24081         * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
24082           Behaviour/Behavior inconsistency.
24084 2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
24086         * media.cpp (MediaElement::OnPropertyChanged): Moved the
24087         PositionProperty seek logic into here so we could get rid of
24088         MediaElement::SetValue() overload.
24090         * dependencyobject.h (class DependencyObject): SetValue() is no
24091         longer a virtual method.
24093 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24095         * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
24096         clock35.xaml test.
24098 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24100         * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
24101         into account also when moving back in time. 
24103         Fixes the clock34.xaml test.
24105 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24107         * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
24108         calculating it ourselves (instead of using the CalcProgress). Otherwise
24109         we're bypassing the clamping and extending animations/values beyond
24110         their bounds. 
24112         This is a real fix for the Popfly #378390 (cannot configure the box in
24113         Popfly). Also fixes the clock34.xaml test-case.
24115 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24117         * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
24118         when previous OR current state is Clock::Active.
24120 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24122         * clock.cpp: Reverting the change that was supposed to fix popfly. It's
24123         actually totally bad. I knew I was too fast with this one.
24125 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24127         * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
24128         configure the box in Popfly). Whoah, that was a nasty one.
24130 2008-04-14  Chris Toshok  <toshok@ximian.com>
24132         * runtime.cpp (Surface::Attach): don't clear the up/down dirty
24133         lists here.  Calling toplevel->SetSurface(NULL) ensures that all
24134         elements from the previous tree have their dirty elements removed,
24135         so what's left will correspond to 1) things that are about replace
24136         the current hierarchy, or 2) things that haven't actually been
24137         added to the hierarchy yet, but need to be associated with a
24138         surface.
24140         * collection.cpp (Collection::Clear): emit
24141         CollectionChangeTypeChanging event before we do the actual change
24142         so the owner can do something with the children if it needs to.
24143         (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
24144         nuke.
24145         (VisualCollection::Add): remove call to VisualAdded.  that
24146         behavior will be handled by Panel in its OnCollectionChanged
24147         method.
24148         (VisualCollection::SetVal): same.
24149         (VisualCollection::Insert): same.
24150         (VisualCollection::Remove): same, but with VisualRemoved.
24151         (VisualCollection::RemoveAt): same.
24152         (VisualCollection::Clear): remove the loop calling VisualRemoved.
24153         this will be handled by the additional
24154         CollectionChangeTypeChanging handling in panel.cpp.
24156         * enums.h (enum CollectionChangeType): add
24157         CollectionChangeTypeChanging.
24159         * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
24160         where the ChildrenProperty is changed, by calling ChildRemoved on
24161         all the old children, and ChildAdded on all the new ones.
24162         (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
24163         (Panel::ChildRemoved): new home for
24164         VisualCollection::VisualRemoved.
24165         (Panel::OnCollectionChanged): add support for
24166         CollectionChangeTypeChanging, so we can remove all children.  this
24167         change type is generated by Collection::Clear.
24169         * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
24170         CollectionChangeTypeChanging.
24171         (InkPresenter::OnCollectionChanged): same.
24173 2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
24175         * media.cpp (Image::CreateSurface): Robustification of image
24176         loading.
24178 2008-04-14  Michael Dominic K.  <mdk@mdk.am>
24180         * clock.cpp:
24181         * clock.h: When calculating the new time in DoRepeat use modulo on new
24182         value. Otherwise we're 'losing' a little bit of time on every repeat and
24183         end time doesn't match with parent. This fixes a few more "jags" on
24184         animations ie. clock13.xaml.
24186 2008-04-11  Larry Ewing  <lewing@novell.com>
24188         * xaml.cpp (value_from_str): make sure we propogate the error if
24189         color_from_string returns NULL.
24191         * color.cpp (color_from_str): return NULL on invalid color values
24192         rather than simply returning black.
24194         Add an error condition to color_from_string so that we pass the
24195         color tests in ParserErrors test.
24196         
24197 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24199         * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
24201 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
24203         * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
24204         defined.
24206         * downloader.cpp (Downloader::Send): Use
24207         TimeManager::InvokeOnMainThread() here like Rolf did in
24208         MediaBase. Simplifies things by not needing a surface.
24210         * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
24211         object as opposed to a DependencyObject.
24213 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24215         * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
24216         we go Filling/Stopped. Without this we never "finish off" our animations
24217         and depending on the framerate we get "jags". Fixes the clock32.xaml
24218         test.
24220 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
24222         * runtime.cpp: Make the dot and eraser cursors const to avoid
24223         compiler warnings.
24225 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24227         * enums.c: Removing bolox comment and behavior. Always return -1 on
24228         fail.
24230         * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
24231         Should make it a little bit easier to spot problems.
24233 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24235         * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
24236         actually recursive (I'm not sure why this was commented out? Toshok?). 
24237         Fixes the sprawl end-game animation, #378748.
24239 2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
24241         * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
24242         bnc #375213. Implemented the MouseCursorNone too.
24244 2008-04-10  Larry Ewing  <lewing@novell.com>
24246         * xaml.cpp (start_element): throw an error if there is an xml
24247         attribute on a dependency property.
24249 2008-04-10  Larry Ewing  <lewing@novell.com>
24251         * enums.c (enum_from_str): return -1 on an invalid enum string so
24252         that we can catch it as a ParserError fixes
24253         Parser_Invalid_Enum.xaml.
24255 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24257         * media.cpp: MediaBase::SetSource: no need to get a
24258           Surface/TimeManager instance to do an asynchronous call, just
24259           call TimeManager::InvokeOnMainThread.
24261 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24263         * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
24264           by the audio thread when the audio finishes.
24266         * media.h, media.cpp: Added MediaElement::AudioFinished, called by
24267           the media player when the audio finishes. Enables us to raise
24268           MediaEnded for audio-only media.
24270 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
24272         * brush.cpp|media.cpp: All SetSource() entry points now take
24273         Downloader objects rather than DependencyObject arguments - the
24274         same as MSDN defines.
24276         * media.cpp (SetSourceInternal): More cleanup /
24277         simplification. Since *::SetSource() already takes steps to be
24278         async, no need to use Downloader::Send() which would introduce
24279         another delay in downloading. It should be plenty safe to call
24280         Downloader::SendNow() in all ::SetSourceInternal()
24281         implementations. Also, we now need to handle NULL downloader which
24282         we get called with if the original SetSource() was passed a NULL
24283         downloader.
24284         (Image::SetSource): Don't cleanup the surface here, do that in
24285         SetSourceInternal() so that we delay until appropriate.
24286         (Image::SetSourceInternal): If there is a downloader, delay
24287         CleanupSurface() even longer until the new image has been
24288         downloaded.
24289         (Image::DownloaderComplete): Call CleanupSurface() here.
24291 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
24293         * media.cpp: Consolidated Image and MediaElement downloader bits
24294         by putting them into MediaBase.
24296 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24298         * dependencyobject.cpp: Guard against calling closures which have
24299           been removed during emission of previous events in the same
24300           event list: when we're emitting and a closure is removed, mark
24301           the closure as pending removal, don't call it anymore, and only
24302           remove it when we're finished emitting.
24304         * dependencyobject.h: Guard against calling closures which have
24305           been removed during emission of previous events in the same
24306           event list.
24308 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
24310         * downloader.cpp:
24311         * downloader.h:
24312         * media.cpp: A straight-forward fix for "gray flashes" in comic and
24313         slideshow (#375275). It's circumventing a change to make downloaders
24314         async for Image. Jeff, maybe you can figure more?
24316         (The commit that broke the the slideshow was r99065, Jeff from
24317         2008-03-26).
24319 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
24321         * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
24322         Showcase and test-shape-path-stretch2.xaml.
24324 2008-04-09  Chris Toshok  <toshok@ximian.com>
24326         * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
24327         is invalid, as root_2 might be.
24329 2008-04-09  Chris Toshok  <toshok@ximian.com>
24331         [ Fixes some odd behavior in
24332           http://www.thedatafarm.com/silverink/, and also fixes bug
24333           #375229 ]
24334         
24335         * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
24336         intersect the expose region with our RenderBounds, not our normal
24337         Bounds.  This forces us to add the ink presenter to the render
24338         list even when the exposed area is just going to redraw a stroke,
24339         not the actual canvas rectangle.  When we go to subtract, however,
24340         we still only subtract the canvas rectangle.
24342         * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
24343         stroke collection's bounds as well as the new stroke collection's
24344         bounds.
24345         (InkPresenter::OnCollectionChanged): when the collection has
24346         changed, we can't just use Invalidate() since that only
24347         invalidates the canvas bounds.  We need to invalidate our render
24348         bounds to get rid of strokes that are outside the canvas bounds.
24349         Also, make sure to also invalidate the new bounds of the stroke
24350         collection (it will usually be empty, but do it anyway).
24351         (InkPresenter::ComputeBounds): add logic to compute the
24352         render_bounds here.
24353         (InkPresenter::GetRenderBounds): new method.
24355         * stylus.h (class InkPresenter): add GetRenderBounds, and also add
24356         an OnPropertyChanged method so we can deal with the stroke
24357         collection being assigned to something else.
24359         * uielement.h (class UIElement): as much as I hate to do this, add
24360         yet another type of bounds (RenderBounds).  this is only here for
24361         the special case of the inkpresenter, which has the normal canvas
24362         bounds (the rectangle), the subtree bounds (which unions the
24363         canvas bounds with the bounds of strokes and children) and render
24364         bounds (which unions canvas bounds and stroke bounds.)
24366 2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
24368         * dependencyobject.cpp (resolve_property_path): Alias TextElement
24369         to TextBlock to work around some buggy beta versions of Blend.
24371 2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
24373         * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
24374         the logical/shape bounds diff stays the same. It's IMHO as close as we
24375         can go without drawing and recalculating.
24377 2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
24379         * xaml.cpp: Cleaned up some of the debugging printf's and and
24380         wrapped them in d() to declutter console spewage when unneeded.
24381         (xaml_create_from_str): ctype functions take int arguments, where
24382         normal char values are in the range 0-255 - in order to work with
24383         non-GNU, need to cast from char to unsigned char.
24385         * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
24386         initializer stuff to be consistent with other classes.
24388 2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
24390         * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
24391         to Jackson.
24393 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24395         * clock.cpp:
24396         * clock.h: SkipToFill the automatic duration clock groups except if 
24397         this is the root of all roots clock (the TimeManager's clock). Due to
24398         the idle_hint optimization, we don't process those clocks anyways.
24400 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24402         * value.h: 
24403         * animation.cpp:
24404         * animation.h:
24405         * dependencyobject.cpp:
24406         * dependencyobject.h: Making sure that each property is animated only by
24407         a single animation at a time (the last one started). 
24408         From Silverlight forums:
24410         "Keep in mind Silverlight only supports a single animation on a
24411         property at a time, so if you begin multiple animations on the same
24412         property, the last one will prevail."
24414         This prevents us from overriding Filling/HoldEnd animations by sb's
24415         started before. 
24417         The implementation is: for each prop we create a hash table (when
24418         needed) which stores objects (keys) + last AnimationStorage attached
24419         (values). When new AnimationStorage is attached to a prop, the last one
24420         is notified to stop updating the target (we don't touch the clock
24421         structure). And then there is some magic to handle destroy's etc. 
24423         This fixes PopFly mouse enter/leave problems in the toolbox and the 
24424         http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
24425         problems. Fixes #375231, #362363.
24427 2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
24429         Fixes needed for Zombomatic
24431         * downloader.cpp (Downloader::GetDownloadedFilePart): When
24432         creating the full pathname for parts we are extracting, convert
24433         everything to lowercase since we need to treat archived filenames
24434         case-insensitively.
24435         (Downloader::GetUnzippedPath): Convert filenames from the zip
24436         archive to lowercase so that it is easier for us to find them
24437         case-insensitively on the filesystem once they are extracted.
24439 2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
24441         * xaml.cpp: Fix parsing properties by ensure they start with the 
24442         element name (and not something else). Fix crasher.
24444 2008-04-07  Michael Dominic K.  <mdk@mdk.am>
24446         * src/shape.cpp:
24447         * src/shape.h: Compute the origin point as a separate step after
24448         computing the shape bounds and the stretch bounds. This fixes the
24449         recently broken sprawl.
24451         I think it also fixes other things. Before, given the way code was,
24452         the stretch_bounds would affect the origin *only* in the case of Path,
24453         in other cases (Line, Polygon, Polyline...) they would be ignored.
24455 2008-04-04  Chris Toshok  <toshok@ximian.com>
24457         * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
24458         was missing a bunch of tests (basically it was intersecting
24459         infinite lines with ellipses, not segments), and some of the math
24460         was wrong.
24462 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24464         Intended to fix bug #373462, but something else is preventing that
24465         site from working now...
24467         * media.cpp (MediaElement::SetSourceInternal): PartName is no
24468         longer a const char * argument, which means we take ownership of
24469         the PartName string.
24470         (MediaElement::SetSourceAsyncCallback): New method which is the
24471         async callback for SetSource().
24472         (MediaElement::SetSource): Reinitialize() right away.
24473         (MediaElement::SetSource): Clear out any pending SetSource async
24474         data, replacing it with the new downloader/part name info.
24475         (MediaElement::SetSource): Allow a NULL downloader object but make
24476         sure we don't crash in that case either.
24478 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24480         * dependencyobject.cpp (resolve_property_path): Avoid crash on 
24481         invalid syntax and leaks in other error cases. Fix #377039 (more
24482         test cases coming soon).
24484 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24486         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
24487         immediately if the array len is 0, prevents a crash accessing
24488         sorted_list->pdata[0] when working backwards in the second
24489         for-loop. Fixes one of the crashes I found while investigating bug
24490         #362561.
24492 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24494         * runtime.cpp: Don't crash in strcase_hash if the hashtable 
24495         contains NULL values.
24497 2008-04-03  Chris Toshok  <toshok@ximian.com>
24499         * runtime.cpp (Surface::InitializeWidget): disable the
24500         GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
24501         tests with it enabled.
24502         (Surface::motion_notify_callback): force the emission of a motion
24503         event.
24505 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24507         * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
24508         the pencil cursor. Also updated Hand (which should be a
24509         left-pointing hand, not right-pointing) and also Eraser (we need
24510         to make our own icon for this, but I suck at art so I'll pass for
24511         now).
24513 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24515         * shape.cpp:
24516         * shape.h: Calculate the logical extents when computing the shape bounds
24517         and pass them to the ComputeStretchBounds. They're currently not used in
24518         any way.
24520 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24522         * shape.cpp: Don't init the stretch matrix to identity on each
24523         Shape::ComputeShapeBounds. We want to be able to call it freely.
24525 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24527         * geometry.cpp: Use the cairo_path_extents to calculate the logical
24528         bounds instead of faking small stroke.
24530 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24532         * shape.cpp:
24533         * shape.h: Adding new parameter (bool logical) to all the
24534         Shape::ComputeShapeBounds functions and overrides. See prev commit for
24535         explanation of what is logical bounds.
24537         Currently all clients use logical == false. Just adding this
24538         functionality.
24540 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24542         * geometry.cpp:
24543         * geometry.h:
24544         * shape.cpp:
24545         * uielement.cpp: Adding new parameter (bool logical) to all the
24546         Geometry::ComputeBounds functions and overrides. Calculating logical
24547         bounds means calculating bounds without stroke included. Ie. a line
24548         (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
24549         what the stroke is. 
24551         Not used right now, will be used in just a few commits (all current
24552         ComputeBounds clients call it will logical == false).
24554 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24556         * shape.cpp: Don't automatically compute the stretch bounds when
24557         computing shape bounds. Instead, compute it as a separate step in
24558         Shape::ComputeBounds.
24560 2008-04-03  Chris Toshok  <toshok@ximian.com>
24562         * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
24563         contrary to msdn2, MS *is* indeed emitting this event with
24564         non-null eventargs.  it's just an EventArgs object, not a
24565         MouseEventArgs.
24567 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24569         * dependencyobject.cpp (EventObject::Emit): Unref the calldata
24570         even in the "no such event" exception case.
24572 2008-04-03  Larry Ewing  <lewing@novell.com>
24574         * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
24575         into appropriate error code.
24577 2008-04-03  Larry Ewing  <lewing@novell.com>
24579         * xaml.cpp: Generate errors when trying to set readonly properties.
24581 2008-04-03  Larry Ewing  <lewing@novell.com>
24583         * xaml.cpp: make sure we set an error if the property name isn't
24584         valid.
24586         * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
24587         the needed events.
24589 2008-04-03  Larry Ewing  <lewing@novell.com>
24591         * runtime.cpp (Surface::expose_to_drawable): make sure we take
24592         allocation.x and allocation.y into account when deciding not to
24593         draw.  Should fix the disappearing gtksilver widget reported on irc.
24595 2008-04-02  Larry Ewing  <lewing@novell.com>
24597         * xaml.cpp: flush character data at the end of property elements
24598         too.
24600 2008-04-02  Jackson Harper  <jackson@ximian.com>
24602         * xaml.cpp: Add the element name for this error.
24604 2008-04-02  Chris Toshok  <toshok@ximian.com>
24606         * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
24607         (Stroke::HitTestEndcapPoint): same.
24608         (point_gte_line): new method.
24609         (point_lte_line): new method.
24610         (Stroke::HitTestSegmentPoint): use point_gte_line and
24611         point_lte_line to determine if the point is inside the segment.
24612         (global): wrap all spew in DEBUG_HITTEST.
24613         
24614 2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24616         * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
24617           just plain broken.
24619 2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
24621         * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
24622         integer type when comparing.
24624         * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
24625         debugging printfs. Fixes bug #375273.
24627 2008-04-01  Chris Toshok  <toshok@ximian.com>
24629         * xaml.cpp: back out the SetSurface call removal.
24631         * dependencyobject.cpp (EventObject::unref): instead,
24632         SetSurface(NULL) here before we delete the object.
24634 2008-04-01  Chris Toshok  <toshok@ximian.com>
24636         * control.cpp (Control::InitializeFromXaml): make sure to call
24637         SetSurface(NULL) on the old real_object since we're detaching it
24638         from the tree.  Call SetSurface on ourselves (really, should just
24639         be the real_object, right?) before calling the real_object methods
24640         that would cause dirty stuff to happen.
24642         * xaml.cpp (create_custom_element): don't call SetSurface here, it
24643         will cause problems if there's a parser error (since elements
24644         can/will be on the surface's dirty list after they're destroyed.)
24645         (default_create_element_instance): same.
24647 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24649         * playlist.cpp, playlist.h: A lot of fixes according to the tests.
24650         * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
24651           specify where in the stream we start and (playlists can specify a
24652           starting point which isn't in the beginning), and set the duration from
24653           the playlist (if the playlist has it).
24654         * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
24655           false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
24656           if the recursive playlist couldn't be replaced.
24658 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24660         * media.h: Added MediaElement::GetPlaylist.
24662 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24664         * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
24665           Remove Type::NPOBJ, it's not needed.
24667 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24669         * animation.cpp: Since now the clocks are synced we don't need to
24670         recursively check the states in the teardown on completed.
24672 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24674         * clock.cpp:
24675         * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
24676         manually to Stopped but not touching the state of children).
24678         We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
24679         set, we don't tick the ClockGroup no matter what the state is. Idle_hint
24680         is set when all children of ClockGroup have state != Active (ie. are
24681         filling). This can be seen as "optimization" -- not to dumbly process
24682         filling clocks which keep setting same value all the time (it creates
24683         insane recursion ie. in Showcase making it unusable). Silverlight seems
24684         to do something very similiar.
24686         Before this commit a same effect was achieved by the said "desyncing" --
24687         forcing the ClockGroup to Stopped. This approach however is a bit more
24688         clean. 
24690 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
24692         * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
24694 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24696         * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
24698 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24700         * value.cpp: Remove a few warnings which might give false positives now.
24702 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24704         * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
24705           we're being unreffed on the main thread, if not, call unref_delayed.
24707 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24709         * runtime.cpp, runtime.h: Added a Surface::InMainThread.
24711 2008-04-01  Fernando Herrera  <fherrera@novell.com>
24713         * media.cpp: Remove the request position function when aborting the
24714         downloader.
24716 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24718         * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
24719           MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
24720           being called from the destructor, and if so, null out the element field
24721           of the MediaPlayer, so that we don't access a destructed media element.
24722           Add an async version of MediaPlayer::EnqueueFrames, so that the audio
24723           threads can request more data in a thread-safe manner.
24725 2008-04-01  Fernando Herrera  <fherrera@novell.com>
24727         * asf/asf.cpp:
24728         * pipeline.h: Support for live mms streams, that have packet_count as
24729         0 and return false for CanSeekToPts.
24731 2008-03-31  Chris Toshok  <toshok@ximian.com>
24733         * namescope.h, namescope.cpp: make no semblance of having a
24734         superior namescope implementation (where they get transported
24735         around with the subtree they're attached to when it's
24736         removed/re-added to the hierarchy.)  Instead follow MS's broken
24737         implementation where temporary namescopes are completely removed
24738         when merged into another one.
24740         * collection.h, collection.cpp (Collection::MergeNames): factor
24741         out some common code from Add, Insert, and SetVal. Also, deal with
24742         the fact that merging namescopes now really adds all the names to
24743         the parent namescope, so clear the old namescope.
24744         (Collection::SetVal): don't just unregister the old toplevel name,
24745         but all the names in the subtree.
24746         (Collection::Remove): same.
24747         (Collection::Clear): same.
24748         (Collection::UnregisterAllNamesRootedAt): override DO's method,
24749         recursing into all our children.
24750         (Collection::RegisterAllNamesRootedAt): same.
24751         (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
24752         UIElement::OnLoaded is called again, and <BeginStoryboard>
24753         elements restart when the subtree is added to the hierarchy again.
24755         * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
24756         override and forward onto real_object.
24757         (Control::RegisterAllNamesRootedAt): same.
24758         
24759         * dependencyobject.cpp (DependencyObject::ClearValue): add a
24760         parameter to allow us to specify *not* to notify listeners of the
24761         property change.  we do this with the NameScope property, which
24762         noone should be listening too.  It was causing a tremendous
24763         performance hit when merging a lot of namescopes (as we do in
24764         inkStylusPointCount.htm)
24765         (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
24766         removed from the hierarchy, we need to unregister all the names
24767         beneath it.
24768         (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
24769         added to the hierarchy, if it doesn't have a temporary
24770         namescope (in which case we just merge it).
24772 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24774         * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
24775           MemorySource owns the memory or not (if it will be freed upon
24776           destruction or not).
24778 2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
24780         * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
24781         for-loop would only use every other point as a starting point for
24782         a segment. E.g. if you had points a, b, c, d and e - the code only
24783         checked segments ab, cd, and e when it should have been checking
24784         ab, bc, cd, and de.
24786 2008-03-31  Fernando Herrera  <fherrera@novell.com>
24788         * downloader.cpp: Check if aborted before cheking for requested
24789         position.
24791 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24793         * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
24794           ProgressiveSource.
24795         * playlist.cpp: Updated according to pipeline changes.
24796         * mplayer.h: Fix SetState to not overwrite current bits, only current state.
24797         * media.h, media.cpp: Rework buffering progress to use the available time of
24798           media available (pts) instead of doing some funny math on file
24799           positions.
24800         * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
24802 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24804         * animation.cpp: Don't Stop the Storyboard root_clock before begining
24805         the Storyboard again, just silently tear it down.
24807         Calling Stop resets the property values to base which is something we
24808         don't want. When Begin () is called on Sb in SL, the last animated
24809         values are used. 
24811 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24813         * animation.cpp:
24814         * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
24815         works similar to Teardown but doesn't destroy the clock/animation
24816         hierarchy. We need this hierarchy to ie. reset prop values to base when
24817         Storyboard::Stop is called manually. 
24819         When Storyboard is completed, call DetachClockGroupFromParent (if not
24820         Teardown). Otherwise the Storyboard will ghostly change state with parent 
24821         state changes.
24823 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
24825         * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
24826         to check for NULL and report stopped == true when both ClockGroup state
24827         is Stopped and all children are Stopped. 
24829         To be honest, this never currently reports Stopped == true as we do
24830         intentional state desync when storyboard reaches end -- setting the
24831         ClockGroup state to Stopped but keeping the children in Active/Filling.
24832         This *has* to go away.
24834 2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24836         * src.mdp: Updated.
24838 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
24840         * utils.cpp (TextStream::Read): Better handling of iconv() failure
24841         cases.
24843 2008-03-28  Chris Toshok  <toshok@ximian.com>
24845         * animation.cpp, animation.h: remove Storyboard::FindSurface -
24846         EventObject::GetSurface() always returns the right thing.
24847         Override SetSurface to check whether we're being detached from or
24848         attached to a surface, and pause or resume the clock in response.
24849         This fixes some issues in storyboard_EnterLeaveSemantics.
24851 2008-03-28  Chris Toshok  <toshok@ximian.com>
24853         * dependencyobject.h,
24854         dependencyobject.cpp (DependencyObject::SetSurface): new method,
24855         set the surface for all our DependencyObject subclassed property
24856         values.
24858         * collection.h, collection.cpp (Collection::Add): SetSurface work.
24859         (Collection::Insert): same.
24860         (Collection::SetVal): same.
24861         (Collection::Remove): same.
24862         (Collection::RemoveAt): same.
24863         (Collection::Clear): same.
24864         (Collection::SetSurface): new method, iterate over all children
24865         setting the surface.
24866         (VisualCollection): remove surface logic here.
24867         (VisualCollection::VisualAdded): same.
24868         (VisualCollection::VisualRemoved): same.
24870 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24872         * mplayer.cpp: Clear all queues after a seek has completed.
24874 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
24876         * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
24878         * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
24879         RemoveDir() rename.
24880         (create_unzipdir): Updated for MakeTempDir() rename.
24882         * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
24883         be more consistent with moonlight API naming convensions.
24884         (RemoveDir): Renamed from moon_rmdir().
24885         (CopyFileTo): Renamed from moon_copy_file()
24887 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24889         * debug.cpp: Fix warning.
24891 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24893         * clock.cpp: Fixing the clock repeat for duration-based
24894         RepeatBehavior. 
24895         
24896         Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
24897         passing now (same behavior as in SL).
24899 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24901         * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
24902         the bound decrease the repeat_count no matter what (if auto-reversed or
24903         not). This makes the auto-reversed storyboard work.
24905         Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
24906         is clock14.xaml.
24908 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
24910         * animation.cpp: Teardown the storyboard in Completed only if the root
24911         clock is stopped AND all the children are stopped too. After teardown we
24912         loose the ability to reset-back the values and Completed is
24913         fired always, even if the clock is filling (a filling clock should reset
24914         on Stop).
24915         
24916         This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
24917         the popular methodology of beginning a filling Storyboard on MouseEnter
24918         and stopping it on MouseLeave.
24920 2008-03-27  Michael Dominic K.  <mdk@mdk.am>
24922         * runtime.cpp: Ignore the enter/leave crossing events coming as a 
24923         result of grab/press started/finished.
24925 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24927         * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
24928           MediaPlayer changes.
24929         * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
24930           private, and add public accessors when required. Remove all boolean
24931           fields and add a single bit/state field with its corresponding enum and
24932           public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
24933           no longer used. Removed unused defines. Made video and audio structures
24934           nested inside MediaPlayer instead of pointers (and queue inside
24935           video/audio), avoids pointer accesses and additional malloc/frees, since
24936           they were always created anyways. Don't seek to anywhere in Stop if
24937           we're stopping because we're closing, since it may cause crashes if
24938           we're closing because the MediaElement is being destructed (it may cause
24939           the MediaElement to be resurrected). Made public methods private
24940           whenever possible.
24942 2008-03-28  Fernando Herrera  <fherrera@novell.com>
24944         * asf/asf.cpp: Use the pts == 0 optimization before trying to
24945         SeekToPts.
24947         * downloader.cpp:
24948         * downloader.h: Add functions to allow request a remote postition.
24950         * media.cpp:
24951         * media.h:
24952         * pipeline.cpp:
24953         * pipeline.h: Implement SeekToPts for mms:// sources.
24955 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24956         
24957         * dependencyobject.h: Detect an unrecoverable error condition with
24958           refcounting (reffing an object with refcount of 0), and abort instead of
24959           crashing randomly and insecurely later on.
24961 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24963         * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
24965 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
24967         * downloader.cpp (Downloader::GetResponseText): Use the new
24968         TextStream class.
24970         * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
24971         reversed.
24973         * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
24974         sure to exit the loop ;-)
24976 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
24978         * xaml.cpp (xaml_create_from_file): Use the new TextStream class
24979         instead of doing things the hard way. Might be more performant,
24980         definitely won't malloc/free nearly as much. Also fixed a bug
24981         where leading lwsp might be larger than our read buffer.
24983         * utils.cpp (TextStream): New class for reading text input
24984         streams, converting them to UTF-8 as they are read.
24986         * downloader.cpp (Downloader::Send): Handle the case where the
24987         attached surface is NULL.
24988         (Downloader::GetResponseText): Handle zero-length files. Also,
24989         nul-terminate the returned buffer (which is now a char* rather
24990         than a void*) since it is clear that the javascript expects to be
24991         able to use this value as a string buffer.
24993 2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24994         
24995         * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
24996           requested to play audio. Don't hold the lock when polling.
24998 2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
25000         * downloader.cpp (Downloader::SendInternal): New method that is
25001         basically the same as the old ::Send().
25002         (Downloader::Send): Queue the SendInternal() call via
25003         TimeManager's TickCall API.
25005 2008-03-26  Chris Toshok  <toshok@ximian.com>
25007         * dependencyobject.h, dependencyobject.cpp (class EventObject):
25008         add RemoveMatchingHandlers variants that let you pass in a
25009         predicate to test event handlers with.
25011 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25013         * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
25014           changes.  Added a MemoryStream.
25016         * media.cpp: Updated according to API changes.
25018 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25020         * mplayer.cpp, mplayer.h: Add a new state to the audio:
25021           WaitingForData, in which case we don't poll on that audio
25022           node (since the hardware will just tell us it's ready to recieve
25023           data). Fixes audio using 100% cpu after when it runs out of
25024           data (either because of network hiccup or the stream finished).
25026 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25028         * pipeline.cpp, mplayer.cpp, pipeline.h: Made
25029           IMediaStream::selected private and add accessors.
25031 2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
25033         * shape.h:
25034         * shape.cpp: set the dash caps for all the shapes, draw start/end caps
25035         on line and polylines.
25037 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25039         * mplayer.cpp: Remove unused fields.
25041 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25043         * debug.cpp: Correctly compute base addresses of libraries, and use a
25044           thread-safe version of strtok.
25046 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25048         * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
25049           - it's now necessary to explicitly disable it in order to get rid of it
25050           instead of relying on a default flag to have the right value in order to
25051           get it. Makes video work with mopen again.
25053 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25055         * pipeline.cpp: Fix a crash.
25057 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25059         * mplayer.cpp: Remove Instance (), it's redundant.
25060         * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
25061           everything in the audio player with one semaphore, it simplifies things
25062           and removes a couple of problems helgrind found.
25063         * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
25064           audio player as well. Use delayed unreffing in destructors which may be
25065           called on worker threads.
25067 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25069         * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
25070         * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
25071           thread-safe and making it thread-safe isn't worth it. Also use a pthread
25072           mutex instead of a glib mutex, since helgrind reports a lot of false
25073           positives for glib mutexes. Hold the mutex for the smallest amount of
25074           time possible, making it unnecessary to use a recursive mutex.
25076 2008-03-26  Michael Dominic K.  <mdk@mdk.am>
25078         * shape.cpp: Reverting the clip changes, it was bolox.
25080 2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
25082         * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
25083         the assert - it was only needed during implementation to make sure
25084         the bsearch worked correctly.
25085         (Mp3FrameReader::Seek): Same.
25087 2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25089         * media.cpp: Don't access any TimeManager instance from another thread, just
25090           call the static TimeManager::InvokeOnMainThread.
25092 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
25094         * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
25095         if Width/Height was specified. Fixes a bogus warning about infinity
25096         transformations.
25098 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
25100         * src/shape.cpp: When setting the clipping for the shape also include
25101         the transformations coming from stretching. This fixes
25102         test-shape-line-stretch3 test and the missing stripes on Silverlight
25103         showcase.
25105 2008-03-24  Chris Toshok  <toshok@ximian.com>
25107         * runtime.h (class Surface): add
25108         Surface::PropagateDirtyFlagToChildren.
25110         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
25111         duplicated code out of ProcessDownDirtyElements.
25113 2008-03-24  Chris Toshok  <toshok@ximian.com>
25115         * panel.cpp (Panel::FrontToBack): remove the tree walking
25116         code (where we walked up the hierarchy looking for cases where we
25117         shouldn't subtract.)  Instead, we always subtract if the local
25118         state says we can.  Instead of forcing all leaf elements to walk
25119         up to their parent panel, we assume they'll operate on local state
25120         as well, and give them a copy of the region to subtract their
25121         bounds from, instead of the real region.  We are sneaky.
25123         * uielement.cpp (UIElement::FrontToBack): Operate on our local
25124         state only, no walking up the tree.
25126 2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
25128         * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
25129         was seemingly getting layer 1 and layer 2 backwards.
25130         (mpeg_frame_length): Seems like we are never supposed to add 2
25131         bytes for 16bit crc?
25133         * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
25134         then don't bother applying kerning. Fixes 2 cases in
25135         LineBreakClasses.htm
25136         (TextLayout::LayoutWrap): Disable breaking after a
25137         G_UNICODE_BREAK_AFTER if we can break before the word as this
25138         seems to fix the last test case in LineBreakBasic1.htm
25139         (TextLayout::LayoutWrap): Reverted a fix that introduced a
25140         regression but didn't fix any known test cases.
25142 2008-03-21  Michael Dominic K.  <mdk@mdk.am>
25144         * src/runtime.cpp: When calling gdk_window_get_pointer in
25145         motion_notify_ to pop more hints actually use the results as they're
25146         more valid than x,y in the event passed. Without doing so, we're not
25147         getting the last mouse coords.
25149         Fixes the nasty problem that MouseEnter/Leave is not called once in a
25150         while.
25152 2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25154         * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
25155           MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
25156           with EventObject::GetSurface.
25158 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25160         * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
25161         font hack for now.
25163         * text.cpp (deobfuscate_font): New helper function used by
25164         TextBlock and Glyphs.
25165         (TextBlock::DownloaderComplete): Check for obfuscated fonts.
25166         (Glyphs::DownloaderComplete): Same.
25168         * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
25169         GUID from a string.
25170         (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
25171         (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
25172         since we no longer get passed zip files. Instead of extracting
25173         fonts from a zip archive, we now index the fonts in the
25174         directory (if they haven't already been indexed) and then try to
25175         find the best matching font from the indexed fonts.
25176         (IndexFontDirectory): New function to index all fonts in a
25177         directory (and all subdirs).
25178         (TextFont::TextFont): Changed for other API changes.
25180 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25182         * downloader.cpp (Downloader::IsDeobfuscated)
25183         (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
25184         Some new methods for replacing the original downloaded file with
25185         another tmp file that will need to be unlinked when the downloader
25186         is destroyed or a new file is requested.
25188         * utils.cpp (moon_copy_file): New convenience function.
25190 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25192         * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
25193         and unzipped state variables. Get rid of part_hash, no longer
25194         needed.
25195         (Downloader::CleanupUnzipDir): New method to cleanup the files
25196         extracted from any zip files we downloaded.
25197         (Downloader): Call CleanupUnzipDir ().
25198         (Downloader::GetDownloadedFile): New method that gets the original
25199         untouched downloaded file path.
25200         (Downloader::DownloadedFileIsZipped): New method to check to see
25201         if the downloaded file is a zip archive.
25202         (Downloader::GetDownloadedFilePart): A new method that replaces
25203         the old GetResponseFile() API, behaves the same as the old API.
25204         (Downloader::GetUnzippedPath): New method to get the unzip
25205         directory path (and unzip the downloaded file if it hasn't already
25206         been unzipped).
25207         (Downloader::Open): Cleanup any extracted zip files.
25209         * utils.cpp (moon_rmdir): New convenience function.
25211 2008-03-20  Larry Ewing  <lewing@novell.com>
25213         * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
25214         the surface first so that the changes to the properties cause
25215         invalidations.
25217 2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25219         * src.mdp: Added new files.
25221 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25223         * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
25225 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25227         * pipeline.h: Added two more error conditions.
25229 2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
25231         * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
25232         caching glyphs. Try to take full advantage of the pre-allocated
25233         glyphs array before clobbering previously loaded glyphs.
25235 2008-03-19  Michael Dominic K.  <mdk@mdk.am>
25237         * src/dependencyobject.cpp: Making the prop resolving a bit more
25238         gracefull (smart) in case of common mistakes. 
25240         Solves test-crash-gracefull-prop-resolving.xaml.
25242 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25244         * pipeline.cpp: We need to unlock the mutex before joining the
25245         thread. Fixes a dead-lock.
25247 2008-03-19  Geoff Norton  <gnorton@novell.com>
25249         * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
25250         repeated load.
25252 2008-03-19  Geoff Norton  <gnorton@novell.com>
25253         
25254         * yuv-converter.cpp:  More 64-bit fixes
25256 2008-03-19  Geoff Norton  <gnorton@novell.com>
25257         
25258         * yuv-converter.cpp:  Fix the test/cmp on x86-64
25260 2008-03-18  Geoff Norton  <gnorton@novell.com>
25262         * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
25263         CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
25264         gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
25265         clobbering (x)mm3 (green coefficient) when processing the high order
25266         pels.  I've reordered the method to remove some useless load/calc
25267         patterns that were there simply for readability and fixed the
25268         clobbering.
25269         
25270 2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
25272         * font.cpp (TextFontDescription::CreatePattern): Always return the
25273         original pattern.
25274         (TextFont::Load): No longer takes a fromFile argument.
25275         (TextFont::TextFont): Cache using the original pattern (which is
25276         what we really wanted to do originally, but were caching the
25277         "closest-match" pattern before which was wrong).
25278         (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
25279         FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
25280         wrapper API that is unnecessary.
25281         (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
25283 2008-03-18  Geoff Norton  <gnorton@novell.com>
25285         * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
25286         cache lines for the Y plane.
25287         
25288 2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
25290         * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
25291         * plugin-ffmpeg.h: Fix conditional swscale inclusion
25293 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25295         * animation.cpp:
25296         * animation.h: Adding a new virtual method GetValueKind to Animation
25297         that returns the kind/type of values that given animation generates
25298         (doubles, points, etc.).
25300         Modyfying the HookupStorage to check if the animation type matches the
25301         type that the animated property expects. If it doesn't, bail out with a
25302         helpfull warning in the style of:
25304         "Ellipse.Fill property value type is 'Brush' but animation type is
25305         'Color'"
25307         This fixes a crash in test-crash-color-anim-on-solid.xaml and all
25308         crashes where we try to animate ie. a color property using doubles.
25310 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25312         * animation.cpp: Even more smoothing for KeySpline.
25314 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25316         * dependencyobject.cpp: Enabling back the inheritance test for property
25317         resolving but only when dealing with non-attached properties. 
25319 2008-03-17  Geoff Norton  <gnorton@novell.com>
25321         * Makefile.am:
25322         * pipeline-ffmpeg.cpp:
25323         * pipeline-ffmpeg.h:
25324         * swscale-converter.cpp:
25325         * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
25326         out to a seperate file so it can be included optionally in the build.
25328 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25330         * mplayer.cpp: Show error message, not only error number, upon thread
25331           creation failure.
25333 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25335         * playlist.cpp, playlist.h: Add a way to determine if the playlist was
25336           created to play a single file, or if it was created from an asx file
25337           (IsSingleFile).
25339 2008-03-17  Chris Toshok  <toshok@ximian.com>
25341         * dependencyobject.cpp (EventObject::EventObject): reorder things
25342         to quiet g++.
25344 2008-03-17  Geoff Norton  <gnorton@novell.com>
25346         * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
25347         for locals.  Use posix_memalign and share the instance for the 
25348         lifespan of the converter.
25349         
25350 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
25352         * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
25353         index argument, apparently FreeType2 always set face->face_index
25354         to 0 for these type fonts, so don't rely on it being accurate.
25355         (FontPack::CacheFileInfo): Pass the index value as an argument to
25356         FontPackFileFace's ctor.
25357         (TextFont::TextFont): Do hash lookups based on the matched
25358         pattern, not the original pattern passed in.
25360 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
25362         * text.h: Added #include "layout.h"
25364         * font.cpp: Removed font.cpp's layout logic which has been
25365         rewritten in layout.cpp.
25366         (TextFont::HasGlyph): It seems that Silverlight may wrap text
25367         differently depending on whether the glyph is in the font?
25369         * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
25371 2008-03-17  Geoff Norton  <gnorton@novell.com>
25373         * yuv-converter.cpp: Ensure that our pointer alignment checks are
25374         64-bit safe.
25376 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25378         * animation.cpp: Interpolate linearly between keyspline values. This
25379         fixes the jags in test-animation-slow-keyspline.xaml.
25381 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25383         * animation.cpp: Fixes to the way we generate the KeySpline values to be
25384         more smooth an precise.
25386 2008-03-17  Larry Ewing  <lewing@novell.com>
25388         * runtime.cpp: go ahead and invalidate the toplevel before
25389         cleaning everything up. remove the disconnect call in
25390         DestroyWidget, all the handlers should be ok with getting called
25391         on fullscreen or the normal widget.
25393 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25395         * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
25396         line breaking logic.
25398 2008-03-14  Geoff Norton  <gnorton@novell.com>
25399         
25400         * yuv-converter.cpp: Remove some dead code.
25402 2008-03-14  Geoff Norton  <gnorton@novell.com>
25404         * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
25405         bounary.  Each pel will expand to 4 bytes.  Since we process 16
25406         pels at a time in SSE2 we need 64 output bytes per iteration.
25408         * yuv-converter.cpp: Remove the rest of the unaligned move/stores
25410 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25412         * xaml.cpp: (flush_char_data) free data inside GString since the
25413         Value constructed around it creates it's own copy.
25415 2008-03-14  Geoff Norton  <gnorton@novell.com>
25417         * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
25418         to get a 16byte alignment for SSE2.
25419         * yuv-converter.cpp: Remove most of our unaligned load/stores.
25421 2008-03-14  Larry Ewing  <lewing@novell.com>
25423         * collection.h:
25424         * error.h:     
25425         * eventargs.h, enventargs.cpp:
25426         * type.h, type.cpp: make EventArgs a subclass of DependencyObject
25427         and all that entails.  Still need to look over the properties.
25429         * runtime.cpp, runtime.h: expose EmitError for now.
25430         
25431 2008-03-14  Larry Ewing  <lewing@novell.com>
25433         * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
25434         with a a 16bit alignment for the yuv converter.
25436 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25438         * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
25439         own copy of the message.
25441 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25443         * font.cpp (TextRun::TextRun): Can't drop non-printable chars
25444         because soft-hyphen is apparently non-printable.
25446 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25448         * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
25449         happen now if the glyph does not exist in the font).
25450         (Glyphs::Render): Same.
25452         * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
25453         which takes a unichar and index. This is now the main
25454         implementation that the other GetGlyphInfo() and
25455         GetGlyphInfoByIndex() use. The glyph table is now indexed by index
25456         rather than unichar.
25458 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25460         * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
25461         without a specified index, these are ok.
25463 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25465         * brush.cpp: In ImageBrush, if the image has not been downloaded
25466         yet, draw nothing like SL does -- instead of the grayish shadow.
25468 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25470         * dependencyobject.cpp: Check the types of objects when
25471         resolving_property_paths and some more verbosity to the error
25472         reporting. Now test-crash-non-existing-animation-target-prop3
25473         fails with the proper warning.
25475         Also, terminate first on first error found.
25477 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25479         * dependencyobject.cpp: Even more verbose error reporting in the
25480         resolve_property_path ().
25482 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25484         * animation.cpp: Making the warning report proper error when can't
25485         resolve property on object. Now we're getting:
25487         "No property named
25488         (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
25489         on object ball, which has type Ellipse!"
25491 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25493         * animation.cpp: Check correctly if we have object and property
25494         before trying to hookup storage.
25496         Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
25497         but the warning message is still incorrect:
25499                 "No object named ball!"
25501         The object named "ball" exists but it doesn't have the requested
25502         property.
25504 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25506         * animation.cpp: Changing few printf's to g_warnings.
25508 2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
25510         * shape.cpp: Deal with different [start|end|dash] caps for lines 
25511         and polylines.
25513 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25515         * mplayer.cpp: Comment out printf.
25517 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25519         * mplayer.cpp: AudioNode::Play: property calculate the delay between the
25520           play position in the hardware and the pts we just sent to alsa, and
25521           subtract it from that pts.
25523 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
25525         * clock.cpp: use a monotonic clock if available to avoid issues with
25526         the system time changing.
25528 2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
25530         * layout.cpp (TextRun::TextRun): Don't drop non-printable
25531         chars... somehow soft-hyphen (0xAD) is non-printable according to
25532         glib and so breaks the LineBreakBasic1.htm test.
25533         (TextLayout::LayoutNoWrap): Keep appending words to the line until
25534         a line ends beyond max_width, we don't care where it begins (it
25535         could begin way beyond max_width for all we care).
25537 2008-03-13  Chris Toshok  <toshok@ximian.com>
25539         * text.cpp (~Glyphs): don't unref the fill, since we don't take a
25540         ref on it.
25542 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25544         * mplayer.cpp: Make this build on SLED until I find a proper workaround.
25546 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25548         * media.cpp: Update according to MediaPlayer changes.
25550 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25552         * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
25553         thread. Fixes #326902.
25555 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25557         * Makefile.am: Set our G_LOG_DOMAIN.
25559 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25561         * xaml.cpp: default_create_element_instance: Set the surface as soon as
25562           possible.
25564 2008-03-13  Michael Dominic K.  <mdk@mdk.am>
25566         * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
25567         behavior. When getting the keyframe for time additionally crawl back (if
25568         needed) to find the last non-null keyframe and non-null previous
25569         keyframe. By doing so we silently ignore the frames without values set
25570         and don't crash on nullable types.
25572         Fixes the crash in AnimationMatrix2.html/xaml and in the
25573         test-animation-null-keyframe.xaml test.
25575         Remving the XXX warnings about nullabled types from file since they
25576         don't apply anymore.
25578 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25580         * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
25581           Visual, we're already storing the surface in the EventObject.
25582         * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
25583           and comment out the warning, since with the current code it's entirely
25584           possible to unref a dependecyobject with no surface.
25586 2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
25588         * brush.cpp: compute relative transform as it's done in SL. We used to
25589         derelativize transform to match the absolute ones. Now we map the brush
25590         to a 1x1 square, apply the transform, and unmap back. It simplify the 
25591         computation a lot too. Fixes bnc #354892 and a bad gradient in 
25592         brushes.xaml.
25594 2008-03-12  Chris Toshok  <toshok@ximian.com>
25596         * media.cpp (expand_rgb_to_argb): use a different codepath if the
25597         rowstride isn't padded out to be divisible by 4 (or else we read
25598         off the end by a byte).
25600 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25602         * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
25604 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25606         * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
25607         * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
25608           pipeline correctly removes registered infos upon shutdown, so if we're
25609           initialized again we should also register again.
25610         * runtime.cpp: Call Media::Shutdown do shut down the media threads before
25611           doing anything else.
25613 2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
25615         * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
25617         * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
25618         TextRun's, if the Run contains \n's, break the text into
25619         non-linebreak and linebreak TextRun elements. Allows the
25620         TextLayout::Layout() logic to be simplified considerably.
25622 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25624         * dependencyobject.cpp: DependencyObject: Initialize our surface field to
25625           NULL.
25627 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25629         * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
25630           reporting so that the errors can easily be bubbled up the pipeline. Add
25631           a 'selected' field to IMediaStream, whether the media player is using
25632           that stream or not.
25633         * error.h: Add a MediaErrorEventArgs class.
25635 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25637         * pipeline.cpp: Propagate the surface from the media element to the media.
25639 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25641         * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
25642           IMediaStream, indicates whether the stream is being played or not.
25644 2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
25646         * dependencyobject.cpp: Add NULL check in method 
25647         RemovePropertyChangeListener since a bad XAML input can cause a
25648         NULL entry in the list.
25650 2008-03-12  Michael Dominic K.  <mdk@mdk.am>
25652         * runtime.cpp:
25653         * runtime.h:
25654         * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
25656 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25658         * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
25659           don't crash, print an error message. Dup all strings put into
25660           namespace_map, and free them all upon its destruction.
25662 2008-03-11  Larry Ewing  <lewing@novell.com>
25663         
25664         * collection.cpp (VisualCollection::VisualAdded): make sure we set
25665         the surface as the first step, dirty processing depends on it.
25666         Fixes OM_RemoveClearRemoveAt.htm regression.
25668 2008-03-11  Larry Ewing  <lewing@novell.com>
25670         * canvas.h:
25671         * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
25672         and Left when we are toplevel so that we can recompute our
25673         transform.
25675         * uielement.cpp: if we don't have a parent call GetTransformFor on
25676         ourself so that Top and Left are taken into account on toplevel
25677         canvases.  Fixes test-canvas-toplevel.xaml
25679 2008-03-11  Chris Toshok  <toshok@ximian.com>
25681         * clock.h, clock.cpp: a few changes, the most important
25682         being (ifdefed for now) code to put the timemanager to sleep when
25683         it's not needed for animations, rendering, or tick calls.  To do
25684         this we need a couple of changes to the clock code.  1) propagate
25685         the time_manager out to all clocks, so we can force it to tick the
25686         clock hierarchy the first time whenever a storyboard is started.
25687         2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
25688         in need of another tick."  Do the same for the tick call stuff,
25689         where the bool return value means "we have more tick calls
25690         pending."  Also, add a couple of methods to the
25691         TimeManager (NeedRedraw, NeedClockTick) which will start up the
25692         timemanager if it's asleep, and set the proper flag so it'll do
25693         the right work on the next tick.
25696         * uielement.cpp: notify the timemanager that we have a redraw to
25697         process.
25698         
25699         * runtime.cpp (Surface::realized_callback): tell the time manager
25700         to redraw us to get the process moving.
25702 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25704         * xaml.cpp: Work around the fact that it's not always safe to 
25705         call some expat functions, like XML_GetCurrentLineNumber, if the
25706         parsing failed early.
25708 2008-03-11  Chris Toshok  <toshok@ximian.com>
25710         * namescope.h, namescope.cpp: switch from reffing the objects to
25711         using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
25712         cycle with its namescope.  Also, short circuit out if we're
25713         registering the same object twice.  keeps us from having too many
25714         DestroyedEvents (since RemoveHandler only removes one).
25716         * dependencyobject.h, dependencyobject.cpp: move
25717         GetSurface/SetSurface to EventObject, and add unref_delayed as a
25718         method.  If the event object has a surface associated with it, add
25719         it to the surface's pending list of unrefs.  otherwise warn us and
25720         add it to the global list.  The warnings should be fixed as the
25721         global list really should go away.
25723         Also, before we free a value, make sure to remove our handler and
25724         unset the closure.
25726         Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
25727         this.  So if you compile with OBJECT_TRACKING on, nothing new
25728         happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
25729         variable to the id of the object you want to track.  Makes the
25730         turnaround time a little quicker.
25732         shift some things around in the header file while I'm making this
25733         change.
25735         * runtime.h, runtime.cpp: move some more methods to the .cpp from
25736         the .h, and also add the per-surface pending unrefs list.  This is
25737         basically a c&p of the global list from dependency.cpp.
25739         * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
25740         using EventObject's.
25741         
25742 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25744         * xaml.cpp: Add NULL check in dependency_object_add_child since
25745         parent->parent->item may be NULL in malformed XAML files.
25747 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25749         * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
25750           EstimatePtsPosition and remove the estimate parameter, it's never used.
25752 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25754         * runtime.cpp: No need to scream in printfs.
25756 2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
25758         * font.cpp (TextLayout::Layout): More fixes, this is getting
25759         gross.
25761 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
25763         * xaml.cpp: Avoid crashing if the PML does not start with a 
25764         M(ove) instruction.
25766 2008-03-11  Michael Dominic K.  <mdk@mdk.am>
25768         * src/: Moving implementations from .h to .cpp, leaving only
25769         setters/getters + simple constructors in .h.
25771 2008-03-11  Larry Ewing  <lewing@novell.com>
25773         * xaml.cpp (dependency_object_set_property): throw an error if we
25774         get here without a DependencyObject.  Fixes
25775         test-property-parsing.xaml
25777 2008-03-10  Larry Ewing  <lewing@novell.com>
25779         * panel.cpp:
25780         * uielement.cpp: add more checks to the parent tree.
25782 2008-03-10  Chris Toshok  <toshok@ximian.com>
25784         * dependencyobject.cpp (~DependencyObject): use
25785         g_hash_table_foreach_remove, so the dtor of one value can't access
25786         an already destroyed DO from another value.
25788 2008-03-10  Chris Toshok  <toshok@ximian.com>
25790         * namescope.cpp: don't explicitly unref the object when removing
25791         it.  instead use base_unref as the value-dtor for the GHashTable.
25792         This will cause unrefs when the hash table is destroyed in the
25793         dtor (a case we were missing before.)
25795         * collection.h, collection.cpp (class Collection): factor out the
25796         body of Collection::Clear into a non-virtual method that we can
25797         call from the dtor.
25799 2008-03-10  Larry Ewing  <lewing@novell.com>
25801         * uielement.cpp:
25802         * panel.cpp: make sure we don't subtract the region unless non of
25803         our anscestors have a slip mask.  This should be implemented in a
25804         more efficient way.
25806 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25808         * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
25810 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25812         * dependencyobject.h, dependencyobject.cpp: Enable object counting when
25813           DEBUG is defined.
25814         * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
25815         * pipeline.cpp: Remove printfs.
25817 2008-03-10  Larry Ewing  <lewing@novell.com>
25819         * geometry.h:
25820         * geometry.cpp: make IsBuilt check for actual path data as well
25821         then use it everywhere we need it.  Invalidate the path if the
25822         figures change.  Fixes test-transform-clip.htm.
25824 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25826         * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
25828 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25830         * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
25831           #368461.
25833 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25835         * media.cpp: Update according to pipeline changes. TryOpen: our
25836           downloaded_file field may change when we call MediaOpened, so save a
25837           local copy before calling MediaOpened. Unref our playlist upon
25838           destruction, and 
25839         * mplayer.cpp: Update according to changes in the pipeline.
25840         * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
25841           rest aren't used. Make the remaining method take the stream as a
25842           parameter, and the resulting frame will be put in the closure. Also
25843           handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
25844           case just try again with the next frame. Make MediaWork ref/unref the
25845           fields that can be ref counted. 
25846         
25847 2008-03-10  Chris Toshok  <toshok@ximian.com>
25849         [ Fixes bug #368460 ]
25850         * collection.cpp (Collection::SetVal): make sure to unregister the
25851         name of the object(s) we remove from the collection.
25852         (Collection::Remove): same.
25853         (Collection::RemoveAt): same.
25854         (Collection::Clear): same.
25856         * namescope.cpp (NameScope::RegisterName): ref the object.
25857         (NameScope::UnregisterName): unref the object.
25859 2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
25861         * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
25862         Silverlights TextWrapping="Wrap" bug where it doesn't ever break
25863         the last word.
25865 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25867         * src.mdp: Updated.
25869 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25871         * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
25872         * runtime.cpp: Use GetRefCount, not refcount.
25874 2008-03-10  Chris Toshok  <toshok@ximian.com>
25876         * runtime.h, runtime.cpp: add surface_get_time_manager.
25878         * downloader.h, downloader.cpp: add downloader_get_surface.
25879         
25880 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25882         * runtime.cpp:
25883         * runtime.h:
25884         * shape.cpp: Making the shape-caching a runtime parameter
25885         (shapecache=yes). Turned off right now.
25887 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25889         * shape.cpp: Tiny refactoring to the surface-size calculation code.
25891 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
25893         * runtime.h:
25894         * shape.cpp: Adding functionality to limit the amount of caching
25895         happening on one surface. Currently set to ~6mb. 
25897 2008-03-09  Larry Ewing  <lewing@novell.com>
25899         * mplayer.cpp: fix another place that used the wrong stride.
25901 2008-03-09  Geoff Norton  <gnorton@novell.com>
25903         * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
25904         instrucitons.
25906 2008-03-09  Geoff Norton  <gnorton@novell.com>
25908         * yuv-converter.cpp: Detect the CPU features at runtime.  We
25909         should now be able to distribute a 32-bit SSE2/MMX build to
25910         non SSE2/MMX machines
25912 2008-03-09  Geoff Norton  <gnorton@novell.com>
25914         * yuv-converter.cpp: Implement runtime fallbacks in the Convert
25915         function (TODO: Still need to runtime detect SSE2/MMX) 
25917 2008-03-09  Larry Ewing  <lewing@novell.com>
25919         * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
25921 2008-03-09  Larry Ewing  <lewing@novell.com>
25923         * mplayer.cpp (MediaPlayer::Open): use the proper stride
25924         calculation functions.
25926 2008-03-08  Geoff Norton  <gnorton@novell.com>
25928         * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
25929         codepath along with some code cleanup.  Still some more cleanup
25930         to do for runtime detection of CPU features.
25932 2008-03-08  Geoff Norton  <gnorton@novell.com>
25934         * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
25935         These coefficients are far more sane now and our lum change is 
25936         reflected properly.
25938 2008-03-08  Chris Toshok  <toshok@ximian.com>
25940         * clock.cpp (TimeManager::SourceTick): larry gets credit for
25941         spotting this problem and suggesting the fix.  remove the
25942         hysteresis code, and *always* set a new timeout, based on what our
25943         idea of the timeout and the amount of time we spent rendering the
25944         previous frame.  This smooths things out immensely, removes (for
25945         me) the animation stutters induced by audio in sprawl, and results
25946         in fewer dropped frames.
25948 2008-03-08  Geoff Norton  <gnorton@novell.com>
25950         * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
25951         and b was pulling the wrong l/h value.
25953 2008-03-08  Chris Toshok  <toshok@ximian.com>
25955         * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
25956         accessing dob->refcount.
25957         (Value::CreateUnref): same.
25959         * dependencyobject.h, dependency.cpp (class EventObject): reorder
25960         this class definition so that we don't have multiple
25961         public/protected/private areas.  confusing as hell :) Also, move
25962         the implementations of the non-performance critical things into
25963         the .cpp file, as they were making the .h rather cluttered (ctor,
25964         dtor, weak ref/unref.)  Lastly, make almost everything private
25965         instead of public (most importantly the refcount.)
25967         * debug.h, debug.cpp: random code cleanup.  we don't need to be
25968         concerned with adding some additional stack methods to the plugin
25969         in the DEBUG case, so go ahead and just use DEBUG here instead of
25970         STACK_DEBUG.
25972 2008-03-08  Chris Toshok  <toshok@ximian.com>
25974         * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
25975         extern guint32 moonlight_flags.
25977         * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
25978         converter, otherwise use ffmpeg.
25980         * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
25981         flags, and (my god) put the extern moonlight_flags here.
25983         * runtime.cpp: add yuv converter options. use
25984         MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
25985         "converter=ffmpeg".
25987 2008-03-08  Geoff Norton  <gnorton@novell.com>
25989         * yuv-converter.cpp: Clear the mmx state when we're done
25990         processing.  Fixes most problems on x86_32.
25992 2008-03-08  Geoff Norton  <gnorton@novell.com>
25994         * pipeline.cpp: Disable YUV converter, its crashing on x86_32
25995         currently.
25997 2008-03-08  Geoff Norton  <gnorton@novell.com>
25998         
25999         * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
26000         * pipeline.cpp: Register YUV converter here.
26002 2008-03-08  Geoff Norton  <gnorton@novell.com>
26004         * yuv-converter.cpp:  Remove some code duplication and refactor
26005         to support register starved implementations.
26007 2008-03-08  Geoff Norton  <gnorton@novell.com>
26009         * Makefile.am: Add yuv-converter.cpp to the build
26010         * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
26011         libswscale.
26012         * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
26014 2008-03-08  Chris Toshok  <toshok@ximian.com>
26016         * clock.h, clock.cpp, animation.cpp: a few clock related changes.
26018         1. Revert the change that uses "forward" to tell if we're moving
26019         forward or not.  This isn't the only indicator, as a parent clock
26020         might be ticking backward, so we really do need to use "our_delta"
26022         2. Also, we need to not clamp the time of the clock (on either
26023         end) when we're filling, as if the parent's duration is longer
26024         than ours and they autoreverse, there needs to be some padding in
26025         the reverse direction before we start again.
26027         3. Only call ComputeBeginTime() on a newly created clock if the
26028         timeline has a begin time specified.  Otherwise, use
26029         BeginOnTick/GetBeginOnTick to make it begin on the next tick.
26030         This fixes the chess animation breakage.  The problem was caused
26031         by us computing the begin time immediately in Storyboard::Begin,
26032         which would calculate the clock's begin time relative to the
26033         *previous* tick.  on the next tick, the clock was almost always at
26034         1.0 progress, which caused the animations to skip directly to the
26035         end.
26037 2008-03-08  Chris Toshok  <toshok@ximian.com>
26039         * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
26040         dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
26041         assert in a plugin (even if people are running a debug build it's
26042         not exactly nice to bring down their browser.)
26044 2008-03-07  Chris Toshok  <toshok@ximian.com>
26046         * value.cpp (Value::CreateUnrefPtr): don't assert here.
26047         (Value::CreateUnref): same.
26049 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26051         * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
26052           it's not initialized, print a warning and re-initialize it.
26054 2008-03-08  Fernando Herrera  <fherrera@novell.com>
26056         * pipeline.cpp:
26057         * playlist.cpp:
26058         * playlist.h: Add support for ASX2 playlist files returned by
26059         mediaservers when requesting a mmsh file over plain http. Fixes
26060         http://channel9.msdn.com.
26062 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26064         * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
26065           case-insensitively.
26067 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26069         * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
26070           derived classes protected.
26071         * media.cpp: Update according to pipeline changes. TryOpen: our
26072           downloaded_file field may change when we call MediaOpened, so save a
26073           local copy before calling MediaOpened.
26075 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26077         * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
26078         * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
26079           TimeManager instance to add the timeout to.
26081 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
26083         * downloader.cpp: Fix access to Status from JScript.
26085 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26087         * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
26088           more frames.
26090 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
26092         * brush.cpp: Fix default value for ColorInterpolationMode (js
26093         unit tests)
26094         * parsertest.cpp: Adapt to API change.
26095         * xaml.cpp|h: Change value_from_str[_with_typename] to return a
26096         bool since NULL can be a valid Value in some cases (e.g. empty
26097         stuff that should not reset the DO default values).
26099 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26101         * mplayer.cpp: Add a null check before accessing any time managers.
26103 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26105         * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
26106           accessing the field.
26107         * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
26108           the field. Update according to pipeline changes.
26109         * mplayer.cpp, mplayer.h: Update according to pipeline changes.
26110         * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
26111           can be ref counted. Make MediaClosure more intelligent by ref/unreffing
26112           the context and media fields. All variations of MediaWork has a closure,
26113           so move the closure field out of the union. This simplifies
26114           Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
26115           not cause any reads/seeks which may block. Remove SetQueueCallback, the
26116           request takes a closure now. Implement an ASXDemuxer to read ASX files.
26117         * sizes.cpp: Updated.
26118         * playlist.h, playlist.cpp: First part of the new playlist support.
26120 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26122         * dependencyobject.cpp: Make the output in EventObject::Track print
26123           atomically. Really avoids a lot of confusion if several threads are
26124           printfing at the same time.
26126 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26128         * debug.cpp: Add a couple of null checks.
26130 2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
26132         * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
26133         (TextLayout::Layout): Don't include trailing lwsp in the line
26134         width calculation unless it is the last line.
26135         (TextLayout::Layout): Don't include trailing empty lines in the
26136         height calculation.
26138 2008-03-06  Chris Toshok  <toshok@ximian.com>
26140         * clock.h, clock.cpp: some changes to make TimeManager a
26141         per-surface item, instead of a singleton/global.  The time manager
26142         creates a root clock group, just like Surface used to, which is
26143         the parent of all storyboards for a surface.
26144         
26145         * dirty.h, dirty.cpp: remove the method prototypes and globals -
26146         switch everything to be Surface:: methods.
26147         
26148         * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
26149         for the root clock, and create a TimeManager instead.  Also, add
26150         the dirty methods/fields to Surface, even though the
26151         implementation still lives in dirty.cpp.  Also, call
26152         toplevel->SetSurface(NULL) early in our dtor so that elements can
26153         react before, e.g., the time manager has been destroyed.
26155         * media.h, media.cpp: use the surface's TimeManager instead of a
26156         global one.  Also override SetSurface so we can tell if we're
26157         losing access to it, and remove our timeout accordingly.
26159         * mplayer.cpp: use the media element's TimeManager.
26161         * visual.h, visual.cpp: add GetTimeManager() method, which just
26162         does GetSurface()->GetTimeManager().
26164         * dependencyobject.cpp (base_unref_delayed): as much as I hate to
26165         do this, use a g_idle instead of a tick call here, since we have
26166         no access to the surface.
26168         * animation.cpp (Storyboard::Begin): the surface no longer has the
26169         root clock group, the surface's TimeManager does.
26171         * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
26172         our children.
26174         * uielement.h, uielement.cpp: translate global dirty calls into
26175         surface calls, and override SetSurface to remove ourselves from
26176         the dirty list if we're losing our surface.
26178         * eventargs.cpp: translate global dirty calls into surface calls.
26179         
26180 2008-03-06  Michael Dominic K.  <mdk@mdk.am>
26182         * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
26183         child clocks. Othewise children always get a small delta and keep
26184         going beyond the parent Duration bounds. Fixes the contrained
26185         storyboard examples.
26187         Also making the forward/backward ComputeNewTime behavior depend on
26188         'forward' instead of out_delta (which can be 0 if hitting bounds).
26190 2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
26192         * transform.cpp: Fix Matrix default values to match identity 
26193         matrix (and fix one js unit test).
26195 2008-03-05  Larry Ewing  <lewing@novell.com>
26197         * shape.cpp: drop the code that checks stretch when building the
26198         paths for polyline and polygon.  Fix the condition for translation.
26200 2008-03-05  Larry Ewing  <lewing@novell.com>
26202         * shape.h:
26203         * shape.cpp: refactor the stretch code slightly and fix the
26204         original stretch tests (that passed the harness but are clearly
26205         wrong).
26207 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26209         * media.h: Made destructors in objects deriving from EventObject protected,
26210           preventing 'delete obj' and stack-allocation for these objects.
26211         
26212         * playlist.cpp: Can't delete downloaders anymore, unref it.
26214 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26216         * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
26217           dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
26218           namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
26219           trigger.h, uielement.h, visual.h: Made destructors in objects deriving
26220           from EventObject protected, preventing 'delete obj' and stack-allocation
26221           for these objects.
26222         * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
26223         * dirty.h: Added header.
26225 2008-03-05  Chris Toshok  <toshok@ximian.com>
26227         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
26228         front-to-back rendering the default.
26230 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26232         * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
26233           trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
26234           media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
26235           runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
26236           calldata instead of a gpointer.
26237         * error.h: Added EventArgs, a base class for all *EventArgs.
26238         * collection.h: Make ChangeEventArgs inherit from EventArgs.
26239         * uielement.cpp: Create all *EventArgs on the heap and simply the code a
26240           bit.
26241         * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
26242         * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
26243           *EventArgs. Added MarkerReachedEventArgs.
26244         * brush.cpp: Updated event handling to take an EventArgs* calldata instead
26245           of a gpointer. ~ImageBrush: don't delete, unref.
26247 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26249         * value.cpp: Fix warning.
26251 2008-03-05  Larry Ewing  <lewing@novell.com>
26253         * shape.cpp: Fix line, polyline and polygon to apply stretches
26254         properly (modulo pesimistic shape bounds bugs).  Mostly fixes
26255         test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
26256         and test-shape-polygon-stretch2.xaml. 
26258         * shape.h: move stretch transform out of Path and into Shape.
26260         * stylus.h:
26261         * stylus.cpp: include the strokes in the subtree bounds so that we
26262         will get invalidations and update bounds when the collection
26263         changes.  There are still potential bounds issues point changes,
26264         those are being looked into.  Fixes invalidation issues in
26265         test-inkpresenter-position and test-inkpresenter-scale.
26267 2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26269         * xaml.cpp: Add a null at the end of the namespace array.
26271 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
26273         * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
26274         white space into a simple space.
26275         (TextLayout::Layout): Treat embedded \n's as LineBreaks
26276         (TextLayout::Layout): When calculating the width of a line that
26277         ends in a space, don't include the width of the space char -
26278         Silverlight doesn't seem to.
26279         (TextLayout::Layout): Don't pad the height. Don't pad the width
26280         either, altho it seems like a padding of +2.0 is about right but
26281         ONLY if the text is in a canvas? See OMTextInline.htm's
26282         actualWidth/Height measurements as well as the out-of-tree
26283         measurement.
26285         * xaml.cpp (char_data_handler): Always create the GString cdata,
26286         we need to note leading lwsp which the old implementation didn't.
26287         (flush_char_data): Try to emulate Silverlight's chug/chomp
26288         behavior more closely.
26290 2008-03-05  Chris Toshok  <toshok@ximian.com>
26292         * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
26293         to panel's OnSubPropertyChanged if we don't handle it.
26295         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
26296         make sure we don't call this method with NULL args.  Also, remove
26297         larry's g_warning (which wasn't the case, i tested with sprawl!),
26298         and also remove the check for matching property/parent type for
26299         attached properties.  this will break controls.
26301         * transform.h, transform.cpp: it used to be that logical parents
26302         of children could rely on OnSubPropertyChanged being invoked for
26303         any property change.  This is no longer the case - the only
26304         instance where it still happens is if there's an attached property
26305         involved.  All other cases have to use OnCollectionChanged.  So,
26306         switch OnSubPropertyChanged to OnCollectionChanged here.
26308 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
26310         * text.cpp (TextBlock::OnCollectionChanged): We need to update
26311         bounds/text even if element_args is NULL (because adding/removing
26312         an item still changes our text).
26313         (Inline::OnPropertyChanged): Use args->new_value.
26315 2008-03-05  Chris Toshok  <toshok@ximian.com>
26317         * transform.h, transform.cpp: remove
26318         TransformCollection::OnSubPropertyChanged.  it was gumming up the
26319         works.
26321 2008-03-05  Larry Ewing  <lewing@novell.com>
26323         * shape.cpp: disable the shape caching code for now unless
26324         USE_OPT_SHAPE_SURFACE_CACHING=1.
26326 2008-03-05  Michael Dominic K.  <mdk@mdk.am>
26328         * Makefile.am:
26329         * enums.c:
26330         * enums.h:
26331         * xaml.cpp: Taking out all the enum->str (and vice versa) code from
26332         xaml.cpp and putting it into a new file -> enum.c + some utilities. 
26334         The enum<->str code is not specific to xaml and is usefull from plugin as
26335         well.
26337 2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
26339         * media.cpp: close the pixbuf_loader to load the small images too.
26341 2008-03-04  Chris Toshok  <toshok@ximian.com>
26343         * runtime.cpp (Surface::expose_to_drawable): re-enable the
26344         clearing of the cairo surface, but only if we have a
26345         widget (i.e. not in the windowless plugin case.)  Should fix
26346         translucent desklets without breaking the plugin.
26348 2008-03-04  Chris Toshok  <toshok@ximian.com>
26350         [ rather large change, reworking much of the property change event
26351         system to be a little smaller api surface-wise, and also cleaning
26352         up uses of it to remove some of the accumulated cruft that we'd
26353         developed over the past 10 months.]
26354         
26355         * dependencyobject.h, dependencyobject.cpp: A few key changes:
26357         1. Attach -> AddPropertyChangeListener
26358            Detach -> RemovePropertyChangeListener
26359            NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
26361            This was done to remove the confusion between "attached"
26362            properties and our use of the word "attach" to mean "listen for
26363            property changes".  Attached properties are those which
26364            implicitly notify the parent when they're changed.
26365         
26366            OnChildPropertyChanged is gone.  Canvas (the only user of it)
26367            now uses OnSubPropertyChanged to deal with child property
26368            changes.
26370         2. *PropertyChanged methods take a
26371            structure (PropertyChangedEventArgs) that contains the
26372            DependencyProperty, as well as the old and new values of it.
26373            This was to remove the need for almost every
26374            OnPropertyChangedMethod to immediately call GetValue on the
26375            property.  Passing the old value requires changing the
26376            current_values hash to not have a value destructor, so we have
26377            to manually delete values again.
26379         3. Reordered the args for
26380            AddPropertyChangeListener/RemovePropertyChangeListener so that
26381            the listener comes first and the second arg defaults to NULL.
26382            Cleans up a bit of the use of this method globally.
26384         * animation.h, animation.cpp: track OnSubPropertyChanged changes.
26386         * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
26387         LinearGradientBrush::OnPropertyChanged,
26388         RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
26390         also lots of changes to use args->new_value instead of calling
26391         GetValue(property).
26393         Clear up confusion regarding the meaning of the property passed to
26394         AddPropertyChangeListener.
26396         * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
26397         OnSubPropertyChanged.
26398         
26399         * collection.h, collection.cpp (Node::Node): don't add parent as a
26400         listener for every property change here.  We handle this
26401         specifically (and automatically) in
26402         DependencyObject::NotifyListenersOfPropertyChange, but only for
26403         attached properties.
26404         (Node::~Node): don't remove the listener here either.
26406         lots of tracking the DO api changes here too.
26408         * control.h, control.cpp: track On*PropertyChanged changes.
26410         * font.cpp: fix some warnings
26412         * frameworkelement.h, frameworkelement.cpp: track
26413         On*PropertyChanged changes.
26414         
26415         * geometry.h, geometry.cpp: track On*PropertyChanged changes.
26416         
26417         * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
26418         lot of the empty blocks here - there's nothing to do for these
26419         properties, so we might as well not bloat the code.  Also, use
26420         new_value when we can.
26421         (Image::DownloaderComplete): add a (I hope) suitably nasty comment
26422         about calling brush->OnPropertyChanged directly.  code shouldn't
26423         do this, we should figure out if we can just set the property, and
26424         if so, do that.  otherwise something else is broken.
26425         (Image::OnPropertyChanged): use new_value where we can.
26427         * panel.h, panel.cpp: remove the cached background field.  It
26428         wasn't used except to Attach/ref + Detach/unref it, and that's
26429         handled automatically by the DependencyProperty machinery.
26430         Otherwise just track the On*PropertyChanged api changes.
26432         * shape.h, shape.cpp: similarly, we don't need to ref/attach our
26433         cached stroke and fill fields.  They're populated for us (and
26434         ref'ed/unref'ed as needed), so we don't need anything additional
26435         here.  Use new_value instead of GetValue in OnPropertyChanged.
26436         Also, factor out some redundant code from all the subclass
26437         OnPropertyChanged methods that was nearly the same as the
26438         Shape::OnPropertyChanged code for it.
26440         * stylus.h, stylus.cpp: On*PropertyChanged api changes.
26442         * text.h, text.cpp: mostly On*PropertyChanged api changes, and
26443         lots of using new_value instead of GetValue, but also get rid of
26444         the cached TextBlock foreground instance field.  It's easy enough
26445         to fetch when we need it in the ::Paint method, and the
26446         dependencyobject stuff already refs and attaches to it.
26448         * transform.h, transform.cpp: lots of On*PropertyChanged api
26449         changes, and using new_value instead of GetValue.
26451         * uielement.h, uielement.cpp: remove the cached opacityMask
26452         field (it wasn't used except for attach/detach, which is handled
26453         for us.)  The usual On*PropertyChanged changes as well as using
26454         new_value instead of GetValue.
26455         
26456 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26458         * xaml.cpp (style_simulations_map): There's only one
26459         StyleSimulation value, and that is None.
26461         * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
26462         width and the text is not part of the first run on a line, break
26463         at the beginning of the Run. This seems to be what Silverlight
26464         does in OMTextInline.htm.
26466 2008-03-04  Larry Ewing  <lewing@novell.com>
26468         * eventargs.cpp: update the dirty list before trying calculating
26469         relative locations.
26470         
26471         * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
26472         here so that our hit testing has up to date bounds.
26475         * dirty.h: remove the prototypes for up/down since it isn't safe
26476         to split the up/down passes.
26478         * src/uielement.cpp: remove dirty processing.
26479         
26480 2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
26482         * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
26483         create the pixbuf from a file, allowing partial rendering of broken
26484         imagefiles, like in Image.htm
26486 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26488         * text.cpp (Inline::GetDefaultValue): Implemented.
26490 2008-03-04  Michael Dominic K.  <mdk@mdk.am>
26492         * src/uielement.cpp: When calling uielement_transform_point, make sure our
26493         transforms are up-to-date (not dirty).
26495         Since we're updating the transform matrices only in the expose (dirty)
26496         callback it can happen that two ie. mouse events arrive before we get to
26497         the expose. If the first mouse event invalidated the transform and the
26498         second one relies on the transform (ie. tries to obtain relative mouse
26499         position) it'd get bogus values since the transform has not been
26500         regenerated yet.
26502         Fixes the drag & drop behaviour in SL ink journal (the selection tool).
26503         Fixes: #362227.
26505 2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
26507         * src/dirty.cpp:
26508         * src/dirty.h: Splitting the process_dirty_elements () into two individual
26509         chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
26510         process_dirty_elements () now calls both. 
26512         The point here is that we need to process down dirty elements (call
26513         process_down_dirty_elements ()) from other contextes as well.
26515 2008-03-03  Larry Ewing  <lewing@novell.com>
26517         * uielement.cpp:  Call FullInvalidate when clip changes so that
26518         our subtree bounds are updated and invalidated.  Make sure we
26519         don't reset the forced invalidate flag.
26520         
26521         * dirty.cpp: invalidate subtree bounds on forced invalidations.
26522         Fixes test-clip-invalid-update.htm.
26523         
26524 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26526         * text.cpp (TextBlock::GetText): New method to generate a string
26527         representing the Text property from the inlines.
26528         (TextBlock::SetText): New method (split out from the old
26529         ::SetValue code) to parse the newly set text string into a list of
26530         Inlines and update out InlinesProperty if changed. Returns whether
26531         or not the inlines property changed.
26532         (TextBlock::OnPropertyChanged): Call SetText() to update out
26533         Inlines if the TextProperty value was changed by an outside
26534         source. If the InlinesProperty was changed by an outside source,
26535         update our TextProperty.
26536         (TextBlock::OnCollectionChanged): Update our TextProperty if an
26537         Inline was added or removed or if a Run element had its
26538         TextProperty changed.
26540 2008-03-03  Chris Toshok  <toshok@ximian.com>
26542         * animation.cpp: plug a memory leak in the 3
26543         UsingKeyFrames::GetCurrentValue methods.
26545 2008-03-03  Chris Toshok  <toshok@ximian.com>
26547         * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
26548         return a cairo_matrix_t instead of a pointer to the
26549         internal (mutable) field, and update its only use.
26551 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26553         * media.cpp (media_element_get_audio_stream_index): Fixed to
26554         handle nullable value.
26555         (media_element_set_audio_stream_index): Same.
26556         (media_init): Register the AudioStreamIndex property as being
26557         nullable.
26558         (MediaElement::Reinitialize): Set the CurrentStateProperty to
26559         "Closed".
26561 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26563         * media.cpp (media_init): Register AudioStreamCount,
26564         BufferingProgress, CanPause, CanSeek, CurrentState,
26565         NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
26566         as being read-only.
26568         * text.cpp (text_init): Register ActualWidth and ActualHeight
26569         properties as ReadOnly.
26571         * transform.cpp (Matrix::GetValue): Removed.
26572         (Matrix::SetValue): Removed.
26573         (Matrix::OnPropertyChanged): Implemented.
26575 2008-03-01  Larry Ewing  <lewing@novell.com>
26577         * shape.cpp (Shape::DoDraw): refactor slightly.
26579         * geometry.cpp: fix extents calculation when there is only a fill
26580         on the shape.  Fixes test-path-stretch-fill-extents.xaml.
26581         
26582         * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
26583         negative widths or heights have no bounds.
26584         (Shape::DoDraw): Silence warning.
26586 2008-02-29  Larry Ewing  <lewing@novell.com>
26588         * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
26589         match StretchAndShapes.xaml.
26591         * collection.cpp (VisualCollection::Remove): don't fire
26592         VisualRemoved unless we are going to actually remove the item.
26593         Fixes OM_RemoveClearRemoveAt.htm.
26595 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26597         * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
26598         the z_sorted array before sorting so that we can be sure the end
26599         result will be a stable sort.
26600         (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
26601         because we need to take index into account. Instead, grow our
26602         array and call ResortByZIndex().
26604 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26606         * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
26607         an even more fun memory corruption bug.
26609 2008-02-29  Larry Ewing  <lewing@novell.com>
26610         
26611         src/control.cpp:
26612         src/frameworkelement.cpp:
26613         src/geometry.cpp:
26614         src/media.cpp:
26615         src/rect.cpp:
26616         src/rect.h:
26617         src/shape.cpp:
26618         src/text.cpp:
26619         src/uielement.cpp: Fix Rect::Transform, replace all occurances of
26620         bounding_rect_for_transformed_rect with Rect::Transform.
26622 2008-02-29  Larry Ewing  <lewing@novell.com>
26624         * geometry.cpp: apply transform to all bounds calculations.  Fixes
26625         test-geometry-bounds.xaml.
26627 2008-02-29  Larry Ewing  <lewing@novell.com>
26629         * geometry.cpp: Make sure geometry groups draw their children
26630         rather than just copying the paths so that local transforms are
26631         applied correctly.
26633 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
26635         * text.cpp (TextBlock::GetValue): Fixed memory leak.
26637         * media.cpp (MediaElement::GetValue): Fixed compile warning.
26639         * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
26640         rather than calling inline_get_*() which use GetValue().
26642         * font.cpp (TextFont::TextFont): Don't let the underline thickness
26643         be < 1.0
26645         * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
26646         Simplified.
26647         (DependencyObject::GetValue): Simplified.
26648         (DependencyObject::GetDefaultValue): New method to get the default
26649         value for a property (now used by GetValue()).
26651 2008-02-29  Larry Ewing  <lewing@novell.com>
26653         * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
26654         transform into account when computing bounds.  Fixes
26655         CGeometry_AddToRenderList.xaml
26657 2008-02-29  Larry Ewing  <lewing@novell.com>
26659         * shape.h:
26660         * shape.cpp: export calc_line_bounds.
26662         * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
26663         problems on Animation_TargetingAndHandoff.xaml.
26665 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26667         * pipeline.cpp: Add a missing const modifier.
26669 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26671         * mplayer.cpp: Use the first streams found in the media, not the last.
26673 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26675         * stylus.cpp: if there's an outline, draw a line of at least 2px.
26677 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26679         * brush.cpp: No longer ignore out-of-bounds offest in
26680         SetupGradient. Add the bounds stop with linearinterpolation
26681         between the nearest stop and the outofbounds one. Handle the
26682         degenerated case with only outofbounds stops.
26684 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
26686         * shape.cpp: Commenting a left-over debug g_warning.
26688         Additionally adding a protection against NULL in cache-size reporting (as
26689         experienced by rolf). However, if GetSurface () returns NULL in the Render
26690         callback... I guess we're screwed anyways.
26692 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
26694         * xaml.cpp:
26695         * xaml.h: Adding convert_property_value_to_enum_str function to
26696         check/convert if the value for the given property can be represented by an
26697         enum string. 
26699         It would be nicer to mover all the enums tables/resolving to a separate
26700         place in future instead of gluing it to xaml.cpp.
26702 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
26704         * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
26705         Stretch property.
26707 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
26709         * text.cpp (Glyphs::Render): Use horiBearingX for the first char
26710         in the Glyphs string just like we do for TextBlock rendering.
26712 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
26714         Fixes the last remaining issue in the TextRegressions.htm test.
26716         * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
26717         non-autogenerated <Run>'s.
26719         * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
26720         from the TextBlock's Text property as being auto-generated.
26722 2008-02-27  Larry Ewing  <lewing@novell.com>
26724         * shape.cpp: change the shape surface cache to cache in device
26725         coordinates and rework the candidate restrictions to reject
26726         huge shapes and allow scaled caches.
26728 2008-02-27  Larry Ewing  <lewing@novell.com>
26730         * shape.cpp: center the filled image within the new bounds.
26732 2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26734         * media.h, media.cpp: When a media is opened, seek to the current
26735         position.
26737         * value.cpp: ToString: Return 'NULL' if we're null.
26739 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26741         * src/animation.cpp: When storyboard is completed, Teardown the clocks
26742         only if we're realling stopping (not holding). Fixes the
26743         StoryBoard_ModifyProperty test.
26745 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26747         * clock.cpp: Make sure we actually hit the our_delta < 0 code 
26748         path. Fixes the AutoReversed/Repeated animations.
26750 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
26752         * shape.cpp: More cases to invalidate (free mem) of the surface cache.
26754 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
26756         * font.cpp (TextFont::TextFont): Precalculate underline position
26757         and thickness. Also, we need to adjust the position based on 1/2
26758         the underline thickness.
26759         (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
26760         (TextLayout::RenderLine): Same.
26762 2008-02-26  Chris Toshok  <toshok@ximian.com>
26764         * runtime.cpp (runtime_cairo_create): take the visual too, so the
26765         plugin can send ours in - we can't rely on the pixmap having a
26766         visual associated with it, because it's initialized with the
26767         _foreign api which doesn't fill in the colormap. yay.
26768         (Surface::Surface): if we're windowless don't create the widget.
26769         also, init render/render_data and invalidate/invalidate_data to
26770         NULL.
26771         (Surface::ConnectEvents): exit early if we're windowless.
26772         (Surface::Invalidate): call through the invalidate function if
26773         there is one.  otherwise, default behavior (if we have a widget).
26774         (Surface::Paint): exit early if no toplevel.
26775         (Surface::render_cb): call through the render function if there is
26776         on.
26777         (Surface::expose_to_drawable): this is most of the guts of
26778         expose_callback, changed to handle the case where we're already
26779         drawing to the backbuffer (in the windowless case) and therefore
26780         don't need the temporary pixmap.  Also, commented out some code
26781         that clears the contents - do we actually need this?  The comment
26782         for it is enormous...
26783         (Surface::expose_event_callback): just call expose_to_drawable
26784         with the widget's window.
26786         * runtime.h (class Surface): we need to make the gtk callbacks
26787         public since the plugin will be invoking them directly.  Also,
26788         switch the event methods to returning bools, and add a new method
26789         called expose_to_drawable, so the plugin can direct rendering to a
26790         pixmap in the windowless case.
26792         * uielement.h, uielement.cpp: change all the Emit* methods to
26793         return bool.
26795         * dependencyobject.h, dependency.cpp: make EventObject::Emit
26796         return true if there were handlers for the event, and false
26797         otherwise.
26799 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
26801         * text.cpp (TextBlock::TextBlock): Removed the useless
26802         text_block_set_text() call. This was just a broken hack meant to
26803         do what MDK's previous commit fixed the right way.
26805         * font.cpp (TextFont::UnderlinePosition): Fixed to take font
26806         y_scale metrics into consideration.
26807         (TextFont::UnderlineThickness): Same.
26809 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26811         * src/text.cpp: TextBlock when constructed by default has an empty
26812         Inlines collection instead of NULL. Along with all the previous
26813         commits fixes the OM_CreateAddInsert.htm test.
26815 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26817         * src/collection.cpp: Don't allow collection insert at negative
26818         position.
26820 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26822         * src/collection.cpp: Don't add the object to the collection if it
26823         already contains the object (return -1 instead).
26825 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
26827         * src/animation.cpp:
26828         * src/animation.h:
26829         * src/collection.cpp:
26830         * src/collection.h: The "Add" method of collections returns int (index of
26831         the element added), not bool. As explained in:
26833         http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
26835 2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
26837         * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
26838         through FontConfig, we need to parse the font's family name to
26839         extract styleistic info so we can do proper font name matching and
26840         style matching (e.g. "Myriad Pro Cond Black Italic" should match
26841         "Myriad Pro, Condensed Black Italic").
26843 2008-02-25  Chris Toshok  <toshok@ximian.com>
26845         * runtime.h, runtime.cpp: s/drawing_area/widget and
26846         s/DrawingArea/Widget
26848         * demo.cpp: same.
26850 2008-02-25  Michael Dominic K.  <mdk@mdk.am>
26852         * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
26853         can be called on the element to give it a hint that it should free it's
26854         cache for the time being.
26856         * src/collection.cpp:
26857         * src/panel.cpp:
26858         * src/panel.h: Forward CacheInvalidateHint to all children.
26860         * src/shape.cpp:
26861         * src/shape.h: Destroy the surface and path cache when hinted.
26863         In total improves our memory usage with surface/path caching, ie. in the
26864         Showcase.
26866 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
26868         * src/runtime.cpp:
26869         * src/runtime.h:
26870         * src/shape.cpp:
26871         * src/shape.h: Adding functionality to report the cache size usage. By
26872         default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
26874 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
26876         * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
26877         to expose a few more pixels but helps with surface caching.
26879 2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26881         * downloader.cpp: downloader_get_response_file: remove any directory
26882           components from the part name, otherwise the creation of the tmp file
26883           fails. If we're aborted, don't call any callbacks.
26884         * media.cpp: If we have a downloader and SetSource is called with a new
26885           downloader, abort the previous download, not only unref it, otherwise
26886           our callbacks and events may still get called from the old downloader.
26888 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
26890         * font.cpp (TextFont::TextFont): Simplified the fallback code.
26892 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
26894         Fixes Glyphs.xaml
26896         * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
26897         cluster mappings.
26898         (Glyphs::Layout): Properly handle glyph clusters.
26899         (Glyphs::Render): Same.
26901 2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26903         * media.cpp: When aborting a downloader, null out the write
26904         functions too.
26906 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26908         * src/clock.cpp: Emit the Completed event when Filling as
26909         well. Together with prev commit fixes: #359024 and #324935.
26911 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26913         * src/animation.cpp:
26914         * src/animation.h: Detach the AnimationStorage update handler from the
26915         clock when the clock is stopped -- prevents us from overriding the (just
26916         reset) base value with another update.
26918 2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
26920         * src/value.cpp: Implementing ToString () for DOUBLE.
26922 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
26924         * src/color.cpp: A slightly more relaxed/tolerant way of parsing
26925         the colors... it's the web and it's broken by default. Fixes:
26926         #362287 (the US candidates website).
26928 2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
26930         * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
26932 2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
26934         Fixes the TextBlockFontDownloads.htm test.
26936         * font.cpp (TextFontDescription::Set*): If the new value is not
26937         the same as the old, invalidate the loaded TextFont.
26938         (TextFont::TextFont): Always compare family names unless we're
26939         requesting the "Sans" (e.g. last) fallback font.
26940         (TextFont::TextFont): If the requested family name does not match
26941         the specified font file, fall back to a system font of the same
26942         name (we were doing this for zip archievs before, but not for
26943         specified ttf font files).
26945         * text.cpp (TextBlock::SetFontSource): If the downloader is null,
26946         set the font filename to null and invalidate the textblock.
26948 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26950         * media.cpp: Add a printf to inform when we're trying to load an
26951         mms stream.  Helps a lot when trying to identify sites depending
26952         on mms/streaming support.
26954         * runtime.cpp: Unref debug_selected_element upon
26955         destruction. Fixes a leak.
26957 2008-02-20  Michael Dominic K.  <mdk@mdk.am>
26959         * src/shape.cpp: Fixing the shape caching to work also with
26960         Path/Geometry.  Fixes: #362021.
26962 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26964         * media.cpp: MediaElement/Image: Remove event handlers when we abort the
26965           downloader, otherwise the handlers might be called after we're
26966           destroyed.
26968 2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
26970         * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
26971         know which, if any, parts of the URI to hide.
26972         (Uri::Parse): If we don't have a protocol, don't simply assume
26973         that the entire string is the filename. We might have a fragment
26974         attached, for example.
26976         * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
26977         get the font index (if a fragment is set). Also, use the parsed
26978         Uri's ::ToString() method to hide the fragment so that requesting
26979         the file actually works.
26980         (Glyphs::DownloaderComplete): Don't need to parse the URI here
26981         anymore, we've already got the index from OnPropertyChanged().
26983 2008-02-19  Jackson Harper  <jackson@ximian.com>
26985         * xaml.cpp: Parser error if we can't find the owner type or
26986         property name when setting properties.
26988 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
26990         * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
26992 2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26994         * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
26995           shortcomings.
26996         * media.cpp: Remove printf.
26998 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
27000         * moon-path.c: #if out moon_get_origin since it's not used 
27001         anymore. Change cairo_path_display output to be easier to read 
27002         with negative numbers.
27004 2008-02-18  Michael Dominic K.  <mdk@mdk.am>
27006         * src/media.cpp:
27007         * src/media.h: Load images slightly faster by skipping one pixbuf blit and
27008         doing the expansion + conversion in one step.
27010         Also fixing an ugly memory leak where all RGBA images loaded were leaked
27011         (two times in memory).
27013 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27015         * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
27016         being called from a timeout (unprotected) and we're potentially calling
27017         gdk_ invalidation functions. I think it only matters (in this case) 
27018         on non-X backends though. 
27020 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27022         * src/uielement.cpp: Moving the debug timers for rendering slightly and
27023         uncommenting them so that they work when TIMERS is enabled.
27025 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27027         * src/runtime.cpp:
27028         * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
27029         default) that changes your 'd' key into a special debug key. When pressed,
27030         a message is printed to the console (region start). When pressed again,
27031         another message is printed (region end). This is usefull to see what
27032         happens in a particular part of the program timeline (ie. after click). 
27034         Makes sense obviously only with timers debugging on and stuff.
27036 2008-02-14  Michael Dominic K.  <mdk@mdk.am>
27038         * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
27039         shows that SL runs by default at something around that. Also, with the
27040         recent fixes some sites are suffering from 24 (can run/look much better
27041         at higher fps).
27043 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
27045         * src/shape.cpp:
27046         * src/shape.h: Adding surface caching for shapes. The strategy
27047         is to cache big surfaces that have little transformations (such as
27048         ie. backgrounds, fade overlays, etc.). Improves performance greatly
27049         for many sites (ie. Showcase).
27051 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
27053         * src/uielement.cpp: Commenting out the timer in post-pre render as it's
27054         broken and blocks the compilation with timers on.
27056 2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
27058         * src/animation.cpp:
27059         * src/animation.h: Massive fix for our KeySpline animation calculation
27060         routines (which were broken and giving wrong values). According to:
27062         http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
27064         "...think of the horizontal axis as the pace with which the interpolation
27065         proceeds along the timing interval. The vertical axis is the resulting
27066         value for the animation's progress, yielded by the function that underlies
27067         the keySplines property. Another way of describing this is that the
27068         horizontal axis is the input unit time for the interval, and the vertical
27069         axis is the output unit time."
27071         Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
27072         a little bit ugly -- we waste 256 bytes per KeySpline to store
27073         pre-calculated values in a lookup table. But maybe it's not soo bad, since
27074         balf function (from prev implementation) was coming up top in the
27075         profiles anyways.
27077         The only other way I can (currently) think of would be to solve a cubic
27078         equation each time we poll the KeySpline for a value. That would be,
27079         however, a *massive* performance hit. 
27081         Hence the lookup solution for now (note: the generation of the table is
27082         very fast, no cubics involved).
27084 2008-02-11  Michael Dominic K.  <mdk@mdk.am>
27086         * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
27087         as it should... yes, our redraws are slow, but not *that* slow ;)
27089 2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
27091         * src/mplayer.cpp: If we have no audio devices present in the system,
27092         launch a special audio loop variant to still read/fetch audio (and discard
27093         it) so that the video playback is not blocked. Fixes: #341835.
27095 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
27096         
27097         * font.cpp (TextFont::TextFont): If the loaded font's family_name
27098         doesn't match the requested family name, fall back to the default
27099         font (it means the requested font doesn't exist on the system).
27100         (TextLayout::Layout): Added a 'first_char' state variable that can
27101         be used to figure out if if the current char is the first char on
27102         a line. This is needed for the wrapping logic.
27104 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
27106         Fixes some text layout bugs in TextBlockFontFamilies.xaml
27108         * xaml.cpp (flush_char_data): Now takes a string 'next_element'
27109         argument rather than a bool 'start' argument so that we can make
27110         sure that the previous and next element types are <Run>'s because
27111         lwsp between a <LineBreak/> and a <Run> or a </Run> and a
27112         <LineBreak/> should be ignored. Also, never g_strchomp() this
27113         cdata.
27114         (start_element_handler): Pass the name of the next element to
27115         flush_char_data().
27116         (end_element_handler): Pass NULL to flush_char_data() as the
27117         next_element argument.
27119 2008-02-08  Chris Toshok  <toshok@ximian.com>
27121         * media.cpp (MediaElement::Render): reorder things so that we're
27122         calculating the brush pattern matrix with the snapped pixels.
27124 2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
27126         * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
27128 2008-02-07  Chris Toshok  <toshok@ximian.com>
27130         * media.cpp (MediaElement::Render): snap to the pixel grid if
27131         we're not rotated/skewed.
27133 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
27135         * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
27137 2008-02-07  Larry Ewing  <lewing@novell.com>
27139         * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
27140         same as out of bounds stops.
27142         * shape.cpp: cache the results of CompouteShapeBounds in
27143         extents rect, use that value in GetSizeForBrush.
27145 2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
27147         Fixes a rendering glitch for xaml similar to:
27149         <TextBlock>
27150            <Run FontStyle="Italic">This </Run>is Dodger Blue
27151         </TextBlock>
27153         * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
27154         setting the value of a content_property (e.g. a Run).
27156 2008-02-07  Michael Dominic K.  <mdk@mdk.am>
27158         * src/color.cpp: Added support to parse scRGB-style color specificators
27159         (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
27160         should produce accurate-enough colors for most uses.
27162         http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
27164 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
27166         * shape.cpp|h: Split ComputeBounds to avoid calling functions 
27167         bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
27168         inside each shape. This will enable us to reuse the non-transformed
27169         value elsewhere too. This also fix (for me) the origin point that
27170         caused problems for some brushes. Started implementing methods 
27171         ComputeLargestRectangle[Bounds] to optimize drawing.
27173 2008-02-06  Chris Toshok  <toshok@ximian.com>
27175         * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
27176         want the untransformed size of the element.  otherwise we end up
27177         with a pattern matrix that scales things too large given that
27178         we're also scaling the element.  Fixes fullscreen mode in halo3
27179         and /fox video players (bug #335845).
27181 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27183         * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
27184           range, draw the current frame. If we're ahead of the range, do nothing
27185           (fixes some video/audio sync problems), and if we're behind drop frames.
27186           The range makes sure that we paint every frame even when the audio loop
27187           doesn't update the target pts as often as we're drawing video.
27189 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27191         * panel.cpp, runtime.cpp: Fix warnings.
27193 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27195         * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
27196           the entire loop, only when fetching packets. This allows packets to
27197           arrive from the pipeline while in the loop (especially noticable when
27198           decoding the video inside the loop).
27200 2008-02-06  Chris Toshok  <toshok@ximian.com>
27202         * uielement.cpp (UIElement::FrontToBack): use the media state
27203         accessors, and don't exclude Buffering state - we could be
27204         buffering with a frame rendered.
27206 2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
27208         * shape.cpp|h: Keep track if a rectangle has radii or not.
27209         * uielement.h: Add a flag for radii
27211 2008-02-06  Chris Toshok  <toshok@ximian.com>
27213         * uielement.cpp (UIElement::FrontToBack): make sure
27214         media_element_get_current_state != NULL before we strcmp it.
27216 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27218         * src.mdp: Updated.
27220 2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
27222         * brush.cpp: fix the radialgradientbrush setup.
27224 2008-02-05  Chris Toshok  <toshok@ximian.com>
27226         * collection.cpp (Collection::EmitChanged): new method.  Emit the
27227         Changed event and then call closure->OnCollectionChanged.  Also
27228         replace all references to closure->OnCollectionChanged to
27229         EmitChanged.
27231         * collection.h (class Collection): add ChangeEventArgs struct, and
27232         an EmitChanged method declaration.
27234         * type.h.in, type.cpp.in (Type::~Type): no need to free all the
27235         events explicitly.
27236         (Type::HideEvent): remove the event name from the hash so it's
27237         inaccessible from javascript.
27238         (Type::RegisterEvent): use g_hash_table_new_full so we can specify
27239         a destroy function for keys instead of doing the _foreach in the
27240         dtor.
27241         (types_init_manually): add the #if 0 here instead of type.cpp.
27242         oops.
27243         (types_init_register_events): register a Changed event for
27244         Collections.
27246 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
27248         * downloader.cpp (Downloader::ll_downloader_get_response_file):
27249         Simplified by using the new ExtractFile utility function from
27250         utils.cpp.
27252         * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
27254         * utils.cpp: New collection of utility functions.
27256 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
27258         * font.cpp: If a font is requested from a zip archive, extract the
27259         contents and try to figure out which font is the closest match to
27260         the one requested. Fixes bug #356044.
27262 2008-02-05  Chris Toshok  <toshok@ximian.com>
27264         * uielement.cpp (UIElement::FrontToBack): enable the rectangle
27265         code, and make sure to round in the bounds we're subtracting.
27266         this was causing the flashing white border on silverlight.net/fox.
27268 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
27270         * shape.cpp: Use existing MIN macro. Use local variables when
27271         available.
27273 2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27275         * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
27277 2008-02-05  Chris Toshok  <toshok@ximian.com>
27279         * runtime.h, runtime.cpp: add support for a "selected" element
27280         when in debug mode.  Also, make use of the Region methods instead
27281         of using region->gdkregion, which is private now.
27283 2008-02-05  Chris Toshok  <toshok@ximian.com>
27285         * region.h, region.cpp (class Region): add Offset().
27287 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
27289         * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
27290         populate it's moon_path (like others) so the data can always be 
27291         used.
27292         * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
27293         from a moon_path (Stephane) and moon_merge to merge a subpath into
27294         a main path.
27296 2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27298         * pipeline-ffmpeg.cpp: Remove another printf.
27300 2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
27302         * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
27303         to move.
27304         (FileSource::Peek): Slightly better fix.
27306 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27308         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
27309         estimate the stream position if not known rather than reading data
27310         to find out as we don't have to return an exact stream position.
27312 2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27314         * pipeline.h: Update comment.
27316 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
27318         * uielement.h:
27319         * shape.h:
27320         * shape.cpp: rename GetOringin into GetOriginPoint
27322         * brush.cpp: implement a bad origin computation (based on bounds)
27323         for Shape::Path
27325 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27327         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
27328         (FileSource::Peek): As before, only read as much as we need - but
27329         don't clobber what we had prebuffered, only clobber as much as w
27330         need to in order to make room for the new data - this way we make
27331         it more efficient to seek backward later (if need be).
27333 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
27335         * shape.h:
27336         * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
27337         from the path data instead of from bounds.
27339         * brush.cpp: translate the brushes with a translation matrix.
27341 2008-02-01  Larry Ewing  <lewing@novell.com>
27343         * brush.cpp: Make sure we use the brush opacity when computing the
27344         color stops.
27346 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27348         * pipeline.cpp (FindMpegHeader): Now checks for Xing and
27349         Fraunhofer VBRI headers.
27351 2008-01-31  Chris Toshok  <toshok@ximian.com>
27353         * uielement.h: include region.h
27355         * point.h: don't assume the right headers have been included
27356         before this file - include glib.h to make sure
27357         G_BEGIN_DECLS/G_END_DECLS is there.
27359         * region.h, region.cpp: split out the region code from
27360         rect.h/rect.cpp.
27362         * rect.h, rect.cpp: remove region code.
27364         * Makefile.am: add region.h/region.cpp
27366 2008-01-31  Chris Toshok  <toshok@ximian.com>
27368         * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
27369         use Region::Draw instead).
27371         * panel.cpp: remove references to runtime_cairo_region, and switch
27372         to the new Region* copy ctor.  also, use Region::IsEmpty instead
27373         of gdk_region_empty.
27375         * uielement.cpp: more region cleanup, removing references to
27376         GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
27377         out until the rendering glitch is fixed) the rectangle back to
27378         front special case code.
27380 2008-01-31  Chris Toshok  <toshok@ximian.com>
27382         * rect.cpp (Region::Region): new overload which takes a Region*,
27383         so we don't have to access ->gdkregion everywhere when we copy a
27384         region.
27386         * rect.h (struct Rect): add a GrowBy method that takes both x and
27387         y deltas, and have the 1 parameter version call it.
27388         (class Region): add a copy ctor that takes a Region*.
27390 2008-01-31  Chris Toshok  <toshok@ximian.com>
27392         * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
27393         and add it to the class, protected so subclasses can get at it.
27395         * stylus.cpp (InkPresenter::PostRender): given the ordering
27396         required, we have to c&p some of Panel::PostRender here to render
27397         the children.  Chaining up to Canvas::PostRender at the start of
27398         the method would have caused the translucency/opacity mask code in
27399         UIElement::PostRender to be executed *before* we rendered our
27400         strokes.
27402 2008-01-31  Chris Toshok  <toshok@ximian.com>
27404         * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
27405         RenderChildren to this, and chain up to Canvas::PostRender here,
27406         which will do the RenderChildren call if it needs to.
27408 2008-01-31  Chris Toshok  <toshok@ximian.com>
27410         * panel.cpp (Panel::FrontToBack): simplify this a bunch with
27411         Brush::IsOpaque.
27413         * brush.h (class Brush): remove GetTotalOpacity() which wasn't
27414         being used anywhere, and add IsOpaque() so that we can use it from
27415         the new front-to-back stuff (instead of duplicating code in Panel
27416         and Shape handling parts).
27418 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27420         * media.cpp: Update.
27422 2008-01-31  Chris Toshok  <toshok@ximian.com>
27424         * media.cpp (MediaElement::MediaElement): fix build.
27425         (Image::Image): fix initialization order to quiet g++.
27427 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27429         * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
27430           implemented again. Added an ugly caught_up_with_seek value, used to
27431           determine if video is late due to a seek, in which case it shouldn't
27432           show any frames (fixes #356053).
27433         * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
27434           HasDelayedFrame.
27435         * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
27436           HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
27437         * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
27438           HasDelayedFrame.
27440 2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
27442         * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
27443         value.
27444         (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
27445         having our caller re-parse the header.
27446         (Mp3Demuxer::ReadHeader): Updated.
27448 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27450         * brush.cpp: apply the correct offset to RadialGradientBrushes too.
27452 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27454         * clock.h: Added macros to convert between pts, milliseconds and timespans.
27455         * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
27456           0). Use the new macros when converting between time formats. Remove the
27457           AdvanceFrame timeout upon reinitialization. Implement a better buffering
27458           algorithm (and honor the BufferingTime property).
27459         * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
27460           pipeline is now normalized to start at 0. Use the new macros when
27461           converting between time formats.
27462         * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
27463           start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
27464           estimate the position of a pts. ProgressiveSource::CancelWait: only
27465           cancel if we're waiting, and then wait until actually cancelled.
27467 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27469         * shape.cpp:
27470         * shape.h: GetOrigin for Polyline and Polygon
27472 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27474         * uielement.h: add a GetOrigin ()
27476         * shape.cpp:
27477         * shape.h: implement GetOrigin for Path
27479         * brush.cpp: use GetOrigin as offset, fix the Crystal test.
27481 2008-01-30  Chris Toshok  <toshok@ximian.com>
27483         * mplayer.h (class MediaPlayer): add rendered_frame.
27485         * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
27486         false.
27487         (MediaPlayer::Close): reset rendered_frame.
27488         (render_frame): set rendered_frame to true if we've successfully
27489         copied data into the video surface.
27491         * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
27492         to the pixbuf's has_alpha if USE_OPT_RGB24.
27494         * media.h (class Image): make the CachedSurface type and the
27495         instance field "surface" public, so the front to back stuff can
27496         get at it.  Also, add "has_alpha" to it, since once the xlib
27497         surface has been created, we lose that information.
27499         * control.cpp (Control::FrontToBack): nothing to do but call
27500         FrontToBack on real_object.
27502         * control.h (class Control): add override for FrontToBack.
27504         * panel.cpp (Panel::FindStartingElement): get rid of this crap.
27505         it was broken and the wrong way to implement it.
27506         (Panel::Render): remove the RenderChildren call here, we do it in
27507         PostRender (and only if we're not rendering front to back)
27508         (Panel::PostRender): if we aren't rendering front to back, call
27509         RenderChildren.
27510         (Panel::RenderChildren): remove references to FindStartingElement.
27511         (Panel::FrontToBack): this method is a little more complicated
27512         than UIElement::FrontToBack owing to the fact that we're
27513         flattening things to a list.  We need to prepend a "cleanup node"
27514         first, before calling FrontToBack on our children, to do the
27515         Panel::PostRender stuff after our children have been rendered.  We
27516         remove this cleanup node if none of the children have added
27517         themselves to the list, and our bounds (without the children)
27518         don't intersect the expose region.  We apply the same logic to
27519         removing our rectangular bounds as the UIElement code does, but
27520         also have to take into account our background brush.  We punt if
27521         any part of it is transparent, and only handle SolidColorBrush and
27522         GradientBrush subclasses.
27524         * panel.h (class Panel): override UIElement:: FrontToBack,
27525         PreRender, and PostRender.
27527         * uielement.cpp (UIElement::DoRender): factor out most of the guts
27528         of this method so it can be used in either front-to-back or
27529         back-to-front.  Make sure to pass "false" as the front-to-back arg
27530         for PreRender and PostRender.
27531         (UIElement::FrontToBack): calculate the intersection of the expose
27532         region and our bounds.  Add this region to the front of the render
27533         list, and then do some calculating to decide if we should remove
27534         it from consideration by elements lower than us in the display.
27535         Things like "are we opaque", "have we been rotated or skewed, such
27536         that our rectangular shape no longer fills the bounds entirely",
27537         stuff like that.  We further limit subtracting in element type
27538         specific ways - right now just for MediaElement and Image with
27539         certain constraints (images can't have alpha, media elements must
27540         have a frame rendered, both types must fill their rectangle, etc).
27541         If everything passes, we remove our bounds from the expose region.
27542         (UIElement::PreRender): new method, do the things that DoRender
27543         used to do before calling Render.
27544         (UIElement::PostRender): new method, do the things that DoRender
27545         used to do after calling Render.
27547         * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
27548         so they can be used in panel.cpp.  Also, add 3 new virtual
27549         methods (FrontToBack, PreRender, PostRender) as well as two
27550         callback methods to invoke the 2 latter ones.
27552         * runtime.cpp (overrides): add "render=ftb" and "render=btf"
27553         overrides (with btf the default) corresponding to
27554         RUNTIME_INIT_RENDER_FRONT_TO_BACK.
27555         (Surface::Paint): add support for front-to-back rendering.  If
27556         it's enabled, make a FrontToBack pass on the fullscreen message
27557         and the toplevel element.  This populates the render list with a
27558         back to front ordered list of elements to paint, along with the
27559         regions they need repainted.  If the render list is empty for some
27560         reason (or if the user didn't select ftb rendering), we fall back
27561         to back to back-to-front rendering at the toplevel.
27562         (RenderNode::RenderNode): add ctor/dtor for RenderNode.
27564         * runtime.h: add the RenderNode class, used by the front to back
27565         rendering.
27567         * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
27568         to Region.
27570 2008-01-30  Jackson Harper  <jackson@ximian.com>
27572         * xaml.cpp: Strip leading whitespace from xaml files.
27573         
27574 2008-01-30  Jackson Harper  <jackson@ximian.com>
27576         * xaml.cpp: Handle more names for the default namespace.
27578 2008-01-30  Jackson Harper  <jackson@ximian.com>
27580         * xaml.cpp: Add support for ucs4.
27582 2008-01-29  Jackson Harper  <jackson@ximian.com>
27584         * xaml.cpp: pull in unistd.h
27586 2008-01-29  Jackson Harper  <jackson@ximian.com>
27588         * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
27589         expat doesn't choke.
27591 2008-01-28  Chris Toshok  <toshok@ximian.com>
27593         * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
27594         inplace, it returns the new rect.
27596         * uielement.cpp (UIElement::DoRender): same change.
27598 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
27600         * pipeline.cpp (FindMpegHeader): Validate that the sequence is
27601         actually an mpeg frame header by parsing it and calculating its'
27602         length and checking that another frame header starts where we
27603         expect it.
27604         (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
27605         too.
27607 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
27609         * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
27610         an MPEG sync header.
27611         (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
27612         IMediaSource's new GetSize() method to help calculate media
27613         duration as opposed to seeking to the end.
27615 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27617         * media.cpp, media.h: Open the media async.
27618         * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
27620 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27622         * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
27623           reached eof and couldn't advance.
27624         * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
27625           get while we're waiting for a seek to happen. Implement a better pause
27626           algorithm, the previous one was flawed and dead-locked once in a while.
27627         * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
27628           Create one frame reader for each stream.
27630 2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
27632         * media.cpp (MediaElement::UpdateProgress): Check (pos +
27633         buffering_size) > size, not < size. Duh.
27635         * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
27636         argument to use in place of media->GetSource().
27637         (Media::Open): Don't set this->source unless we successfully open
27638         the source.
27640 2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
27642         * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
27643         set the state to Buffering so that calling Play() will actually
27644         start playing the media (if the file was local, then we'll be in
27645         the Opening state which means that calling Play() will only note
27646         that a Play action was requested, but won't actually play the
27647         media).
27648         (MediaElement::SetState): Don't check for downloaded_file == NULL,
27649         it might fail in the above case.
27651 2008-01-26  Jackson Harper  <jackson@ximian.com>
27653         * xaml.cpp: Set the encoding when we are reading files also.
27655 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27657         * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
27658         greater than the current wait_pos.
27660         * media.cpp (UpdateProgress): Use the buffering_start position
27661         rather than the current write position to calculate buffer_size.
27663 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27665         * media.cpp (TryOpen): When download is complete and we
27666         successfully open the media, don't set the state to Paused - this
27667         breaks Halo3 if the video is cached.
27669         * media.cpp|h: Consolidated all of the bool state variables into a
27670         single bitfield.
27672 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27674         * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
27675           waiting for publicly available.
27676         * media.cpp: UpdateProgress: use the position the file is waiting for to
27677           calculate the buffer size (if it would exceed the default buffer size).
27679 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27681         * media.h: Add some descriptive comments.
27683 2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
27685         * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
27686         instead of calling it since it can reduce some heavy cairo calls 
27687         (cairo_in_*), if there's a clip, otherwise it won't affect 
27688         performance.
27690 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27692         * media.cpp: Initialize play_pending, and when buffering is
27693           finished, only play if autoplay or play_pending is true.
27695 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
27697         * mplayer.cpp: Get rid of some unused variables and cleaned up
27698         some code.
27700 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27702         * pipeline.cpp, media.cpp: More printfs removed.
27704 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27706         * src.mdp: Updated.
27708         * pipeline-ffmpeg.cpp: Commented out printf.
27710         * pipeline.h, pipeline.cpp: Removed some dead code. Made all
27711         interfaces inherit from IMediaObject, and put the media field
27712         there. Commented out printfs.
27714         * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
27715         simplify code a bit. Encapsulated target_pts handling into
27716         separate methods.
27718         * media.h, media.cpp: Create one and only one MediaPlayer for the
27719         life-time of the MediaElement. If not AutoPlay is set, then pause
27720         instead of play.
27722 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27724         * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
27725           usage, but on construction, and finish it upon destruction. Fixes race
27726           between creating and destructing the thread.
27728 2008-01-24  Chris Toshok  <toshok@ximian.com>
27730         * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
27731         (calc_perpendicular_intersection_points): new method.
27732         (Stroke::HitTestSegmentSegment): use
27733         calc_perpendicular_intersection_points to give us the end points
27734         of the outer line segments, and use those for hit testing.
27736 2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
27738         * media.cpp (UpdateProgress): When switching to Buffering mode,
27739         save the position where we're currently at in the file so that we
27740         can use that as a reference point when calculating progress. Also,
27741         pause the MPlayer so that audio won't continue to play while we're
27742         waiting for buffering to complete. Fixes bug #356051.
27744 2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
27746         * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
27747         (or fill) are present for the shape.
27749 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27751         * pipeline.cpp, pipeline.h: Create a more general worker thread,
27752         and use unions to save some space in WorkItem. In the ASFDemuxer,
27753         when seeking, we need to seek to the audio stream, since that's
27754         what we're using to sync against (if we have audio).
27755           
27756         * list.cpp, list.h: Added List::InsertBefore.
27758 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27760         * media.cpp: MediaElement::SetSource: only trigger the download
27761         after we've attached to the CompletedEvent.
27763 2008-01-23  Chris Toshok  <toshok@ximian.com>
27765         * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
27766         re-enter HandleMouseEvent, which can happen when that stupid JS
27767         timeout dialog pops up.
27769 2008-01-23  Chris Toshok  <toshok@ximian.com>
27771         * runtime.cpp (Surface::SetMouseCapture): this fails not only if
27772         there's an existing capture, but also if there's a pending
27773         capture (so if both a parent and child capture on the same event,
27774         the child gets it.)  Fixes dragging things around in ink journal.
27776 2008-01-23  Chris Toshok  <toshok@ximian.com>
27778         * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
27779         only tests that are implemented are endcap (ellipse) vs. point,
27780         and segment vs. segment (although this one isn't the full test, as
27781         we're using the stroke line, as opposed to the exterior lines
27782         created by the ellipse pen tracing that line).
27784         * rect.h: add PointInside (Point p).
27785         
27786 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27788         * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
27789         it's no longer part of the build.
27791 2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
27793         * shape.cpp|h: Add support for different PenLineCap on Line (part 
27794         of #345888). Fix Polyline when a single segment is used (removed 
27795         TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
27797 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27799         * media.cpp (SetSource): Initialize the ProgressiveSource.
27801         * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
27802         parent class's implementation.
27804 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27806         * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
27808 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
27810         * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
27811         where the caller is trying to read a block larger than our
27812         internal buffer.
27813         (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
27814         uint64_t (which is needed in the case of seeking backwards).
27816 2008-01-22  Larry Ewing  <lewing@novell.com>
27818         * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
27819         and into Path.cpp as a transform not by modifying the data.
27821         * geometry.cpp, geometry.h: remove stretch logic.
27823 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
27825         * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
27826         if within our pre-buffered bounds.
27827         (ProgressiveSource::Write): When restoring position state, use the
27828         proper offset (e.g. the offset of the end of our pre-buffered
27829         block).
27831 2008-01-22  Chris Toshok  <toshok@ximian.com>
27833         * collection.cpp (UIElementZIndexComparer): the magnitude of the
27834         return value doesn't matter, only the sign.
27836 2008-01-22  Chris Toshok  <toshok@ximian.com>
27838         * media.cpp (Image::InsideObject): if we have no surface (the
27839         image hasn't been loaded), we aren't HitTestVisible.
27841         * media.h (class Image): add InsideObject override.
27843 2008-01-22  Chris Toshok  <toshok@ximian.com>
27845         * panel.cpp (Panel::OnCollectionChanged): remove the fix for
27846         #353954 as its redundant after the previous commit.
27848 2008-01-22  Chris Toshok  <toshok@ximian.com>
27850         * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
27851         function works.
27853 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
27855         * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
27856         call Initialize() on the file source.
27858         * pipeline.cpp (IMediaSource): Read() now returns the number of
27859         bytes read rather than true/false and does nto guarantee that all
27860         of the data was read. Added a ReadAll() method which does what the
27861         old Read() method did.
27862         (FileSource): Rewritten to do our own buffering which allows for
27863         nice optimizations for Peek() and Seek().
27864         (ProgressiveSource): Also rewritten.
27866         * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
27868         * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
27869         just made them extern in the ehader, this way we don't duplicate
27870         those values in each source file that includes this header.
27872 2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
27874         * shape.cpp|h: First part of DoDraw refactoring. Pass all 
27875         regression tests from harness (moon versus moon) but it's possible
27876         that some degenerated cases (without test cases) regress.
27878 2008-01-22  Larry Ewing  <lewing@novell.com>
27880         * clock.cpp: initalize the smoothing to max framerate, the first
27881         frame is quite likely the slowest frame we'll ever draw.  Bump
27882         error delta back up to 1/50th.
27884 2008-01-22  Chris Toshok  <toshok@ximian.com>
27886         * media.cpp (MediaElement::Render): a little cairo cleanup, and
27887         remove the USE_OPT_REGION_CLIP block.
27889 2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
27891         * pipeline.cpp: include unistd.h, fixes a build error introduced in
27892         r93311 when building without-ffmpeg
27894 2008-01-22  Larry Ewing  <lewing@novell.com>
27896         * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
27897         previous commit.
27899 2008-01-22  Larry Ewing  <lewing@novell.com>
27901         * clock.cpp: Tweak clock timing and smoothing.  Increase timer
27902         priority so that ticks get deliver when we want them this doesn't
27903         change the smoothing calculation but it can raise the actual fps
27904         by assuring all our clocks are delivered.  Change smoothing alpha
27905         from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
27906         unless our new calculated timeout differs from our old by at least
27907         1/50 of a second.  Resetting the clock on every tick had the
27908         effect adding the drawing time to the tick time for every tick
27909         since the timeout starts over at zero.
27911 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
27913         * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
27914         unspecified, encode the bitrate back into the header so that if we
27915         are using the NullMp3Decoder, it will know how to handle
27916         it. Probably also needed for any actual Mp3 decoders as well since
27917         it won't reliably be able to keep track of variable-bitrate
27918         streams otherwise since it wouldn't know if/when we seek.
27919         (NullMp3Decoder::DecodeFrame): Implemented.
27921 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27923         * pipeline.cpp: Remove printf.
27925 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27927         * src.mdp: Remove mplayer2.cpp from here too.
27929 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27931         * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
27932           mplayer2.cpp to mplayer.cpp.
27934 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
27936         * downloader.cpp (ll_downloader_get_response_file): Fixed to use
27937         mkstemp() rather than tmpnam_r() and also simplified.
27939         * pipeline.cpp: Fixed various things about the progressive stream.
27941 2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
27943         * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
27944         don't memmove() data unless we don't have enough to play a single
27945         frame. Instead, what we'll do is keep progressing audio->outbuf as
27946         we play it.
27948 2008-01-19  Chris Toshok  <toshok@ximian.com>
27950         * uielement.cpp (UIElement::OnPropertyChanged): remove the
27951         handling of TriggersProperty and ResourcesProperty's closure.
27953         * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
27954         method.
27956         * transform.cpp (TransformGroup::OnPropertyChanged): remove
27957         handling of ChildrenProperty's closure.
27959         * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
27960         the handling of Inlines->closure from TextBlock.
27962         * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
27963         methods (InkPresenter and Stroke).
27965         * panel.cpp (Panel::OnPropertyChanged): remove handling of the
27966         ChildProperty's closure here.
27968         * media.cpp, media.h: remove the unnecessary
27969         MediaBase::OnPropertyChanged.
27971         * geometry.cpp, geometry.h: remove a few OnPropertyChanged
27972         methods (GeometryGroup, PathGeometry, and PathSegment.)
27974         * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
27976         * brush.cpp, brush.h: remove the unnecessary
27977         Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
27979         * animation.cpp, animation.h: remove all the
27980         *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
27981         they did was deal with collection closures.
27983         * dependencyobject.cpp (DependencyObject::SetValue): factor out
27984         the "collection->closure" setting code from all the
27985         OnPropertyChanged methods sprinkled around and put it here.  Also,
27986         set collection->closure to NULL on the old value (something the
27987         old code didn't do).
27989 2008-01-19  Chris Toshok  <toshok@ximian.com>
27991         * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
27992         NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
27993         use.
27995         * animation.h: clean this file up by removing all those disgusting
27996         macros.  for the DECL macros, just expand them here, as having the
27997         methods listed in the class declaration is a good thing.
27999         * collection.cpp (collection_new): remove the switch statement
28000         from here and use Type::CreateInstance instead.  this largely
28001         removes the need to be including extra headers (like animation.h).
28003 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28005         * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
28006           MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
28007         * src.mdp: Updated.
28009 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28011         * media.h, media.cpp: MediaElement: make this a state machine to follow the
28012           behaviour specified in MSDN. Implement buffering of media files.
28013           MediaSource (and derived): take a IMediaSource instead of a filename.
28014         * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
28015           Remove all MOON_MEDIA ifdefs, too many changes to support both versions
28016           now. Make seeking async.
28017         * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
28018           worker thread, seeking can now be done there too. Implement
28019           ProgressiveSource.
28020         * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
28021           the file extension. MediaSource (and derived): take a IMediaSource
28022           instead of a filename.
28023         * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
28024           filename.
28026 2008-01-18  Larry Ewing  <lewing@novell.com>
28028         * uielement.cpp: compute total_opacity for invalidation logic but
28029         use local_opacity for drawing.  This fixes monotones grid.xaml and
28030         some hit test regressions.
28032 2008-01-18  Jackson Harper  <jackson@ximian.com>
28034         * xaml.cpp: KeyFrameCollections can be specified in the xaml if
28035         they are in a property element.
28036         - When searching for collections, use is subclass instead of
28037         making them be the same type, so derivied collections can be used.
28038         
28039 2008-01-17  Chris Toshok  <toshok@ximian.com>
28041         * pipeline.h (class IMediaDemuxer): initializer streams and
28042         stream_count so we don't crash on ltbennett.com.
28044 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28046         * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
28047         MPEG header, set MediaFrame->event to EOF. Same if we can't read
28048         the frame data.
28049         (Media::GetNextFrame): Don't try to decode the frame if it is an
28050         event.
28051         (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
28052         EOF.
28054         * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
28055         (AdvanceFrame): Handle EOF frame events.
28056         (audio_loop): Handle EOF frame events.
28058 2008-01-17  Chris Toshok  <toshok@ximian.com>
28060         * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
28061         invalidate the old bounds of the stroke for ItemRemoved as well as
28062         ItemChanged.
28064 2008-01-17  Chris Toshok  <toshok@ximian.com>
28066         * rect.h (Rect::Transform): new method, allows for transforming a
28067         rectangle by a cairo_matrix_t, used with transforming the stroke
28068         bounds back to screen space using the InkPresenter's
28069         absolute_xform.
28071         * stylus.cpp, stylus.h: deal with collection changed notifications
28072         on Stroke::StylusPointsProperty and on
28073         InkPresenter::StrokesProperty, and correctly invalidate a stroke's
28074         bounds.  The bounds of a stroke needs to be looked at - right now
28075         it's in the coordinate space of the InkPresenter, and so it needs
28076         to be transformed back to screen space before invalidating.  Need
28077         to check if MS uses screen space for a stroke's bounds (seems
28078         likely they do, but this was easier to code.)
28080 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28082         * mplayer2.cpp: Updated for MediaFrame changes.
28084         * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
28086         * pipeline.cpp: Instead of having a compressed_data and
28087         uncompressed_data field, simply have a 'buffer' field that gets
28088         reused by both the demuxer and the decoder. The decoder will set
28089         the buffer to the compressed data and the decoder will, once
28090         finished decoding, free the buffer and then update it to point to
28091         the decoded data. This reduces memory overhead.
28093 2008-01-17  Chris Toshok  <toshok@ximian.com>
28095         * uielement.cpp (UIElement::InsideClip): use
28096         uielement_transform_point instead of duplicating it.
28098         * shape.cpp (Shape::InsideObject): use uielement_transform_point
28099         instead of duplicating it.
28101         * text.cpp (TextBlock::InsideObject): use
28102         uielement_transform_point instead of duplicating it.
28104 2008-01-17  Larry Ewing  <lewing@novell.com>
28105         
28106         * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
28107         unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
28108         more rectangle testing after this.
28110 2008-01-17  Jackson Harper  <jackson@ximian.com>
28112         * xaml.cpp: After setting a property stop walking up the element
28113         tree.
28115 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28117         * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
28119 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28121         * mplayer2.cpp (audio_decode): Removed as it is no longer really
28122         needed.
28123         (audio_loop): We can't assume that an entire decoded audio packet
28124         will fit into the audio output buffer in a single shot, break it
28125         up if needed.
28127 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28129         * mplayer2.cpp: Max out video frame rate at 60fps.
28131 2008-01-17  Fernando Herrera  <fherrera@novell.com>
28133         * panel.cpp: Reorder based on ZIndex when a new item is added.
28134         Fixes bug #353954
28136 2008-01-17  Larry Ewing  <lewing@novell.com>
28138         * runtime.cpp (Surface::InitializeDrawingArea): disable extended
28139         input devices until the remaining issues can be resolved.
28141 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28143         * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
28145 2008-01-16  Larry Ewing  <lewing@novell.com>
28147         * uielement.cpp, uielement.h: 
28148         * panel.cpp, panel.h: 
28149         * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
28150         Combine the opacity visibility check into the total render
28151         visibility.  Make sure we compute/invalidate in all the same
28152         places.
28154         * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
28156         * uielement.cpp (UIElement::DoRender): make sure we don't reset
28157         the coordinate system when setting up the clip calls in the
28158         opacity and opacity mask cases.  Go back to using the brush
28159         directly when rendering masks.  Should speed things up a little
28160         and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
28162 2008-01-16  Chris Toshok  <toshok@ximian.com>
28164         * stylus.h, stylus.cpp: a few changes.  Move the
28165         StylusPointCollection and StrokeCollection classes here from
28166         collection.h/collection.cpp.  I didn't like the addition of
28167         stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
28168         the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
28169         methods, and build up the bounds for the StrokeCollection by
28170         unioning all the Stroke bounds (these should be cached, but aren't
28171         yet.)  StrokeCollection::HitTest has been implemented, just
28172         looping over the strokes.  Stroke::HitTest is missing its guts at
28173         the moment, since hit testing is going to be a little bit of a
28174         pain for it.
28176         * collection.h, collection.cpp: remove StylusPointCollection and
28177         StrokeCollection.
28179 2008-01-16  Larry Ewing  <lewing@novell.com>
28181         * uielement.cpp, uielement.h: Rework the way we handle opacity to
28182         operate like the reference platform by removing the concept of
28183         TotalOpacity and instead using push/pop group and paint_with
28184         alpha.  See test-sibling-opacity.xaml for an example.  Handle
28185         clipping in DoRender rather than in every subclass because we want
28186         the clip path active before calling push/pop so that the temporary
28187         surface is bounded.
28188         * brush.cpp, panel.cpp: remove GetTotalOpacity references.
28189         * media.cpp, media.h: cleanup the complicated render logic now
28190         that things are handled in uielement.
28191         * shape.cpp, text.cpp: remove RenderClipPath calls.
28193         * rect.cpp, rect.h: add draw methods.
28195 2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
28197         * pipeline.cpp: Implemented mpeg seeking support for
28198         Mp3FrameReader and, thusly, Mp3Demuxer.
28199         (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
28201 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28203         * mplayer2.cpp: Remove a superfluous variable from Audio.
28205 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28207         * mplayer2.cpp: Remove superfluous variables from Video.
28209 2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
28211         * moon-path.c: Fix typo (but was same value).
28213 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
28215         * pipeline.cpp: Implemented mp3 demuxer.
28217 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28219         * mplayer2.cpp: Don't crash if Seek is called before Open.
28221 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28223         * mplayer2.cpp: Remove dead code and variables, and only request
28224         audio/video frames if we have audio/video.
28226 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
28228         * mplayer2.cpp: Get rid of extra member variables in Packet.
28230 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28232         * mplayer2.cpp: Implement audio decoding on the main thread as well.
28234 2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
28236         * pipeline.cpp: Partially implemented an mp3 demuxer.
28238 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28240         * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
28241           work again with the new pipeline.
28243 2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
28245         * shape.cpp|h: It looks like we stopped needing consider_fill a 
28246         while ago.
28248 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28250         * mplayer.h: We don't need io_tread anymore, so remove it.
28251         * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
28252           for doing the decoding on the main thread with easy (in-code) switch.
28253           Comment out printfs, and remove dead/old/commented-out code.
28254         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
28255           decoding on the main thread with easy (in-code) switch.
28256         * runtime.cpp: Don't print entire object tracking output if nothing leaked.
28258 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28260         * xaml.cpp: Unref a matrix object when we are done with it.
28261         * mplayer2.cpp: Remove printf.
28263 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28265         * mplayer2.cpp: Remove printfs.
28266         * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
28267           are errors.
28268         * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
28270 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28272         * pipeline.cpp: Fix crash with several web-sites (when seeking before
28273           reading anything).
28275 2008-01-11  Chris Toshok  <toshok@ximian.com>
28277         * clock.h (class Clock): add an instance
28278         field (calculated_natural_duration).
28280         * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
28281         current time here.  this was inflating animation begin time's in
28282         some cases to be either very close to the parent's calculated
28283         duration (or even after it).
28284         (ClockGroup::ComputeBeginTime): don't chain up to
28285         Clock::ComputeBeginTime.  clock groups in our system need to
28286         include their parent time in their begin time.  There are only two
28287         levels of clockgroups - storyboards, and the clockgroup we have
28288         associated with a given surface (Which will be the parent of all
28289         the storyboards running on that surface.)
28290         (output_clock): print out the BeginTime of the clock.
28291         (TimeManager::AddChild): I don't really like this, but we need to
28292         force the calculation of the natural duration of the clock when
28293         it's added to the hierarchy.
28294         (ClockGroup::AddChild): same here.
28295         (Clock::Clock): don't calculate the natural duration of the clock
28296         here - when we instantiated a ClockGroup it was calculating the
28297         duration before the child clocks were added.
28299 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28301         * pipeline.cpp: Seek on the frame reader, not on the source.
28302         * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
28303           HasAudio/Video (). Fix seeking to actually work.
28305 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28307         * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
28308           mplayer.h where it belongs.
28309         * pipeline.cpp, pipeline.h: Implement seeking.
28310         * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
28311           directly, since ffmpeg uses one single memory location for all decoded
28312           frames, causing us to always show the last decoded frame.
28314 2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
28316         * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
28317         See bug #345892 for the required cairo patch.
28319 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28321         * media.cpp: Initialize Media too upon initialization.
28322         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
28323           mplayer2.cpp, mplayer.cpp: Implement registration of components, making
28324           it possible to completely remove ffmpeg.
28326 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28328         * pipeline.cpp: Remove stray character.
28330 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28332         * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
28333           pipeline-ffmpeg.h: Code-cleanup.
28335 2008-01-10  Larry Ewing  <lewing@novell.com>
28337         * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
28338         before setting the extension events (lame api) and disable the
28339         cursor test.
28341 2008-01-10  Chris Toshok  <toshok@ximian.com>
28343         * runtime.cpp (Surface::InitializeDrawingArea): activate all
28344         devices that have a cursor associated with them.
28346 2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
28348         * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
28350 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28352         * mplayer.cpp: Surround with ifdef to conditionally include the new
28353           MediaPlayer or not.
28354         * Makefile.am: Added pipeline* and mplayer2.cpp.
28355         * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
28356           the pipeline.
28357         * pipeline.cpp, pipeline.h: Added.
28358         * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
28360 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28362         * panel.cpp: Delete leaked region.
28364 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28366         * src.mdp: Added.
28368 2008-01-09  Chris Toshok  <toshok@ximian.com>
28370         * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
28371         _get_bounds.
28373 2008-01-09  Chris Toshok  <toshok@ximian.com>
28375         * collection.h, collection.cpp: add C wrappers for
28376         StrokeCollection::GetBounds and ::HitTest.
28378         * stylus.h, stylus.cpp: same deal for Stroke::
28379         
28380 2008-01-09  Chris Toshok  <toshok@ximian.com>
28382         * collection.h, collection.cpp: add empty implementations of
28383         StrokeCollection::GetBounds and StrokeCollection::HitTest.
28385         * stylus.h, stylus.cpp: add empty implementations of
28386         Stroke::GetBounds and Stroke::HitTest.
28388 2008-01-09  Chris Toshok  <toshok@ximian.com>
28390         * uielement.h, uielement.cpp: change all the Emit* methods that
28391         deal with mouse events to take a GdkEvent instead of state/x/y,
28392         and also change their calldata to a heap allocated MouseEventArgs,
28393         which we unref after the emit.  This is because the pointer itself
28394         is wrapped by the managed MouseEventArgs, and will be unref'ed in
28395         ~MouseEventArgs at some later time.
28397         * runtime.h, runtime.cpp: change all the mouse events to pass
28398         around the actual GdkEvent instead of the state/x/y.  This is due
28399         to the fact that our MouseEventArgs class now wraps the GdkEvent,
28400         so we can get at all the stylus/extension event stuff.
28402         * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
28403         longer required.  We correctly create a StylusInfo instance from
28404         the MouseEventArgs.
28406         * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
28407         (libmooninclude_headers): add eventargs.h
28409         * libmoon.h: add eventargs.h.
28411         * eventargs.h, eventargs.cpp: new files, splitting out the
28412         KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
28413         out MouseEventArgs, making it a refcounted object with enough
28414         smarts to handle both the managed case and plugin case.  Include
28415         all the stylus related code as well, so this *should* make all the
28416         stylus requiring demos work.
28418 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28420         * geometry.cpp (path_get_bounds): My fix the other day wasn't
28421         quite ideal. Instead of using a 0.1 line thickness when the
28422         shape's StrokeThickness is 0, continue using that 0 thickness but
28423         use cairo_fill_extents() instead. Also, when shape is null, ise a
28424         0.0 thickness & cairo_fill_extents() as well.
28426         * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
28427         that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
28429         * runtime.cpp (EmitEventOnList): Changed to take double x,y
28430         coordinate arguments rather than int.
28431         (HandleMouseEvent): Same.
28433 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28435         * list.cpp (List::~List): Added a dtor that deletes all nodes
28436         currently in the list. This is doable now that List::Nodes are
28437         classes where the node dtors can be overloaded.
28439 2008-01-09  Jackson Harper  <jackson@ximian.com>
28441         * xaml.cpp: If a property is a collection, don't assume that the
28442         collection is already initialized (they used to always be), and
28443         initialize the collection if needed. This fixes BNC 350893.
28445 2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
28447         * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
28448         on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
28450 2008-01-08  Chris Toshok  <toshok@ximian.com>
28452         * animation.cpp (Storyboard::Begin): simple change to fix a nasty
28453         bug.  we need to add the teardown handler before the completed
28454         handler.  otherwise cases where people were using a storyboard as
28455         a timer would break - the completed handler would fire, the JS
28456         would restart the storyboard, then the teardown handler would free
28457         the new clock hierarchy.  Fixes the page animation in pageturn,
28458         and gets the bubbles moving again in the SilverlightCLRBalls demo.
28460 2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
28462         * geometry.cpp (path_get_bounds): Cairo seems to break if the line
28463         thickness is 0.0, so if the shape's thickness is set to 0.0, use
28464         0.1 like we do if shape is null. Fixes bug #351575.
28466 2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
28468         * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
28469         that ignore those properties, can avoid setting them on the cairo
28470         context.
28472 2008-01-04  Chris Toshok  <toshok@ximian.com>
28474         * runtime.cpp: mostly switch all emit_* calls to take doubles, and
28475         pass doubles around for button x/y.
28476         (Surface::motion_notify_callback): if we're gtk > 2.12, use
28477         gdk_event_request_motions (falling back to gdk_window_get_pointer
28478         if not).  also, we can use the mouse_event_x/y from the event,
28479         even when it's a hint.
28481         * runtime.h: switch back to using doubles for everything mouse
28482         event related.  Change MoonlightEventEmitFunc to take doubles.
28484 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28486         * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
28487         since the events that use them want them as ints anyway.
28488         (button_release_callback): Cast the button->x/y doubles to int.
28489         (button_press_callback): Same.
28490         (motion_notify_callback): Cast event->x/y to int.
28491         (crossing_notify_callback): Same.
28493         * dependencyobject.cpp: EventObjects now use a List class for
28494         event_lists rather than GSList which is far more costly for
28495         appends.
28496         (Emit): Reduce the number of linked-list iterations from 5 to 2.
28498 2008-01-04  Chris Toshok  <toshok@ximian.com>
28500         * runtime.h, runtime.cpp: completely overhaul the way we handle
28501         mouse events.  Instead of doing both hit testing and event
28502         dispatch in one recursive tree traversal, we build up a list of
28503         all elements that will bubble the event, and then use that list
28504         along with the previous one to generate Enter/Leave events for the
28505         elements that require it.  Also fix the way capture is done (it's
28506         not handled until the end) and fix the Enter event dispatch when
28507         you release mouse capture.
28509         * uielement.h, uielement.cpp: rename the mouse events to match the
28510         names used in C# and JS, as it's been singularly annoying to
28511         remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
28512         rename all the Handle* event methods to Emit*, as that's all they
28513         do.  Make them nonvirtual, as the traversal and emission of the
28514         events now happens in runtime.cpp.  Add a new virtual
28515         method (HitTest), that is overridden by the container elements,
28516         which appends elements that are going to bubble the event to the
28517         list.
28519         * panel.h, panel.cpp: remove all the Handle* methods, implement
28520         HitTest.
28522         * control.h, control.cpp: remove all the Handle* methods,
28523         implement HitTest.
28525 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28527         * media.cpp (UpdateProgress): Don't SetValue() unless the delta
28528         was large enough - otherwise we could get into a situation where
28529         we never emit a progress changed event in a case where the data
28530         trickles in at < 0.05%.
28532 2008-01-04  Chris Toshok  <toshok@ximian.com>
28534         * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
28535         up the clock hierarchy for the target property like we do with the
28536         target name.
28538 2008-01-04  Chris Toshok  <toshok@ximian.com>
28540         * media.h: add Image::DownloaderFailed.
28542         * media.cpp (Image::UpdateProgress): make sure to qualify the
28543         DownloadProgressProperty we lookup on the Downloader, since
28544         without the Downloader:: it'll try to get
28545         Image::DownloadProgressProperty, which will always return 0.0.
28546         (Image::SetSource): use the static qualifier for
28547         events (Downloader:: instead of downloader->).
28548         (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
28550         * brush.cpp (ImageBrush::image_progress_changed): make sure to set
28551         our ImageBrush::DownloadProgressProperty before emitting the
28552         changed event.
28553         (brush_init): lookup the ImageBrush::ImageFailedEvent.
28555 2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28557         * runtime.cpp: Free background_color upon surface
28558           destruction. Fixes a minor leak.
28560         * clock.cpp|h: Free the tick_call_mutex upon destruction.
28562 2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
28564         Fix for bug #350962
28566         * media.cpp (MediaBase::OnPropertyChanged): Don't emit
28567         DownloaderProgressChanged events anymore, leave that up to Image
28568         and MediaElement classes so that we don't emit events when an
28569         outside source changes the value.
28570         (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
28571         event if the proper download delta has occured.
28572         (Image::UpdateProgress): Same.
28574 2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28576         * dependencyobject.h: Remove warning.
28578 2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
28580         * runtime.h (CreateDownloader): Simplified.
28582 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28584         * collection.cpp: Upon destruction on VisualCollection, remove the visual
28585           parent of all items.
28586         * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
28587           how to use them.
28588         * dirty.cpp: Don't take a ref in DirtyNode.
28590 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28592         * media.cpp: Add const modifier 
28594 2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28596         * downloader.cpp: Null-initialize a field.
28597         * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
28599 2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28601         * pipeline.h: Added, the start of the new media pipeline.
28603 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
28605         * collection.cpp|h: Add missing method AddStylusPoints for 
28606         StylusPointCollection
28608 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
28610         * geometry.h: Remove hack for PathGeometry::FiguresProperty
28611         * xaml.cpp: If a collection is null by default then we must call
28612         parent->SetValue(dp, collection) or the collection, and it's 
28613         contents, won't be available. Fix (correctly) Chess.
28615 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
28617         * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
28618         there's no default Figure collection. Fix Chess crasher.
28619         * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
28620         foir doubles, and as an "empty" (but not NULL) Value for 
28621         DOUBLE_ARRAY.
28623 2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28625         * media.cpp, media.h: Implement support for markers as a separate stream
28626           (the demuxer will call a callback when it encounters any streamed
28627           markers).
28629 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
28631         * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
28632         now needed since it defaults to null and not an empty collection.
28634 2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
28636         * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
28638 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
28640         * color.cpp: Handle empty string correctly in color_from_str. Unit 
28641         tests shows this return 0 (and not transparent).
28643 2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
28645         * xaml.cpp: fix for bnc 348581.
28647 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
28649         * brush.cpp: Fix default color values for SolidColorBrush::Color and
28650         GradientStop::Color properties (see js unit tests).
28651         * geometry.cpp|h: Remove default collection from PathGeometry. Fix
28652         testPathGeometry unit test.
28654 2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28656         * media.cpp: ReadASFMarkers: Read markers as well as script commands.
28657           Subtract the preroll value from the pts before adding the marker. Unref
28658           the created collection and markers when finished with them.
28659           AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
28660           frame (might be necessary if the last frame has a marker).
28662 2007-12-17  Jb Evain  <jbevain@novell.com>
28664         * xaml.cpp: fix testMatrixWithZeroItem test case.
28666 2007-12-17  Jb Evain  <jbevain@novell.com>
28668         * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
28669         value type, has SL exposes it as a DependencyObject.
28671         * transform.cpp|h: define and implement the
28672         Matrix DependencyObject type.
28674         * xaml.cpp: create a Matrix DO on a Matrix xaml element.
28675         Also create such an object with the <MatrixTransform Matrix='...'>
28676         syntax.
28678 2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
28680         * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
28681         is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
28683 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
28685         * runtime.cpp (fps_report_default): Default printf FPS report
28686         callback.
28687         (Surface::render_cb): Use instance-local variables for keeping
28688         track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
28689         is set.
28691         * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
28692         (class Surface): New method to set the FPS report callback for a
28693         surface.
28695 2007-12-14  Chris Toshok  <toshok@ximian.com>
28697         * type.cpp.in, type.cpp (types_init_register_events): need to
28698         register DownloadProgressChanged and ImageFailed events on
28699         imagebrushes.
28701         * brush.h, brush.cpp: same, and hook up the events from
28702         ImageBrush's embedded image so that we can re-emit the events.
28703         
28704 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
28706         * downloader.cpp (Downloader::Abort): Don't abort if we've already
28707         been aborted or been notified that we've failed (needed protection
28708         for the Plugin downloader).
28709         (Downloader::Send): Set aborted = false.
28710         (Downloader::NotifyFailed): Don't do anything if we've already
28711         been notified of failure for this download request.
28713         * downloader.h (class Downloader): Keep track of aborted state as
28714         well.
28716 2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
28718         * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
28719         only one (Width XOR Height) is provided.
28721 2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
28723         * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
28724         been built before calling cairo_stroke_extents. This fix sample
28725         http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
28727 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
28729         * shape.cpp|h: Shortcut path bounds calculation when both Width
28730         and Height are specified. Add same clipping rules to Line, 
28731         Polyline and Polygon classes.
28733 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
28735         * geometry.cpp: Resume using cairo_stroke_extents in some cases
28736         because we need very precise bounds for Fill to work properly.
28737         This fix Sprawl's cowboy hat ribbon :-)
28739 2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
28741         * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
28743 2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
28745         * downloader.cpp|h: Made the ::Write() method take the same
28746         int-type args as the NPP_Write() function (which means int32 for
28747         both offset and nbytes).
28749 2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
28751         * stylus.cpp: Fix JS unit tests for Stroke properties by having
28752         a default DrawingAttributes inside the Stroke.
28754 2007-12-10  Chris Toshok  <toshok@ximian.com>
28756         * dependencyobject.h, dependencyobject.cpp: more event changes.
28757         events keep a integer "token" per event, that starts at 0, that is
28758         returned from the plugin's addEventListener method, and can be can
28759         be passed to the plugin's removeEventListener method.
28761 2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
28763         * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
28764         property of the Shape. Fix bug #346018
28766 2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
28768         * runtime.cpp (InitializeDrawingArea): Removed the call to
28769         gtk_widget_set_size_request() - we now call it elsewhere (since
28770         going fullscreen requiers us to call set_size_request() /before/
28771         calling gtk_window_fullscreen(). When going to fullscreen mode,
28772         this was causing the FullScreenMessage item to appear in the
28773         upper-left corner rather than centered like it should have been.
28774         (Surface): Make the call to gtk_widget_set_size_request() here now
28775         that it no longer is called inside InitializeDrawingArea().
28777 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
28779         * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
28780         * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
28781         bounds calculation on paths when Height *and* Width are present.
28783 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
28785         * shape.cpp: In Shape::ComputeBounds don't compute half thickness
28786         unless the value is needed.
28788 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28790         * xaml.cpp: Plug more leaks.
28792 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28794         * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
28795           detected by the javascript tests.
28797 2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
28799         * media.cpp (media_element_get_attributes): Added.
28800         (media_element_set_attributes): Added.
28801         (MediaElement): Set an empty list of attributes as per the spec.
28803 2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
28805         * media.cpp:
28806         * brush.cpp: implement RelativeTransform for image brushes and 
28807         LinearGradientBrush. RadialGradientBrush still missing.
28809 2007-12-06  Chris Toshok  <toshok@ximian.com>
28811         * dependencyobject.h, dependencyobject.cpp: make
28812         EventObject::AddHandler return the id (when using the event_name
28813         variant).
28815 2007-12-06  Chris Toshok  <toshok@ximian.com>
28817         * xaml.cpp (xaml_init): register the right constructors for
28818         PathSegmentCollection, GeometryCollection, and
28819         TransformCollection.
28821 2007-12-05  Chris Toshok  <toshok@ximian.com>
28823         * animation.cpp, animation.h: a couple of fixes.  Move away from
28824         watching the clock state in AnimationStorage and resetting the
28825         property value there.  instead, just override Clock::Stop in
28826         AnimationClock and call ResetPropertyValue on the storage.
28828         Also, when a storyboard's clock group is stopped, free it and
28829         remove it from the parent clock's list of children.  This should
28830         keep us from growing the number of clocks over time for
28831         storyboards which don't have Begin() called again (the only
28832         circumstance under which we destroy the clock).
28834         * clock.cpp, clock.h: handle the case where a clock can be started
28835         and then stopped before the next clock tick.  This happens when
28836         you move the mouse very quickly over the thumbnails in pageturn.
28838 2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
28840         * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
28841         (no path provided). Fix Build/ComputeBounds when no center point
28842         is provided.
28844 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28846         * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
28847           dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
28848           and make it a real property with accessors.
28850 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28852         * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
28853           animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
28854           logical_parent/SetLogicalParent/GetLogicalParent.
28856 2007-12-04  Larry Ewing  <lewing@novell.com>
28858         * media.cpp (Image::Render): fix the conditions for the opacity
28859         stability count.
28861 2007-12-03  Larry Ewing  <lewing@novell.com>
28863         * src/media.cpp (Image::Render): use paint_with_alpha if opacity
28864         is changing, use the old buffered alpha if it is not.
28866 2007-12-04  Jb Evain  <jbevain@novell.com>
28868         * stylus.cpp|h: add stylus_info_get_current function.
28869         Right now, it's an hack which always return a StylusInfo
28870         of type Mouse, not inverted.
28872 2007-12-03  Chris Toshok  <toshok@ximian.com>
28874         * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
28875         it now clamps to [0,duration_timespan].  This fixes the Simon
28876         "button flying off the screen" bug.
28878 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28880         * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
28881         iterating thru the list 6 times :)
28882         (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
28883         child_clocks list here too, or we end up corrupting memory.
28885 2007-12-03  Larry Ewing  <lewing@novell.com>
28887         * media.cpp (Image::Render): wrap the region clipping in a #define
28888         for testing.
28890 2007-12-03  Larry Ewing  <lewing@novell.com>
28892         * media.cpp (Image::Render): remove accumulated drawing cruft.
28894 2007-12-03  Chris Toshok  <toshok@ximian.com>
28896         * animation.cpp: put back in the calls to ComputeBeginTime that I
28897         accidentally committed a few days ago (and lewing reverted to fix
28898         the build).  they're needed with the new clock changes.
28900 2007-12-03  Chris Toshok  <toshok@ximian.com>
28902         * clock.cpp, clock.h: rework the clock code a bunch.  There are a
28903         couple of large changes.
28905         Get rid of the stupid new_ and current_ fields.  Just update the
28906         field immediately.  This cuts down on logic in if checks, and also
28907         makes subclocks update much faster in relation to their parent
28908         clock (we used to have to wait 1 tick per level in the tree for
28909         state to propagate).
28911         Abstract out all the QueueEvent calls into setters in clock.h.
28913         Break up Clock::Tick some, so more of the code is reusable from
28914         ClockGroup::Tick without having to call Clock::Tick and then work
28915         behind its back.
28917 2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
28919         * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
28920         already set on the pattern).
28922 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28924         * dependencyobject.cpp (RemoveHandler): Simplified a little.
28926         * animation.cpp (Stop): Remove the CompletedEvent root_clock
28927         handler. Fixes Simon's GAME OVER! textblock storyboard.
28929 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28931         * runtime.cpp: Added clipping/bounding-box override values.
28933         * uielement.cpp (DoRender): Changed optional bounding-box/clipping
28934         debugging drawing based on runtime settable bitflags.
28936 2007-12-03  Larry Ewing  <lewing@novell.com>
28938         * uielement.cpp: Clean up the debug rendering code for bounding
28939         boxes and clip regions.
28941 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
28943         Fixes a bug pointed out by Larry when rendering lines beginning
28944         with a 'J', where the tail escapes the bounding box.
28946         * font.cpp (Layout): Use the horiBearingX font metric.
28947         (RenderLine): Same.
28949 2007-12-03  Larry Ewing  <lewing@novell.com>
28951         * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
28952         if we can't invert the matrix but still draw someting.
28954 2007-11-29  Larry Ewing  <lewing@novell.com>
28956         * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
28957         bounds to the clip region as well.
28959         * control.cpp (Control::ComputeBounds): differenciate between our
28960         bounds and our subpath bounds.
28962         * control.h: add bounds_with_children and GetSubpathBounds ().
28964 2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
28966         * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
28967         the font face charmap, use unichar = 0 rather than returning NULL.
28969 2007-11-28  Chris Toshok  <toshok@ximian.com>
28971         * runtime.cpp (Realloc): when we Realloc(), we need to tell the
28972         toplevel canvas to update its bounds.  This *may* be wrong, but it
28973         definitely fixes matrix.
28974         (UpdateFullScreen): we need to stop the timesource when emitting
28975         the fullscreenchangeevent.  otherwise we can end up stuck in a
28976         nested glib mainloop and never return from the emit (actually we
28977         never even invoke the JS callback in matrix.  the nested loop
28978         happens somewhere deep in the bowels of NPN_Invoke).
28980 2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
28982         * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
28983         hack that forced the assumption of a streaming (vs progressive)
28984         media download. Also fixed to emit a DownloadProgressChanged event
28985         at progress == 1.0 (which is what th Silverlight book says we're
28986         supposed to do).
28988 2007-11-28  Larry Ewing  <lewing@novell.com>
28990         * src/uielement.cpp (UIElement::DoRender): make sure we don't
28991         leave a path on the cairo context when clipping.
28993 2007-11-28  Chris Toshok  <toshok@ximian.com>
28995         * uielement.cpp (UIElement::UIElement): compute the initial total
28996         hit test visibility.
28998         * dirty.cpp (process_dirty_elements): don't invalidate/update
28999         bounds when the hit test visibility changes.
29001         * frameworkelement.(h,cpp): calculate the bounds here using
29002         width/height.
29004         * panel.cpp: chain up to frameworkelement.
29005         
29006 2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
29008         * text.cpp (TextBlock::SetValue): Check the resulting Inlines
29009         collection formed from the Text property being set against the old
29010         Inlines - if no change, don't set the new Inlines collection,
29011         simply keep using the old. The idea is to prevent unnecessary
29012         layout re-calculations and invalidates.
29014 2007-11-27  Chris Toshok  <toshok@ximian.com>
29016         * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
29017         canvas.cpp, collection.cpp, shape.cpp:
29019         rather large change - don't use a large rectangular bounding box
29020         encompassing both the panel's frameworkelement bounds as well as
29021         the bounds of all its children.  Instead, only worry about the
29022         frameworkelement bounds, and let the children invalidate
29023         themselves.  but do all this in a way that we still use the
29024         subtree's bounding box to prune rendering and hit testing.
29026         since we won't be invalidating the entire box surrounding all
29027         children, we need to propagate visibility information down the
29028         tree as we do opacity.
29030         This should really speed up most animations (such as those in
29031         sprawl and airlines) since we'll be invalidating far smaller
29032         areas.
29033         
29034         (this code was stupidly hard for lewing and me to get right.  yay
29035         for jet lag.)
29037 2007-11-23  Larry Ewing  <lewing@novell.com>
29039         * runtime.cpp: add show=expose to toggle expose display.
29041 2007-11-22  Jb Evain  <jbevain@novell.com>
29043         * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
29044         a glib warning if set_properties is NULL.
29046 2007-11-21  Chris Toshok  <toshok@ximian.com>
29048         * media.cpp (MediaElement::UpdateProgress): only set 1 of
29049         DownloadProgressProperty and BufferingProgressProperty.  The
29050         former is used if we're playing progressively, the latter if we're
29051         buffering before playing.  This fixes the buffering animation on
29052         the halo site.
29053         
29054 2007-11-21  Chris Toshok  <toshok@ximian.com>
29056         * runtime.cpp (Surface::Invalidate): add the int case around the
29057         complete expression to quiet gcc.
29059 2007-11-20  Larry Ewing  <lewing@novell.com>
29061         * runtime.cpp (Surface::expose_event_callback): take allocation
29062         offsets into account when invalidating and drawing.  Fixes
29063         #339010.
29065 2007-11-20  Chris Toshok  <toshok@ximian.com>
29067         * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
29068         2.12, destroy the hash table and set it to NULL so we'll recreate
29069         it.
29071 2007-11-20  Chris Toshok  <toshok@ximian.com>
29073         * collection.cpp (VisualRemoved): switch from using
29074         item->parent->ChildInvalidated(UIElement), use
29075         item->parent->Invalidate (item->GetBounds()).
29077         * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
29078         Invalidate (Region*) and update calls to it.  Remove
29079         ChildInvalidated(UIElement*).  Also, remove all references to the
29080         children_dirty_region field.  everything goes through dirty_region
29081         now.
29083         * dirty.cpp: switch to using item->parent->Invalidate instead of
29084         item->parent->ChildInvalidated, and remove references to
29085         children_dirty_region.
29087 2007-11-20  Chris Toshok  <toshok@ximian.com>
29089         * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
29090         copy before emitting an event.
29092 2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
29094         * runtime.cpp (surface_get_toplevel): Removed.
29096         * uielement.cpp (uielement_get_isloaded): Removed.
29098 2007-11-20  Jb Evain  <jbevain@novell.com>
29100         * downloader.h (Downloader): override SetSurface and GetSurface
29101         to work on a custom surface field.
29102         * downloader.cpp (Downloader::Downloader): initialize
29103         surface to NULL.
29104         * runtime.h (Surface::CreateDownloader): initialize the surface
29105         of the downloader.
29106         * collection.cpp: when removing an UIElement from an UIElementCollection,
29107         clear out its surface to NULL.
29108         * visual.cpp: remove null check preventing to set the surface to NULL.
29109         * dependencyobject.cpp: (DependencyObject::FindName): if the
29110         current DO has no parent, fallback to its surface to try
29111         FindName on its top level element (needed to call FindName
29112         on a downloader for instance). Fixes #335018.
29114 2007-11-20  Jackson Harper  <jackson@ximian.com>
29116         * xaml.cpp: If we need to reparse the attributes for an element
29117         (because we loaded a class and the props need to be set on the new
29118         class) we have to clear out the hash of properties that are marked
29119         as already set. Otherwise we get a property already set error.
29121 2007-11-20  Jackson Harper  <jackson@ximian.com>
29123         * xaml.cpp: Add new function to create a value from a string
29124         without having the Kind available (you still need to have the type
29125         in string form).
29126         - SetAttribute now ensures that the attribute was set properly
29127         - If the object we are trying to set an attribute on is a managed
29128         object and there is no DependencyProperty for the attribute, we
29129         try setting the attribute on the object.
29131 2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
29133         * uielement.cpp: Ensure the default value for VisibilityProperty
29134         is VisibilityCollapsed even if the value is invalid (for Javascript
29135         compatibility, since 1.1 should throw an exception). See #340799
29137 2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
29139         * uielement.cpp: FullInvalidate on setting Viibility to Visible.
29140         Fixes bnc #342662.
29142 2007-11-19  Larry Ewing  <lewing@novell.com>
29144         * uielement.cpp: setup the clip before push/pop group so that
29145         we reduce the temp surface size.
29147 2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
29149         * transform.cpp: Use cairo_matrix_init_translate instead of 
29150         cairo_matrix_init + cairo_matrix_translate where possible (which
29151         avoid the multiplication with the identity matrix).
29153 2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
29155         * runtime.cpp (surface_get_toplevel): New function needed by the
29156         managed land to implement a bit of a hack for the Resize
29157         event (when someone connects to the Resize event, if the toplevel
29158         canvas is already loaded, we want to immediately call the
29159         handler).
29161         * uielement.cpp (uielement_get_isloaded): Same.
29163 2007-11-15  Jackson Harper  <jackson@ximian.com>
29165         * Makefile.am:
29166         * parsertest.cpp: Some tests I use for checking the parsing
29167         functions.
29169 2007-11-15  Jackson Harper  <jackson@ximian.com>
29171         * color.h: Add equality operators.
29173 2007-11-15  Jackson Harper  <jackson@ximian.com>
29175         * xaml.cpp: use isalpha for determining whether or not an int32 is
29176         an enum.  This allows things like -1 to work.
29178 2007-11-15  Jackson Harper  <jackson@ximian.com>
29180         * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
29181         for doubles.
29183 2007-11-15  Jackson Harper  <jackson@ximian.com>
29185         * point.h|cpp:
29186         * rect.h|cpp: Update signatures to allow for error checking when
29187         creating types from strings.
29188         * xaml.h|cpp: Consolidate code to create values from strings, add
29189         some error checking.  Update most of the parsing methods so it is
29190         possible to return errors when parsing.
29191         * playlist.cpp: Sig update.
29192         
29193 2007-11-15  Jackson Harper  <jackson@ximian.com>
29195         * stylus.h|cpp: Initialize these collections so we don't get NULLs
29196         for GetValue on them.
29198 2007-11-14  Chris Toshok  <toshok@ximian.com>
29200         * runtime.cpp (strcase_hash): swap this out for mono's eglib
29201         implementation, augmented with g_ascii_tolower, to remove the
29202         malloc/free and 2 passes over the string.
29204 2007-11-14  Chris Toshok  <toshok@ximian.com>
29206         * dependencyobject.cpp: move the strcase_hash/equals functions...
29207         
29208         * runtime.cpp: here.
29210         * runtime.h: and make them public.
29212         * type.cpp.in, type.cpp (RegisterEvent): and use them here
29213         (RegisterType): and here.
29215 2007-11-14  Jb Evain  <jbevain@novell.com>
29217         * media.cpp|h: remove specific Image and MediaElement
29218         accessors for progress property now that the code
29219         moved to MediaBase.
29221 2007-11-14  Jb Evain  <jbevain@novell.com>
29223         * type.cpp.in, type.cpp, media.h, media.cpp: Move
29224         DownloadProgressProperty and DownloadProgressChangedEvent
29225         to MediaBase so it gets shared for both Image and MediaElement.
29226         Fixes #325255.
29228 2007-11-14  Jb Evain  <jbevain@novell.com>
29230         * value.h.in: update code template to match current value.h.
29232 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
29234         * openfile.cpp: Added support for Filter and FilterIndex.
29236 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
29238         * animation.cpp: Replaced g_assert_not_reached with g_warning.
29239         At least until #340799 (enum validation) is fixed. Part of #335413
29240         * shape.cpp: Add g_warning to replace the g_assert_not_reached 
29241         removed earlier. At least until #340799 (enum validation) is fixed.
29242         * uielement.cpp: Replaced g_assert_not_reached with g_warning.
29243         At least until #340799 (enum validation) is fixed. Part of #335413
29245 2007-11-13  Miguel de Icaza  <miguel@novell.com>
29247         * value.cpp (Value::ToString): Add method to help debug some
29248         apps. 
29250 2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
29252         * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
29253         elements.
29255 2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
29257         * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
29258         as this is unrequired (API wise) and can be expensive (it was enough
29259         to add custom bound calculation code to shapes and geometries).
29261 2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
29263         * shape.cpp: Removed g_assert_not_reached and, if any bad value is
29264         supplied (should be catched well before that, #340799), use the 
29265         default value. Fix part of #335413
29267 2007-11-09  Chris Toshok  <toshok@ximian.com>
29269         * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
29270         convert this over to using our List class.  Also fix a bug where
29271         elements with down dirty flags weren't being inserted propertly
29272         into the up dirty list.
29274 2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
29276         * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
29278 2007-11-09  Miguel de Icaza  <miguel@novell.com>
29280         * value.h (struct Value): Cope with NULL strings.
29282 2007-11-09  Jackson Harper  <jackson@ximian.com>
29284         * xaml.cpp: Closepath needs to draw a line to the path's starting
29285         point and needs to create a new path figure element at the
29286         starting point.
29288 2007-11-09  Jackson Harper  <jackson@ximian.com>
29290         * type.cpp|h.in: Add an accesor for the ContentProperty name.
29291         
29292 2007-11-09  Jackson Harper  <jackson@ximian.com>
29294         * xaml.cpp: Rework to allow unparented properties.  createFromXaml
29295         ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
29296         basically ignore the property and will return the SolidColorBrush
29297         as the top element. This fixes 335865.
29299 2007-11-08  Chris Toshok  <toshok@ximian.com>
29301         [ may go a long way toward fixing #337714, if it doesn't fix it
29302         outright ]
29303         
29304         * uielement.h, uielement.cpp: add an overload of ChildInvalidated
29305         that takes a UIElement* instead of a region.  The implementation
29306         just invalidates the entire bounds of the child in the parent.
29308         * collection.h, collection.cpp: we weren't breaking the
29309         item->parent link when removing visuals from a VisualCollection.
29310         Add VisualRemoved, which invalidates the child's region (and stop
29311         using child->Invalidate, since that won't work once the link to
29312         the parent is broken) and breaks the parent link.  Call
29313         VisualRemoved from everywhere we remove/replace a visual in our
29314         collection.  Also, rename VisualUpdated to VisualAdded, since
29315         that's more indicative of why the method is being called.
29316         
29317 2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
29319         * runtime.cpp (Attach): Emit the Resize event.
29320         (drawing_area_size_allocate): Emit the Resize event.
29322 2007-11-07  Chris Toshok  <toshok@ximian.com>
29324         * clock.cpp (Clock::Begin): guard against division by zero.
29326 2007-11-07  Chris Toshok  <toshok@ximian.com>
29328         * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
29329         width the canvas tells the surface to be (if it does).  this fixes
29330         issues uncovered by larry's improved bounds checking code.  Also,
29331         remove the instance fields for screen_height/width.  they're only
29332         used in one place, so make them local to that function.
29334 2007-11-07  Chris Toshok  <toshok@ximian.com>
29336         * brush.h, brush.cpp: add some c++ setters/getters to make some
29337         code a little smaller.
29339 2007-11-06  Larry Ewing  <lewing@novell.com>
29341         * src/frameworkelement.cpp: Force a full invalidate if the width
29342         or height property because panels include their children in the
29343         bounds compution and will pass the dirty check.
29345         * media.cpp: Implement the Region based rendering for MediaElement
29346         and Image.
29348         * panel.cpp: Unconditionally pass the region to the Children.
29350         * panel.cpp: when rendering children treat panels and other
29351         objects differently.  For containers pass the clipped region
29352         directly, for elements subdivide the region and paint each block.
29353         Renable FindStartingElement with a slightly less expensive
29354         algorithm.
29356         * rect.cpp: don't collapse complicated regions the drawing code is
29357         smarter now.
29359 2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
29361         * font.cpp (TextFont): Fixed to not exit() even when no font could
29362         be loaded from FreeType.
29364 2007-11-06  Chris Toshok  <toshok@ximian.com>
29366         * dependencyobject.cpp (GetObjectType): make this g_critical, and
29367         also print out a stack trace if STACK_DEBUG is enabled.
29369         * dependencyobject.h: stop Emitting the DestroyedEvent from the
29370         dtor.  instead do it from unref before we delete the object.
29372 2007-11-05  Chris Toshok  <toshok@ximian.com>
29374         * rect.h (ToGdkRectangle): quiet countless warnings.
29376 2007-11-05  Larry Ewing  <lewing@novell.com>
29378         Merge most of dirty region branch.  This makes the dirty logic and
29379         rendering code use the new region class to track more complicated
29380         shapes than bounding boxes when processing changed areas.
29382         * media.cpp: switch back to indirect rendering for drawing media
29383         elements until a solution to the boundry clipping can be found.
29385         * panel.cpp: disable FindStartingElement (the buggy) until a more
29386         optimal method can be found.
29388         * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
29389         needs to be fixed to order dirty children.
29391 2007-11-03  Chris Toshok  <toshok@ximian.com>
29393         * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
29394         call SkipToFill if we have no active child clocks.
29395         (ClockGroup::Stop): simplify this.
29396         (ClockGroup::Seek): make this look a little more like ::Stop.
29398 2007-11-03  Chris Toshok  <toshok@ximian.com>
29400         * xaml.cpp (repeat_behavior_from_str): add support for the
29401         "ff.ffx" format for repeat behaviors.
29403         * clock.cpp, clock.h: the first sizeable amount of work done in a
29404         while to correct the multitude of tiny bugs in clock handling.
29405         this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
29406         comment Clock::Tick a lot, and remove a bunch of the old
29407         CLOCK_DEBUG spew which was making the code that much more
29408         difficult to look at.
29409         
29410 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29412         * font.cpp (TextFontDescription::SetScale): Removed, this hack
29413         wasn't working as well as I'd hoped.
29414         (TextFontDescription::GetScale): Same.
29415         (TextFontDescription::CreatePattern): If the requested font size
29416         is < 41.0 (seems to be the magic number where scaling loses impact
29417         on metrics), use FontSize=41.0 and do proper scaling to get the
29418         actual size we want. My worry was that asking for small font sizes
29419         (smaller than 16.0?) would look ugly with this hack, but that is
29420         surprisingly not true. By always requesting a font size that will
29421         yield the generic font metrics (e.g. not some hacked font size),
29422         we will always be able to wrap identically no matter what FontSize
29423         is requested (so long as the width gets scaled appropriately).
29425         * text.cpp (TextBlock::ComputeTransform): Removed.
29427 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29429         * font.cpp (RenderLine): Render glyphs with index 0 too, so that
29430         we render an empty box for glyphs not in the font (just like
29431         Silverlight).
29433         * text.cpp (ComputeTransform): Fixed to use the correct matrix for
29434         getting the scale values.
29436 2007-11-01  Jackson Harper  <jackson@ximian.com>
29438         * trigger.h:
29439         * text.h:
29440         * geometry.h
29441         * transform.h:
29442         * animation.h:
29443         * brush.h:
29444         * panel.h: Add ContentProperty 'attributes'.
29445         * typegen.cs:
29446         * type.cpp|h:  Add content property information to types.  This
29447         will be used by the parser and will allow the parser to drop it's
29448         special type system.
29450 2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29452         * animation.cpp: AnimationStorage: unregister from registered events on
29453           destruction.
29455 2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
29457         * text.cpp (TextBlock::SetValue): Oops - if we are setting an
29458         empty string on the Text property, then we need to clear out
29459         whatever was there before (if anything).
29461 2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
29463         Fixes for handling lwsp cdata between <Run> elements.
29465         * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
29466         arg suggesting that we are being called in response to a new
29467         element starting vs an element ending.
29468         (start_element_handler): Pass true as the start arg to
29469         flush_char_data().
29470         (end_element_handler): Pass false as the start arg to
29471         flush_char_data().
29473         * text.cpp (SetValue): Only add a run if the string is non-empty.
29475 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29477         * dependencyobject.cpp: Guard against calling NULL.
29479 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29481         * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
29482           return value is always checked.
29484 2007-10-31  Chris Toshok  <toshok@ximian.com>
29486         * trigger.cpp (EventTrigger::SetTarget,
29487         EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
29488         "Loaded".
29490 2007-10-31  Jackson Harper  <jackson@ximian.com>
29492         * dependencyobject.h|cpp: Give DependencyProperties the ability to
29493         be readonly.
29494         * canvas.cpp:
29495         * animation.cpp: Signature updates
29496         
29497 2007-10-30  Jackson Harper  <jackson@ximian.com>
29499         * xaml.h: Add the error args to the loader.
29500         * xaml.cpp: Make most of our parsing errors match Silverlight.
29502 2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
29504         * font.cpp (Path): Check the path data != NULL before we make any
29505         cairo calls, no sense wasting cycles if we will no-op in the end.
29507 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29509         * media.cpp, media.h: Fix signedness mismatch warning.
29511 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29513         * mplayer.h: Added asf_player field.
29515 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29517         * Makefile.am: Add files in asf/.
29518         * media.cpp, media.h: Read ASF markers from the file. Save the position when
29519           advancing frames. Use the difference between the last position and the
29520           current position to determine if any MarkerReached events are supposed
29521           to be raised.
29522         * mplayer.cpp: Add some error checking/reporting when opening streams.
29523           Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
29524           to actually use it).
29526 2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
29528         * font.cpp (RenderLine): Split out from TextLayout::Render() and
29529         made to reset the brush at each segment to match Silverlight's
29530         behaviour.
29532 2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29534         * debug.cpp: Added print_gdb_trace with an explaining comment.
29535         * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
29536           isn't defined.
29538 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29540         * font.cpp (TextLayout::Render): Set y1 before creating/appending
29541         the path instead of in the segment loop.
29542         (TextLayout::Render): Make underline pos relative to y1 (aka the
29543         baseline) that we calculated above. Makes this easier to
29544         understand.
29546 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29548         * font.cpp (TextLayout::Layout): Always calculate segment->width
29549         here.
29550         (TextLayout::Render): Not here.
29552         * text.cpp (Glyphs::GetTransformOrigin): Implemented.
29554 2007-10-25  Jackson Harper  <jackson@ximian.com>
29556         * type.cpp|.in:
29557         * runtime.h|cpp: Add the Error event to the surface.  Raising this
29558         event will cause the plugins onError handler to be invoked, the
29559         default onError handler notifies the user of the error with a
29560         javascript alert.
29562 2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
29564         * stylus.cpp|h: Keep the semi-working code as a fast path to
29565         render strokes (if no outline color is used and when width ==
29566         height). Added a hack to support OutlineColor.
29568 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29570         * brush.cpp (Brush::SetupBrush): Now takes width and height
29571         arguments. Updated all brushes.
29573         * text.cpp (Glyphs::Render): We want to check this->width and
29574         this->height, not the width/height arguments.
29576         * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
29577         yet (surface = NULL), return.
29578         (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
29579         warnings.
29581 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
29583         * text.cpp (Glyphs::GetSizeForBrush): Implemented.
29585         * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
29587 2007-10-24  Jackson Harper  <jackson@ximian.com>
29589         * type.cpp.in/h.in: Add some c-style functions for creating
29590         instances.
29592 2007-10-24  Jackson Harper  <jackson@ximian.com>
29594         * typegen.cs:
29595         * type.cpp.in/h.in: Add a create instance call to types.  This
29596         will allow the parser to use our Type object instead of creating
29597         it's own.
29599 2007-10-24  Chris Toshok  <toshok@ximian.com>
29601         * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
29602         g_main_context_iteration so we don't block if there isn't anything
29603         to do.  also, emit 3 TickEvents to make sure the tick is
29604         propagated down into the animations.
29606 2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29608         * xaml.cpp: No need to check if the created object is an UIElement before
29609           calling SetSurface anymore.
29610         * visual.h: Update SetSurface to virtual.
29611         * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
29612           our Image object.
29613         * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
29614           the methods do nothing, the surface is still stored in Visual, but this
29615           allows classes that do not inherit from Visual to correctly set the
29616           surface on their members which do inherit from Visual).
29618 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
29620         * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
29622 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
29624         * text.cpp (TextBlock::ComputeTransform): If the scale has
29625         changed, set dirty = true so that we recalculate the layout.
29627         * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
29628         macro, just do it w/o so that we hush the compiler warning.
29630 2007-10-23  Chris Toshok  <toshok@ximian.com>
29632         * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
29633         a clock in absolute terms.  instead, offset it from the current
29634         time of the parent clock (or time manager).
29635         (Clock::Begin): clamp progress to 1.0
29636         (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
29637         by making it less sensitive to immediate changes.
29639 2007-10-23  Chris Toshok  <toshok@ximian.com>
29641         * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
29642         audio (so we sync to the clock).
29644         * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
29646 2007-10-23  Chris Toshok  <toshok@ximian.com>
29648         * clock.cpp (ManualTimeSource::SetCurrentTime): call
29649         g_main_context_iteration as a stopgap to make video elements show
29650         up.
29651         (TimeManager::TimeManager): remove spew.
29652         (TimeManager::Tick): re-enable the clock throttling.  oops.
29654 2007-10-23  Larry Ewing  <lewing@novell.com>
29656         * src/runtime.cpp: clear the background in more cases.
29658 2007-10-23  Larry Ewing  <lewing@novell.com>
29660         * src/runtime.cpp: make the eventbox windowless and remove the
29661         stale event code.  Let gtk do the clearing.
29663 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
29665         * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
29666         (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
29667         the correct frame rather than just rendering the first frame we
29668         find.
29670 2007-10-23  Chris Toshok  <toshok@ximian.com>
29672         * mplayer.cpp: replace all occurences of av_gettime with
29673         TimeManager::Instance()->GetCurrentTimeUsec().
29675         * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
29676         thingy.
29677         (render_cb): re-enable the fps on the console.  oops.
29679         * runtime.h (RuntimeInitFlags): add
29680         RUNTIME_INIT_TIMESOURCE_MANUAL.
29682         * type.h.in, type.cpp.in: remove BASE (should have happened on my
29683         last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
29684         event.
29686         * type.h, type.cpp: sync to the .in files.
29688         * clock.h, clock.cpp: add the idea of a TimeSource to the
29689         TimeManager.  Two are written - SystemTimeSource, which uses the
29690         gtk timeout, and ManualTimeSource, which allows code to set what
29691         the global time should be.  Also, add GetCurrentTimeUsec() for use
29692         by mplayer, so we can switch it away from av_gettime and make it
29693         possible for video to sync to the ManualTimeSource.
29695 2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29697         * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
29699 2007-10-23  Larry Ewing  <lewing@novell.com>
29701         * runtime.cpp: make sure we unref the surface.
29703 2007-10-23  Larry Ewing  <lewing@novell.com>
29705         * runtime.cpp: avoid making gdk calls that pull in the platform
29706         cairo.
29708 2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
29710         * text.cpp: Don't allow Pango rendering if disabled at
29711         configure-time.
29712         (TextBlock::ComputeTransform): Moved the scale logic here from
29713         OnPropertyChanged() so that we catch all transform changes.
29715         * uielement.h: Made ComputeTransform() virtual.
29717 2007-10-22  Chris Toshok  <toshok@ximian.com>
29719         * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
29720         we can just cast to Clock here.
29722         * dependencyobject.h, dependencyobject.cpp: remove the Base class,
29723         and make roll EventObject and Base into one class (still called
29724         EventObject).
29726 2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
29728         * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
29729         * stylus.cpp|h: Add some missing functions. Rendering changes 
29730         (not active, work in progress).
29732 2007-10-18  Chris Toshok  <toshok@ximian.com>
29734         * dependencyobject.h: fix comment.
29736         * animation.h, animation.cpp: use the
29737         Clock::CurrentStateInvalidated event to reset the property value
29738         to baseValue instead of overriding the Clock::Stop method.  This
29739         fixes clocks with FillBehavior="Stop" instead of storyboard with
29740         FillBehavior="Fill".
29742         * clock.cpp (Clock::Tick): remove a stupid block of code that was
29743         causing clocks which were Filling to spontaneously end up in their
29744         Active state again.
29746 2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
29748         * geometry.cpp: New code to handle arc segments. No known issues
29749         (except the handling of near zero values which doesn't seems to
29750         be constant).
29751         * libmoon.h, Makefile.am: Remove reference to rsvg.h
29752         * rsvg.cpp|h: Remove from SVN.
29754 2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
29756         * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
29757         based on the ones from libgdiplus.
29759 2007-10-17  Chris Toshok  <toshok@ximian.com>
29761         * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
29762         created managed dob to the created_elements list so it gets
29763         unrefed properly.
29764         (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
29765         (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
29767 2007-10-17  Chris Toshok  <toshok@ximian.com>
29769         * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
29770         (sizes_LDADD): same.
29772 2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29774         * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
29775           OBJECT_TRACKING isn't defined.
29776         * runtime.h: Enable the contextual downloader warning again.
29777         * dependencyobject.cpp: Fix build when DEBUG is defined.
29779 2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
29781         * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
29782         properties changing value, don't fall thru to the rest of the
29783         checks (as then we'd re-emit it to sublisteners which isn't what
29784         we want I don't think). Also, don't change the font scale unless
29785         it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
29787 2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
29789         * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
29790         changes and apply the y-scale to the font so that we can more
29791         accurately path the font glyphs at the scale we intend to render
29792         them at.
29794         * font.cpp (TextFont): Cache the scale here.
29795         (Kerning): Apply the scale.
29796         (Descender): Here too.
29797         (Ascender): And here.
29798         (Height): Same.
29799         (GetGlyphInfo): Create and apply the scale/invert matrix. Also
29800         scale the glyph metrics.
29801         (UnderlinePosition): Apply the scale.
29802         (UnderlineThickness): Same here.
29803         (TextFontDescription): Added a scale, default to 1.0
29804         (CreatePattern): Set the scale on the pattern.
29805         (UnsetFields): When unsetting values, restore them to their
29806         default values.
29807         (Merge): Merge the scale.
29808         (GetScale): New method.
29809         (SetScale): New method.
29811 2007-10-16  Chris Toshok  <toshok@ximian.com>
29813         * dependencyobject.cpp (detach_depobj_values): call
29814         obj->SetParent(NULL) here as well, so we don't reference a
29815         destroyed parent.
29817         * runtime.cpp (Surface::Surface): use Surface::timeline instead of
29818         a local variable.
29819         (Surface::~Surface): make sure to remove the surface's clock_group
29820         from the time manager.  Also, unref the timeline we create in the
29821         ctor.
29822         (runtime_shutdown): reimplement the oldest 10 alive object
29823         printing stuff in the face of using a hashtable.
29825         * runtime.h: add Surface::timeline, so we can clean it up in
29826         ~Surface.
29828         * dependencyobject.h (Base::) use a hash table to track alive
29829         objects instead of a list.  this speeds up things immensely.
29831         * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
29832         children so any further GetParent() calls won't return a destroyed
29833         object.
29835         * animation.cpp (Storyboard::~Storyboard): guard against a crash
29836         when a parent clock is freed before the child clock.
29838         * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
29840 2007-10-15  Chris Toshok  <toshok@ximian.com>
29842         * animation.[h,cpp]: remove the strong reference from
29843         AnimationStorage to its target object, and instead use the
29844         EventObject::DestroyEvent to implement a weak reference.  See the
29845         TODO for a blurb about generalizing this.
29847         * typegen.cs (GenerateTypeCpp): remove the special case code that
29848         makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
29849         EVENTOBJECT as the parent for the DestroyedEvent to line up
29850         properly in the event tables.
29852         * type.cpp.in, type.cpp (types_init_register_events): register the
29853         Destroyed event.
29855         * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
29856         emitted just before we clean up the EventObject's event list.
29858 2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
29860         * text.cpp (Layout): I think I finally figured out the scaling to
29861         apply to the units provided in the Indices property and also
29862         discovered that the Advance is not applied at the uOffset, it is
29863         applied independently of the uOffset.
29864         (Render): Same fixes as in Layout().
29866 2007-10-13  Chris Toshok  <toshok@ximian.com>
29868         * animation.cpp (balf): fix bug 325175 by not taking the square
29869         root of a negative number (fixes the flashing in the credits for
29870         Monotone.)  Also clean up this code so that we're not using
29871         globals to communicate parameters (through Simpson) between balf
29872         and BezierArcLength, and lower the tolerance (I doubt we need
29873         *that* much precision).
29875 2007-10-12  Chris Toshok  <toshok@ximian.com>
29877         * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
29878         dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
29879         transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
29880         which gives the actual object whose property changed.  Also, in a
29881         few instances fix the NotifyAttachersOnPropertyChanged call that
29882         some classes used to not use the subprop, but the prop.  The
29883         subprop doesn't refer to "this" in those instances, but to @obj.
29884         @prop refers to "this".
29886         * collection.[h,cpp]: use the above change to correctly support
29887         the DependencyObject parameter of OnCollectionChanged (when the
29888         change type is ItemChanged).
29889         
29890         * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
29891         move the ZIndex property support from UIElement to Panel, which
29892         makes more logical sense (and is likely the reason MS removed the
29893         property from UIElement in 1.1) -- ZIndex is about what happens to
29894         this UIElement in relation to its siblings.
29895         
29896 2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
29898         * shape.cpp: Only set miter limit if line join is set to miter.
29900 2007-10-12  Chris Toshok  <toshok@ximian.com>
29902         * collection.cpp: move the panel logic away from VisualCollection.
29903         It belongs in Panel::OnCollectionChanged.
29905         * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
29906         everything the VisualCollection code used to do on its behalf.
29908         * uielement.h, uielement.cpp: introduce a new field for use with
29909         the dirty code - force_redraw_of_new_bounds.  Basically, we set
29910         the field according to the parameter passed to UpdateBounds.
29912         * dirty.cpp (UpdateBounds): force an invalidate if
29913         el->force_redraw_of_new_bounds is set.
29915 2007-10-12  Chris Toshok  <toshok@ximian.com>
29917         * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
29918         RemoveTimeout) which wrap the glib timeout calls we were making.
29919         This lets us keep track of active timeout ids and remove them all
29920         when the TimeManager shuts down.  So, if we leak MediaElements
29921         (which seems to be happening in TopBanana), we don't crash.
29923         * mplayer.cpp: use the new TimeManager timeout call instead of the
29924         glib mainloop directly.
29926         * media.cpp: same.
29927         
29928 2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
29930         * downloader.cpp (downloader_init): Default the DownloadProgress
29931         to 0.0.
29933 2007-10-12  Jackson Harper  <jackson@ximian.com>
29935         * downloader.h: Add an access to the downloader state.  I need
29936         this in the plugin.
29938 2007-10-12  Jb Evain  <jbevain@novell.com>
29940         * brush.cpp|h: add image_brush_set_source.
29942 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29944         * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
29945         where it doesn't handle J-Type picture frames.
29947 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
29949         * panel.cpp|h: Split Render into Render and RenderChildren, so 
29950         the later can be overriden in InkPresenter.
29951         * stylus.cpp|h: A quick (see FIXME) implementation to render 
29952         ink found in some xaml files.
29954 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29956         * mplayer.cpp: Updated to use the new Queue class.
29957         (AdvanceFrame): Accessing the queue directly as a linked list
29958         allows us to simplify the loop a little so that we don't have to
29959         keep a reference to the previous packet's decoded frame.
29961         * list.cpp: Added a new Queue class which will replace GAsyncQueue
29962         in mplayer.cpp.
29964 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
29966         * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
29967         (AdvanceFrame): Keep a reference to the previous frame in case we
29968         reach the end of the queue.
29970 2007-10-11  Jb Evain  <jbevain@novell.com>
29972         * dependencyobject.cpp|h: add dependency_object_set_name.
29974         * media.cpp|h: add media_attribute_get_value and
29975         media_attribute_set_value
29977         * playlist.cpp|h: populate MediaAttributeCollection when
29978         a playlist entry is opened.
29980 2007-10-11  Larry Ewing  <lewing@novell.com>
29982         * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
29983         areas... have more fun in general.
29984         
29985         * src/rect.h: replace Floor function with RoundOut function.
29986         * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
29987         clipping issue in sprawl.
29989 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
29991         * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
29992         which it inherits)
29994 2007-10-11  Jb Evain  <jbevain@novell.com>
29996         * playlist.cpp: replace C++ casts to plain casts.
29998 2007-10-11  Jb Evain  <jbevain@novell.com>
30000         * collection.cpp: replace dynamic_casts with plain casts
30001         as per Miguel suggestion.
30003 2007-10-11  Jb Evain  <jbevain@novell.com>
30005         * collection.cpp|h: add, implement and expose the
30006         MediaAttributeCollection::GetItemByName method.
30008 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30010         * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
30012 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30014         * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
30015         * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
30016           char/char mismatch warnings.
30017         * visual.cpp: Fix no newline warning.
30018         * runtime.cpp: Fix a initialization warning.
30019         * demo.cpp: Remove unused variable.
30021 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30023         * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
30024           matches base_unref behaviour.
30025         * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
30026           operations.
30028 2007-10-10  Chris Toshok  <toshok@ximian.com>
30030         * runtime.cpp (runtime_shutdown): explicitly drain all remaining
30031         pending managed unrefs.
30033         * dependencyobject.cpp: remove the Base::ref/unref implementations
30034         from here.  Add the threadsafe base_unref_delayed code, as well as
30035         code to manage a tick call to free up the instances on the next
30036         clock tick.  Also provide an external api (drain_unrefs -- bad
30037         name, fix me plz k thx) so that runtime.cpp can explicitly unref
30038         everything when we shutdown (if they haven't already been dealt
30039         with.)
30041         * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
30042         we don't have 2 implementations of all these methods.  Instead,
30043         just ifdef the relevant portions of the methods, and keep them in
30044         dependencyobject.h.  Also, add prototypes for drain_unrefs and
30045         base_unref_delayed, which is called from managed code.
30047         * collection.h, collection.cpp: make Clear take an optional
30048         "emit_event" argument (default = true.)  Call Clear instead of
30049         list->Clear(true) in our dtor so we clean up the namespaces and
30050         Detach properly.
30052         * debug.cpp: use an extern "C" block. looks nicer.
30054 2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
30056         * brush.cpp: Handle GradientStop with negative offset like 
30057         Silverlight (seems to) do.
30059 2007-10-10  Chris Toshok  <toshok@ximian.com>
30061         * panel.cpp (Panel::~Panel): no need to clear our Children
30062         collection.  the normal dtor stuff will do that for us.
30064 2007-10-10  Larry Ewing  <lewing@novell.com>
30066         * media.cpp: Fill with the element extents don't just paint the
30067         surface because if the stretch is specified we may end up painting
30068         outside the proper area.
30070 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30072         * media.cpp: When updating the MediaElement's progress, get the Downloader's
30073           DownloadProgressProperty.
30075 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30077         * visual.cpp, visual.h: Added visual_set_surface, and guard against
30078           overwriting a set surface with null.
30080 2007-10-10  Jackson Harper  <jackson@ximian.com>
30082         * collection.cpp: Set the surface when adding a visual element.
30084 2007-10-10  Jackson Harper  <jackson@ximian.com>
30086         * shape.cpp: We need to do something when line properties are
30087         changed. Fixes test-animation-line.xaml
30089 2007-10-10  Jackson Harper  <jackson@ximian.com>
30091         * xaml.cpp: Don't allow the same property to be set twice.
30093 2007-10-09  Jackson Harper  <jackson@ximian.com>
30095         * xaml.cpp: When we create custom elements we also need to set the
30096         surface on them and mark them for cleanup.
30098 2007-10-09  Jackson Harper  <jackson@ximian.com>
30100         * xaml.cpp: When we are creating objects from a string, set the
30101         encoding to utf8 so that expat doesn't try to determine the
30102         encoding from the ?xml declaration (which will be incorrect
30103         because the string is in utf8).
30105 2007-10-09  Chris Toshok  <toshok@ximian.com>
30107         * clock.cpp (ClockGroup::Stop): If the clock group has children we
30108         depend on stopping them first.  But if the clock group is without
30109         children, chain up to Clock::Stop here.
30111 2007-10-09  Jb Evain  <jbevain@novell.com>
30113         * uielement.h: define new methods RenderClipPath and
30114         IntersectBoundsWithClipPath.
30115         * uielement.cpp: implement them.
30116         * panel.cpp, shape.cpp, media.cpp: use them.
30118 2007-10-09  Chris Toshok  <toshok@ximian.com>
30120         * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
30121         frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
30122         brush.cpp, text.cpp: s/Attachee/Attacher.
30124         * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
30125         call that is used at dtor time to call Detach on all
30126         DependencyObject-subclassed Values, and 2) make NULL available in
30127         detach as a wildcard - passing NULL for the property detaches all
30128         properties that the current object might be watching on.
30130         Also, correct a longstanding problem in terminology/api.  if A's
30131         code calls B->Attach (..., this), then A is the Attacher, not the
30132         Attachee.  Basically s/Attachee/Attacher in all places,
30133         everywhere.
30135         * dependencyobject.cpp: same changes as above.  Also, change the
30136         current_values hash table to key off the DependencyProperty, not
30137         off the DependencyProperty name.  This allows us to use a direct
30138         hash, as opposed to a string hash.
30139         
30140         * collection.cpp (dtor): make sure sure to detach from all the
30141         list elements before we clear the list.
30143 2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
30145         * font.cpp (Layout): Only break words on ASCII lwsp, we should not
30146         break on nbsp's for example.
30148 2007-10-09  Jackson Harper  <jackson@ximian.com>
30150         * xaml.cpp: Make sure the Surface gets set on custom created
30151         UIElements.  Also add them to the created list, so they get freed.
30153 2007-10-09  Jackson Harper  <jackson@ximian.com>
30155         * control.cpp: Since controls are UIElements we need to make sure
30156         their surface is set when we create them from XAML.
30158 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30160         * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
30162 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30164         * debug.cpp, debug.h: Conditionally compile support for managed stack
30165           frames.
30167         * runtime.cpp: add more debug code.
30169 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
30171         * text.cpp (OnPropertyChanged): We may need to relayout even if
30172         the wrapping is set to NoWrap.
30174 2007-10-08  Zoltan Varga  <vargaz@gmail.com>
30176         * text.cpp (OnPropertyChanged): Do a relayout if the Width property
30177         changes and text wrapping is enabled.
30179 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
30181         * mplayer.cpp (Open): If the media has video, load the first video
30182         frame.
30183         (Seek): Same.
30184         (AdvanceFrame): Fixed to "end" properly.
30186         * media.cpp: Don't manually call DisplayFrame() anymore.
30188 2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30190         * xaml.cpp: Set the surface of newly created objects (where applicable).
30191         * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
30192         * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
30193           brand new CreateDownloader method.
30194         * visual.h: Added a surface field, complete with setters and getters.
30195         * downloader.cpp, downloader.h: Add a context field.
30196         * runtime.h: Add a downloader_context field, and CreateDownloader methods.
30197         * runtime.cpp: Add a downloader_context field.
30199 2007-10-09  Larry Ewing  <lewing@novell.com>
30201         * media.cpp: add clipping to shape::DoDraw and to the bounds
30202         computations.
30204 2007-10-08  Larry Ewing  <lewing@novell.com>
30206         * media.cpp:
30207         * panel.cpp: intersect the bounds with the clip path to
30208         optimize the invalidated region.
30210         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30211         with a NULL.
30213 2007-10-08  Larry Ewing  <lewing@novell.com>
30215         * media.cpp:
30216         * panel.cpp: intersect the bounds with the clip path to
30217         optimize the invalidated region.
30219         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30220         with a NULL.
30222 2007-10-08  Larry Ewing  <lewing@novell.com>
30224         * media.cpp:
30225         * panel.cpp: intersect the bounds with the clip path to
30226         optimize the invalidated region.
30228         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30229         with a NULL.
30231 2007-10-08  Larry Ewing  <lewing@novell.com>
30233         * media.cpp:
30234         * panel.cpp: intersect the bounds with the clip path to
30235         optimize the invalidated region.
30237         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30238         with a NULL.
30240 2007-10-08  Larry Ewing  <lewing@novell.com>
30242         * media.cpp:
30243         * panel.cpp: intersect the bounds with the clip path to
30244         optimize the invalidated region.
30246         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30247         with a NULL.
30249 2007-10-08  Larry Ewing  <lewing@novell.com>
30251         * runtime.cpp: change previous logic to drop the alpha
30252         completely here until more testing can be done.
30254 2007-10-08  Larry Ewing  <lewing@novell.com>
30256         * runtime.cpp: draw the background color blended over white.
30258 2007-10-08  Larry Ewing  <lewing@novell.com>
30260         * media.cpp: render clip paths on media elements.
30262 2007-10-07  Larry Ewing  <lewing@novell.com>
30264         * xaml.cpp:
30265         * rect.cpp:
30266         * point.cpp:
30267         * array.cpp: use g_utf8_next_char in some places to start making
30268         the parsers more utf8 safe.  Make rect/point_from_str more robust
30269         against separator characters
30271 2007-10-07  Chris Toshok  <toshok@ximian.com>
30273         * clock.cpp (Clock::Tick): make sure we're reversed before
30274         switching to Fill if the clock is at 0 (and make sure we're not
30275         reversed before switching to Fill on the other end of the
30276         timespan).  Some animations were skipping directly to fill without
30277         ever running.
30278         (ClockGroup::Tick): don't Tick a child clock if it's about to
30279         Stop.  the new tick might cause it to fill.. this needs work
30280         still.
30282 2007-10-06  Jb Evain  <jbevain@novell.com>
30284         * media.cpp (Image::Render): Deal with clipping.
30286 2007-10-05  Chris Toshok  <toshok@ximian.com>
30288         * animation.cpp (KeyFrameComparer): fix airlines (and probably a
30289         host of other keyframe usage besides).  The problem was that this
30290         function was treating its args as keyframe*'s, when in actuality
30291         they were keyframe**'s.  that explains the intermittent nature of
30292         the bug, as well as the faulty sorting I was experiencing earlier.
30294         * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
30296 2007-10-05  Chris Toshok  <toshok@ximian.com>
30298         * clock.cpp (TimeManager::Tick): I have no idea how this is
30299         possible, but the throttle code is *completely* screwing up the
30300         Airlines demo animations.
30302 2007-10-05  Jackson Harper  <jackson@ximian.com>
30304         * control.cpp: need to pass this down.  Fixes dragging controls in
30305         top banana.
30307 2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
30309         * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
30310         the paused case.
30311         (Stop): Here too.
30312         (SetValue): And here too after a Seek() (altho it won't work if
30313         the media is paused).
30315         * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
30316         update, which is true if any avcodec_decode_video() sets redraw to
30317         true.
30318         (DisplayFrame): New method largely based on JB's work to load the
30319         current video frame into the mplayer surface.
30321 2007-10-05  Jb Evain  <jbevain@novell.com>
30323         * media.cpp|h, playlist.cpp|h: Don't open the first entry
30324         when a playlist entry has been stopped before switching to
30325         the next one.
30327 2007-10-04  Chris Toshok  <toshok@ximian.com>
30329         * clock.cpp: fix a couple of compilation warnings, and tighten up
30330         the list_clocks output.
30332 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
30334         * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
30335         since it is not locale dependant.
30337         * rect.cpp (rect_from_str): Same.
30339         * point.cpp (point_from_str): Same.
30341         * xaml.cpp (get_point): Fixed to update *in properly on success.
30343 2007-10-05  Jb Evain  <jbevain@novell.com>
30345         * media.cpp: correctly advertise 'Opening' state of MediaElement.
30347 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
30349         * xaml.cpp: (more_points_available): Simplified by looping while
30350         isspace. Also, update our input pointer if we have to scan over
30351         lwsp.
30352         (get_point): Now returns bool based on whether it manages to
30353         extract a point or not.
30354         (geometry_from_str): Updated.
30356 2007-10-04  Jackson Harper  <jackson@ximian.com>
30358         * xaml.cpp: Points after the initial two line points should
30359         actually create new line segments, not a polyline, this fixes
30360         relative points on multiple lines.
30362 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
30364         * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
30365         hasn't completely been initialized.
30366         (Glyphs::SetIndices): Do not do scaling here, this seems to be
30367         font size dependant.
30369         * shape.cpp (DoDraw): Use 'delete []' to free dmul.
30371 2007-10-04  Jackson Harper  <jackson@ximian.com>
30373         * xaml.cpp: Handle repeated bezier segments properly.
30375 2007-10-04  Chris Toshok  <toshok@ximian.com>
30377         * clock.cpp: lots of little changes.  fixes clock16.xaml, and
30378         therefor the score animation in dr.popper goes away properly.
30379         also fixes a few other issues with FillBehavior (checked by our
30380         clock xaml tests.)
30382 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
30384         * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
30385         variable.
30386         (Layout): Use a local TextFont variable.
30387         (Render): Same.
30388         (text_init): Always call font_init() as Glyphs use it even when
30389         text=pango is specified.
30391 2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
30393         * shape.cpp|h: Shapes that uses their Width and Height must use
30394         them for brush size. Fix brush rendering when used with 
30395         UIElement.RenderTransform property.
30397 2007-10-03  Chris Toshok  <toshok@ximian.com>
30399         * text.cpp: make Glyphs usable even when text=pango.  "usable"
30400         means "don't crash" :)
30402 2007-10-03  Chris Toshok  <toshok@ximian.com>
30404         * uielement.h: rename UseAA() to EnableAntiAlias().  it's
30405         arguably a better name, and more importantly it's the name that
30406         media.cpp/h changed it too, which broke the AA hack used in
30407         dirty.cpp.
30409         * dirty.cpp (process_dirty_elements): rename UseAA() to
30410         EnableAntiAlias().
30412 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30414         * array.cpp: Move double array allocations back to new/delete.
30416 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30418         * font.cpp (EmSize): Removed, not needed.
30419         (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
30420         bit of memory that we aren't using.
30422         * text.cpp (TextBlock::SetFontSource): Implemented.
30423         (text_init): Default StyleSimulations to None.
30425 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30427         * brush.cpp|h: SL and Cairo defaults to different values (end 
30428         color versus start color) when a gradiant is restricted to a 
30429         single color (e.g. if the start and end points of a linear 
30430         gradient are identical).
30432 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30434         * text.cpp: Implemented the Glyphs element.
30436         * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
30437         with the the Glyphs element implemented in text.cpp.
30438         (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
30439         (GetGlyphInfoByIndex): New method.
30440         (CreatePattern): If the filename is specified, don't call
30441         FcFontMatch(), simply return the constructed pattern.
30443 2007-10-02  Chris Toshok  <toshok@ximian.com>
30445         * clock.h, clock.cpp: remove TimeManager::current_fps, it's
30446         unused.
30448 2007-10-02  Chris Toshok  <toshok@ximian.com>
30450         * runtime.cpp (Surface::UpdateFullScreen): just call
30451         gtk_window_fullscreen instead of setting decorations/above
30452         manually.  this puts us on top of the panel.
30454 2007-10-02  Chris Toshok  <toshok@ximian.com>
30456         * clock.h, clock.cpp: rip out the old stupid throttling code and
30457         replace it with an exponential moving average of the delays.
30459 2007-10-02  Chris Toshok  <toshok@ximian.com>
30461         * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
30462         use them to make test/xaml/clock8.xaml work.
30464 2007-10-02  Larry Ewing  <lewing@novell.com>
30466         * shape.cpp (Path::ComputeBounds): use the specified width/height
30467         if stretch is != StretchNone.  Fixes rendering issues with halo
30468         and several other sites.
30470 2007-10-02  Chris Toshok  <toshok@ximian.com>
30472         * animation.h, animation.cpp: override Stop() on AnimationClocks
30473         so we can reset the property value to the baseValue stored in our
30474         AnimationStorage.
30476         * clock.h, clock.cpp: fix the starting of stopped clockgroups when
30477         there are active children (fixes the storyboards running for 1
30478         tick then stopping).  Add more convoluted code in order to get the
30479         expected behavior when FillBehavior=Stop on a storyboard.
30481 2007-10-02  Chris Toshok  <toshok@ximian.com>
30483         * clock.h, clock.cpp: a few changes.  quit with all the delay
30484         computation in the throttling code, and just deal with fps until
30485         we're ready to switch to delays.  it simplifies everything a
30486         bunch.  Also, narrow the type for Clock::Get/SetParent to
30487         ClockGroup.  Add some rudimentary code for printing out the state
30488         of all clocks (use TimeManager::Instance()->ListClocks() or
30489         time_manager_list_clocks()).  Also, remove the TimeManager::Tick
30490         code which started clocks.  This commit changes the way
30491         storyboards are registered, so the only things in the
30492         TimeManager's list should be the per-surface ClockGroups, which
30493         are started in Storyboard::Begin (if they aren't already running.)
30495         * collection.cpp (VisualCollection::Add): this is a bug waiting to
30496         happen.  Call VisualUpdate (thereby setting the child's parent and
30497         initializing the transforms/opacity) before emitting Loaded on the
30498         child.
30500         * animation.h, animation.cpp: Storyboards now add their clocks to
30501         the per-surface ClockGroup.  This involves some groveling to find
30502         the surface, but it's nothing we haven't seen before.  There's no
30503         direct TimeManager calls here now - stopping the surface's
30504         ClockGroup will stop all animations running on it.
30506         * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
30507         storyboards attach to this, and this attaches to the TimeManager.
30508         
30509 2007-10-02  Jackson Harper  <jackson@ximian.com>
30511         * media.cpp: Some default values to avoid nullref exceptions.
30513 2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
30515         * xaml.cpp: Add support for 'F' in the PML parser to enable setting
30516         the FillMode of Geometry objects. Removed default value set as it is 
30517         identical to the default property value.
30519 2007-10-02  Jb Evain  <jbevain@novell.com>
30521         * playlist.cpp|h: implemented start time for playlist entries.
30523 2007-10-02  Jb Evain  <jbevain@novell.com>
30525         * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
30527 2007-10-02  Larry Ewing  <lewing@novell.com>
30529         * uielement.cpp (UIElement::Invalidate): Only invalidate if
30530         opacity is > 0.
30531         * dirty.cpp (process_dirty_elements): be sure to invalidate before
30532         and after the opacity change.
30534 2007-10-02  Jb Evain  <jbevain@novell.com>
30536         * playlist.cpp: deal with non lowercase file exts.
30538 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30540         * font.cpp: Reduced Glyph table memory usage.
30542 2007-10-01  Chris Toshok  <toshok@ximian.com>
30544         * dirty.cpp (process_dirty_elements): remove the special if checks
30545         which kept the ComputeBounds/Invalidate code from running on the
30546         toplevel surface.  Canvas::ComputeBounds() does the right thing
30547         for the toplevel surface, so we just trust it.  fixes invalidation
30548         of root canvases.
30550         * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
30551         (OnSubPropertyChanged): same.
30553 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30555         * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
30556         void (instead of the, now, unused bool);
30558 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30560         * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
30562 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30564         * shape.cpp|h: Remove Path::IsFilled since the property 
30565         PathFigure::IsFilledProperty doesn't exists anymore.
30567 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30569         * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
30570         wrapping.
30572         * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
30574 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30576         * runtime.cpp: Only show the server as the url in the fullscreen
30577         message.
30579 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30581         * panel.cpp: Call ComputeBounds before invalidating on Background 
30582         changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
30584 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30586         * fullscreen.h, fullscreen.xaml: Added.
30587         * text.h: Make GetActualHeight and GetActualWidth public.
30588         * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
30589           objects now: the fullscreen message and the toplevle canvas),
30590           SetSourceLocation and Show/HideFullScreenMessage.
30591         * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
30592           Surface::GetTopLevel.
30594 2007-09-30  Zoltan Varga  <vargaz@gmail.com>
30596         * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
30597         to managed code.
30599         * text.cpp (text_destroy): Avoid crash if default_foreground_brush
30600         is not set.
30602 2007-09-28  Chris Toshok  <toshok@ximian.com>
30604         * Makefile.am: remove the XRANDR conditional here.  it's #defined
30605         in config.h now.
30607 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30609         * font.cpp (CreatePattern): If a filename has been specified for
30610         loading a font, don't set family values. Also, call
30611         FcDefaultSubstitute() on the pattern before trying to find a
30612         match.
30614 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30616         Optimization hack that saves time by not recalculating the layout
30617         when the foreground brush changes (since we'd have exactly the
30618         same layout).
30620         * font.cpp (TextRun): Now takes the address of the brush than the
30621         brush itself, so that when brushes change on the Inline, we get
30622         the brush change for free.
30624         * text.cpp (LayoutSilverlight): Pass the addresses of the
30625         foreground brushes to TextRun ctor and don't bother with the
30626         default foreground brush here, save that for ::Paint-time.
30627         (LayoutPango): Same idea as LayoutSilverlight().
30628         (Paint): Get the default foreground and pass that off to the
30629         pango/silverlight text renderers.
30630         (OnPropertyChanged): Don't force a re-layout if the property that
30631         changed was the TextBlock::ForegroundProperty.
30632         (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
30634         * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
30635         argument so that we don't have to specify it in the creation of
30636         our layout attributes (this saving us a re-layout when a brush
30637         changes).
30638         (mango_attr_foreground_new): Now takes the address of the brush
30639         rather than the brush itself, so that when brushes change on the
30640         Inline, we get the brush change for free.
30642 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30644         * text.cpp (TextBlock): We cannot re-use the
30645         default_foreground_brush here because we cannot allow it to be
30646         altered in any way.
30648 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30650         * font.cpp (TextFont::IsScalable): New method.
30651         (TextFont::Path): Paths a glyph but does not stroke or fill. Only
30652         available if the font is scalable.
30653         (TextLayout::Render): Cache each segment's cairo_path_t so that
30654         future renders do not have to do it on a glyph-by-glyph basis
30655         (avoids possible glyph cache misses). May also save time by doing
30656         a single fill rather than a fill per glyph.
30658 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30660         * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
30661         argument.
30662         (RenderGlyphPath): Same.
30663         (UnderlinePosition): New method.
30664         (UnderlineThickness): New method.
30665         (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
30666         made a funny).
30668 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
30670         * text.cpp (LayoutSilverlight): LineBreaks don't really care about
30671         TextDecorations or Foreground properties.
30673         * font.cpp (TextRun::~TextRun): unref the font.
30674         (TextSegment): now references the original TextRun instead of
30675         copying pointers/values.
30676         (TextLayout::Render): Updated for above change.
30678 2007-09-28  Zoltan Varga  <vargaz@gmail.com>
30680         * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
30681         x:Name attributes.
30682         (LoadCode): Change return type to bool to indicate a loading error.
30684 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
30686         * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
30687         (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
30688         false, then it signifies MediaEnded, no need to explicitly check.
30689         (MediaElement::SetSource): Delete the current source here.
30690         (MediaElement::~MediaElement): C++ `delete' operator doesn't
30691         handle freeing NULL pointers.
30692         (MediaElement::DownloaderComplete): No need to delete the source
30693         here, done in SetSource() instead.
30695         * font.cpp: Created my own GlyphMetrics struct which uses doubles
30696         instead of ints for more accurate layout/rendering calculations.
30697         (Layout): When comparing to max_width, add 1.0 to account for
30698         rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
30699         width/height values for the same reason.
30701 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
30703         * xaml.cpp: Free locally allocated Points inside get_point_array.
30705 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
30707         * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
30708         the path.
30710 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
30712         * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
30713         thickness == 0 optimization.
30715 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30717         * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
30718         Silverlight does).
30720         * text.cpp: Merged with custom text layout code - layout algorithm
30721         is chosen at runtime_init() via flags or environment variable.
30723 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30725         * runtime.cpp (runtime_init): Don't check pango version info,
30726         we're just gonna statically link in pango (and/or do
30727         configure-time checks if the user decides to link to a system
30728         pango). Implemented some preliminary environment variable parsing
30729         action to decide if the user wnts to use ffmpeg vs ms codecs,
30730         pango vs my "silverlight" text layout engine, etc.
30732 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
30734         * runtime.cpp (runtime_init): Now takes a flags argument for
30735         enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
30736         then make sure pango is recent enough (if not, print a warning
30737         akin to the cairo warning).
30739 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
30741         * array.cpp: Fix issues on double parsing, including bug #328915 and
30742         test cases in /moon/test/xaml/points-torture.xaml
30744 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30746         * animation.cpp: Add a few null checks.
30748 2007-09-27  Larry Ewing  <lewing@novell.com>
30750         * media.cpp: Don't mark our download progress as 100% until we've
30751         been notified by the downloader that it is complete.  Some
30752         programs check download progress to decide when they can safely
30753         poke at the media element properties.
30754         * downloader.cpp: set the final downloader progress to 1.0 not 100.
30756 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
30758         * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
30759         line. Fix bug #328907.
30761 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30763         * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
30764           change InitializeFromXaml to take a XamlLoader argument.
30766 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30768         * xaml.cpp: More unrefs.
30770 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30772         * text.cpp: Unref a few newly created objects.
30773         * control.cpp: Remove an unnecessary ref.
30775 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
30777         * text.cpp (SetValue): Implement proper handling of the Text property.
30778         (GetValue): Ditto.
30779         (OnPropertyChanged): Force a relayout when the foreground property changes.
30780         (Layout): Remove the laying out of the contents of the Text property, since the
30781         text is now contained in the first inline.
30782         
30783 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30785         * font.cpp (Layout): Include the space char on the line before
30786         wrapping, this is noticable when TextDecorations="Underline" is
30787         enabled.
30788         (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
30789         (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
30790         (TextFont::Render): Implemented.
30792 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
30794         * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
30795         (and was removed elsewhere, except here);
30797 2007-09-26  Chris Toshok  <toshok@ximian.com>
30799         * clock.cpp (TimeManager::Tick): a few changes.  first and
30800         foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
30801         a buffer of 50ms on either side of the timeout before we consider
30802         the Tick either slow or fast.  Increase the number of out-of-line
30803         ticks we need and decrease the fps adjustment.
30805 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30807         * text.cpp (OnCollectionChanged): Needs to call Invalidate().
30809 2007-09-26  Chris Toshok  <toshok@ximian.com>
30811         * clock.cpp: initialize the min_timeout based on a good default
30812         max fps (60 in our case).  Also, calculate the fps adjustments in
30813         a nicer way.
30815         * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
30816         it's handled by TimeManager's default.
30818 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
30820         * font.cpp: A bunch of fixes/changes to mimic Microsoft's
30821         Silverlight TextBlock layout logic.
30823 2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
30825         * Makefile.am: Added missing files for dist tarball
30827 2007-09-26  Chris Toshok  <toshok@ximian.com>
30829         * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
30830         we just adjust fps by a fixed amount (4fps) either up or down, if
30831         a certain number (5, by default) of ticks in a row take either
30832         less or more time to complete (respectively), than the current
30833         timeout.
30835 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
30837         * moon-path.c: Fix typos.
30838         * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
30840 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
30842         * shape.h|cpp: Remove Line (direct path manipulation) hack.
30844 2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30846         * xaml.cpp: Unref collections and matrix transforms we create.
30848 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
30850         * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
30851         context.
30853 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
30855         * text.cpp (TextBlock): Set an empty string as a default Text property.
30856         (InsideObject): Implement this for text blocks.
30858 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
30860         * font.cpp: Fix warning.
30862 2007-09-25  Larry Ewing  <lewing@novell.com>
30864         * brush.cpp|h: add image_brush_create_similar to simplify creating
30865         similar surfaces.  Use it where appropriate.
30867         * media.ccp: use image_brush_create_similar where possible. In
30868         MediaElement::Render draw with opacity directly rather than
30869         creating a temporary surface for every frame. Rework image opacity
30870         cache so that we don't have to recreate the surface every time. 
30872 2007-09-25  Jb Evain  <jbevain@novell.com>
30874         * media.cpp|h: let the MediaElement be the only one to trigger
30875         its own events, terminate its friendship with MediaBase.
30877 2007-09-25  Jb Evain  <jbevain@novell.com>
30879         * playlist.cpp|h: trigger a parsing error when no href attribute
30880         is found for base and ref elements.
30882 2007-09-25  Jb Evain  <jbevain@novell.com>
30884         * playlist.cpp|h, media.cpp: Auto play for playlists.
30886 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30888         * font.cpp (Render): Fixed some y1 offset logic that didn't amke
30889         any sense (and was wrong afaict anyway). We now render exactly
30890         like Microsoft Silverlight.
30892 2007-09-24  Jb Evain  <jbevain@novell.com>
30894         * playlist.cpp: close the previous source before playing
30895         the next one.
30897 2007-09-24  Jb Evain  <jbevain@novell.com>
30899         * mplayer.cpp: on Close, reset height and width to zero.
30901 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30903         * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
30904         either the NaturalWidth or NaturalHeight changes.
30906 2007-09-24  Jb Evain  <jbevain@novell.com>
30908         * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
30909         only a SingleMedia deals with the MediaPlay directly. A playlist
30910         being a collection of either other playlist or singlemedias,
30911         playing one at a time.
30913 2007-09-24  Jb Evain  <jbevain@novell.com>
30915         * media.cpp, playlist.cpp: let the Media Sources change
30916         the state of the MediaElement (Playing/Paused/Stopped).
30918 2007-09-24  Jb Evain  <jbevain@novell.com>
30920         * media.h: let the media source change the properties
30921         of the media element. Make MediaSource friend of MediaElement
30922         to do so.
30923         * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
30925 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
30927         * font.cpp: Added kerning.
30929         * mplayer.cpp: Added mutex locking for the target_pts variable.
30931 2007-09-24  Jb Evain  <jbevain@novell.com>
30933         * playlist.cpp: Playlist::IsPlaylistFile: return false
30934         on null argument.
30936 2007-09-23  Jb Evain  <jbevain@novell.com>
30938         * playlist.cpp: A base element stores the base in
30939         a href attribute, not in its body.
30941 2007-09-22  Chris Toshok  <toshok@ximian.com>
30943         * Makefile.am (USE_XRANDR): define USE_XRANDR.
30945         * runtime.cpp (Surface::realized_callback): get the RANDR screen
30946         config info, and set the TimeManager's max refresh to match the
30947         screen's .
30949         * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
30950         method.
30952 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
30954         * xaml.h xaml.cpp: Add support for parsing x:Code elements and
30955         passing them to managed code.
30957 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
30959         * mplayer.cpp (audio_play): Slightly optimized the volume
30960         adjustment loop.
30962         * font.cpp (Layout): Keep track of the line ascend and pad our
30963         extents with an extra pixel on all sides to account for hinting.
30964         (Render): Starts rendering glyphs 1 pixel in. Also modified the
30965         logic such that we didn't have to treat path/bitmap glyphs
30966         differently.
30968 2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
30970         * font.cpp: Now handles scalable fonts by rendering their outline
30971         paths rather than rendering bitmaps.
30973         * moon-path.c (moon_path_move_to): Resize the path auto-magically
30974         if we don't have enough room. Same for all of the other
30975         line_to/curve_to/etc.
30977 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
30979         * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
30980         the old width extents).
30981         (Layout): When breaking a long line, the new line height should
30982         not be set to 0 (duh), it should be set to the font height.
30984 2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30986         * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
30987           the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
30988           managed code to set them. Keep track of mappings in native code, call
30989           into managed code only if a mapping is not found here. Keep a list of
30990           missing assemblies, allows managed code to request downloading of
30991           several assemblies before trying to parse xaml again. Added
30992           XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
30993           successful (and only then), requests a vm to be loaded, before calling
30994           into managed code to actually create the managed object.
30996 2007-09-20  Chris Toshok  <toshok@ximian.com>
30998         * type.cpp, type.cpp.in (types_init_register_events): register the
30999         LostFocus/GotFocus events.
31001         * uielement.h: add LostFocusEvent/GotFocusEvent.
31003         * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
31005 2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
31007         * text.cpp (InsideObject): Removed.
31009         * font.cpp (Layout): Add the horiBearingX value of the last glyph
31010         in each line to the width of said line.
31011         (RenderGlyphBitmap): Cache the surface and use it as a mask when
31012         filling so that the true source pattern shows thru.
31014 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
31016         * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
31017         render.
31018         (mango_renderer_show_layout): Instead of having pango render the
31019         text, do it ourselves using our cached paths from the previous
31020         call to mango_renderer_layout_path().
31021         (mango_renderer_layout_path): Clear our cache paths.
31023 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
31025         * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
31026         foreground changes.
31027         (OnSubPropertyChanged): Same.
31029         * font.cpp (GetFont): No longer need to pass the size to
31030         TextFont::Load().
31031         (TextFont::Load): No longer needs the size argument.
31032         (TextFont::.ctor): We just get the size from the pattern now.
31033         (TextFontDescription::CreatePattern): Call FcFontMatch() on our
31034         generated font pattern here instead of having our lower-level
31035         TextFont::.ctor do it.
31036         (TextFont::Ascender): Use the size metrics so that this always
31037         works properly (at least it seems to).
31038         (TextFont::Height): Same.
31039         (TextLayout::Layout): Changed line-height logic a bit for
31040         LineBreaks.
31042 2007-09-20  Chris Toshok  <toshok@ximian.com>
31044         * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
31045         type event hashes as well if we don't find it in ours.
31047 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
31049         * brush.cpp: Implemented MappingMode for LinearGradientBrush.
31050         Buttons from Dr Popper are now rendered correctly.
31052 2007-09-20  Chris Toshok  <toshok@ximian.com>
31054         * typegen.cs (GenerateTypeCpp): add a call to
31055         types_init_register_events.
31057         * type.h.in, type.cpp.in: add Type::RegisterEvent,
31058         Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
31060         * type.cpp.in: add types_init_register_events, which registers all
31061         the events we care about for all the types.  we do it here to
31062         guarantee that events have been registered by the time any
31063         instance code is run for any type.
31064         
31065         * dependencyobject.h, dependencyobject.cpp: remove the event
31066         registration from EventObject, it's moving to Type.  so the Type
31067         will contain the name to id hash, and the EventObject will only
31068         contain an array of GSLists, where the index into that array is
31069         the event's id.
31070         
31071         * clock.cpp (clock_init): lookup the static events here.
31073         * runtime.cpp (runtime_init): same.
31075         * animation.cpp (animation_init): same.
31077         * downloader.cpp (downloader_init): same.
31079         * uielement.cpp (uielement_init): same.
31081         * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
31082         src/type.h, src/runtime.h, src/downloader.h: events are static to
31083         the classes now, instead of being per-instance.
31085         * src/types.h src/types.cpp: regen.
31086         
31087 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
31089         * geometry.cpp: Avoid re-allocating path memory when possible.
31090         * moon-path.c|h: Added documentation and new moon_path_renew and 
31091         moon_path_clear functions to reduce memory re-allocations.
31092         * shape.cpp|h: Avoid re-allocating path memory when possible.
31094 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
31096         * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
31097         Bubbles from bubblemark.com are now rendered correctly.
31099 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
31101         * shape.cpp|h: Remove dead code.
31103 2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
31105         * font.cpp: More fixes to make stuff build/work (more or less).
31107         * text.patch: Patch to make text layout/rendering use my new code
31108         rather than pango.
31110 2007-09-19  Chris Toshok  <toshok@ximian.com>
31112         * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
31114 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
31116         * moon-path.c|h: New. Create simple or complex paths without a
31117         (expensive) cairo_context_t using an API similar to cairo.
31118         * geometry.cpp|h: Use moon_path functions. Added (still inactive)
31119         code to compute bounds for paths.
31120         * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
31121         for Polylines and Polygons. Still not perfect for large thickness 
31122         and steep angles but 8-10x faster and better (no artifact left) 
31123         than previous code, see new xaml animation tests).
31124         * rsvg.cpp|h: Adapt to use moon-path functions.
31125         * Makefile.am: Add moon-path.c and moon-path.h to the build.
31127 2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
31129         * font.cpp: More hackery.
31131 2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31133         * panel.cpp: Add a null check.
31134         * xaml.cpp: Created a list that contains most created elements in order to
31135           unref them once parsing is finished (we need to unref all created
31136           elements except the top one, but the parser callback functions don't
31137           know which is the top one, so we delay the unrefing until the end). If
31138           parsing is done manually (*_from_str, etc), just use unref.
31139         * text.h, text.cpp: Add text_destroy to properly destroy the default
31140           foreground brush on shutdown.
31141         * clock.cpp: When we allocate a clock, unref it after adding it to the
31142           group.
31143         * collection.h: Store the parent in the Node, since we can't call
31144           obj->GetParent () in a destructor (it will walk up the hierarchy using
31145           the type system, but since the parent can be in the destructor, the type
31146           system isn't reliable anymore).
31147         * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
31148           foreground brush, not to the element. Add a mango_renderer_get_type_safe
31149           that can reinitialize static variables (after a libmoon reload) from
31150           glib.
31151         * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
31152           values.
31153         * collection.cpp: Store the parent in the Node, since we can't call
31154           obj->GetParent () in a destructor (it will walk up the hierarchy using
31155           the type system, but since the parent can be in the destructor itself,
31156           the type system isn't reliable anymore).
31157         * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
31158         * media.cpp: Sprinkle a few unrefs here and there.
31159         * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
31160           Add a null check in the Storyboard destructor. Use Value::CreateUnref
31161           for default values.
31162         * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
31163           shutdown.
31165 2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
31167         Continued fixes to go along with Rolf's other TextBlock leak
31168         fixes.
31170         * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
31171         (mango_attr_foreground_destroy): Don't unref the fg.
31173         * text.cpp (default_foreground): Make return a static reference.
31174         (Layout): Don't ref the fg.
31176 2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
31178         * font.cpp: more progress on text layout.
31180 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31182         * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
31184 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31186         * xaml.cpp: Fix warning.
31188 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31190         [Removed mono dependency for 1.0 moonlight applications. 
31191         We now have a native [Plugin]XamlLoader that is the native counterpart of the 
31192         managed Loader object, the native loader handles xaml loading when the 
31193         mono runtime isn't loaded.]
31195         * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
31196           Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
31197           was necessary because the callback handler isn't given enough
31198           information (it needs to know the plugin, but this information is not
31199           passed on), and it now also avoids the potential problem of overwriting
31200           static callbacks when several plugins are created simultanously.
31201         * control.cpp, demo.cpp: Update according to API change.
31203 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31205         * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
31207 2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
31209         * font.cpp|h: New font/text rendering engine (e.g. replacement for
31210         pango). Nowhere near complete yet.
31212 2007-09-14  Miguel de Icaza  <miguel@novell.com>
31214         * media.cpp (Stop, Pause): Do not dereference source if it is not
31215         yet set (TopBanana does this).
31217 2007-09-13  Jb Evain  <jbevain@novell.com>
31219         * media.cpp|h, playlist.cpp|h: Work on playlist integration.
31221 2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
31223         * mplayer.cpp (StopThreads): When resetting current_pts and
31224         target_pts, use the audio (or video) initial_pts value rather than
31225         0 since they are meant to be absolute pts values, not
31226         relative. This fixes a bug in the halo3 site where pressing Stop
31227         would cause the current time string to become "59:55" when it
31228         should have been "00:00".
31230         * media.cpp (OnPropertyChanged): Only Invalidate() on
31231         PositionProperty changes if we have video content to render. Fixes
31232         bug #82474.
31234         * mplayer.cpp (HasVideo): New method that returns true if the
31235         media source has video content.
31237 2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
31239         * mplayer.cpp (Duration): Only use audio duration as the defacto
31240         duration if we've got a valid pcm handle.
31242 2007-09-10  Chris Toshok  <toshok@ximian.com>
31244         * animation.cpp (HookupAnimationsRecurse): make the message
31245         involving failure to hookup a property more verbose.  Looks like
31246         MS is treating a TranslateTransform as a ScaleTransform in popfly
31247         - that is, they're trying to animate ScaleX on a
31248         TranslateTransform (which is oddly enough named "scale".)
31250         * media.cpp: Emit ImageFailedEvent if we failed to load the image.
31251         Remove that damn TODO printf.
31253         * media.h: add ImageFailedEvent to Image, and change signature of
31254         CreateSurface so we can return false if there's an error.
31256         * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
31258         * error.h: make these classes instead of structs, and also make
31259         them copy/free the type specific strings.  it'll result in more
31260         allocations but it cleans up the code using them.
31262 2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
31264         * shape.cpp: Fixed Polygon "special" case when it only has to draw
31265         a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
31266         working) which is now 10x faster than calling ComputeBoundSlow (the
31267         working alternative). Started to reuse the same concept for Polyline
31268         and Polygon but the (#def-out) code doesn't yet handle line joins 
31269         correctly (so it still use the correct ComputeBoundSlow);
31271 2007-09-06  Chris Toshok  <toshok@ximian.com>
31273         * dirty.cpp (process_dirty_elements): some guards against unioning
31274         an empty rectangle.
31276 2007-09-06  Chris Toshok  <toshok@ximian.com>
31278         * runtime.cpp (Surface::Invalidate): only invalidate the actual
31279         rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
31280         be.
31282         * rect.h (Rect::Floor): drop fractional part of all values.
31284         * media.h,media.cpp: we cheat and turn off AA on MediaElements
31285         when they aren't rotated or skewed.
31287         * uielement.h, uielement.cpp: we need to keep track of 2
31288         dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
31289         dirty.cpp if the child uses AA, and one for children who have
31290         passed their invalidation rect up the tree (we don't grow this
31291         one).  Also, add the default UseAA method, which returns true, and
31292         the ChildInvalidated method, which mirrors Invalidate(Rect r) but
31293         uses the children_dirt_rect.
31295         * panel.h, panel.cpp (Panel::~Panel): clear our children
31296         collection.
31297         (Panel::FindStartingElement): the meat of the optimization hack -
31298         we determine if we can skip parts of the tree if the expose
31299         rectangle exists completely within the bounds of an opaque
31300         element, unrotated, unskewed element.
31301         
31302         * dirty.cpp (process_dirty_elements): handle
31303         item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
31304         the item's dirty_rect by 1 before combining them, if the item uses
31305         AA.
31307 2007-09-05  Jb Evain  <jbevain@novell.com>
31309         * playlist.cpp: the asx format is case insensitive, parse it
31310         accordingly.
31312 2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
31314         * animation.h: Make KeySpline::GetObjectType virtual.
31316 2007-09-05  Jb Evain  <jbevain@novell.com>
31318         * playlist.cpp, playlist.h: work on playlist parsing.
31320 2007-09-05  Jb Evain  <jbevain@novell.com>
31322         * xaml.h: export timespan_from_str.
31324 2007-09-05  Jb Evain  <jbevain@novell.com>
31326         * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
31328 2007-09-04  Chris Toshok  <toshok@ximian.com>
31330         * media.cpp (Image::Render): unref the backing pixbuf as soon as
31331         possible.
31332         (Image::CleanupSurface): guard against double unreffing the
31333         backing pixbuf.
31335 2007-09-04  Chris Toshok  <toshok@ximian.com>
31337         * xaml.cpp (xaml_set_property_from_str): delete the color.
31338         (dependency_object_set_attributes): same.
31340 2007-09-04  Chris Toshok  <toshok@ximian.com>
31342         * media.cpp (Image::CreateSurface): if we need to create a new
31343         surface, make sure to unref the old one.
31345         * geometry.cpp (PathGeometry::PathGeomtry): use
31346         Value::CreateUnrefPtr (bad name, imo, but eh)
31347         (PathFigure::PathFigure): same.
31349 2007-09-04  Jb Evain  <jbevain@novell.com>
31351         * playlist.h, playlist.cpp: Work on the overall design.
31353 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31355         * brush.cpp (image_brush_create_pattern): Revert previous patch as
31356         it broke test suite.
31358 2007-09-04  Jb Evain  <jbevain@novell.com>
31360         * list.h, list.cpp: add a List::ForEach method.
31362 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31364         * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
31365         (based on lewings performance patch).
31367 2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
31369         * text.h|cpp: TextBlock actual_[height|width] are already cached 
31370         because they're expansive to calculate. Make sure we don't compute
31371         them until they're really required (e.g. when a lot of properties
31372         changes when loading an XAML file).
31374 2007-09-04  Chris Toshok  <toshok@ximian.com>
31376         * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
31377         keyframes in reverse order so the sort works.
31379 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31381         * list.cpp (Insert): Fixed.
31383         * runtime.cpp (render_cb): Added some "FPS" debug spew.
31385         * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
31386         timeout id, by returning false, it is removed for us.
31388 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
31390         * media.cpp: fix memory leaks and crashes when a download gets
31391         aborted.
31393 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31395         * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
31396         as that seems to be what ffmpeg uses internally. Also added a new
31397         'eof' state so that we can easily tell if we've reached the end of
31398         the media stream (eof is true and no packets queued).
31400 2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31402         * media.h, media.cpp: If we get a play request before the media is loaded,
31403           save the request and start playing when the media is loaded. Hopefully
31404           this is what MS is doing.
31406 2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
31408         * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
31409         than comparing the Length() to 0.
31411         * list.cpp: Added more tests.
31413 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
31415         * rect.cpp: Safer IsEmpty (handles negative values)
31416         * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
31417         empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
31418         shape is empty.
31420 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
31422         * media.cpp: Fix premul and remove confusing macro.
31424 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31426         * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
31427           canvas.cpp, namescope.cpp: Plug some leaks.
31428         * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
31429         * dependencyobject.cpp: free_attachee: unref the contained dob. Use
31430           base_unref () instead of accessing the pointer in a few places to allow
31431           for null pointers.
31432         * debug.cpp: get_stack_trace is now able to get meaningful data for managed
31433           parts of the stack trace as well.
31435 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31437         * list.cpp: List::Unlink: Link my neighbours to eachother.
31439 2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
31441         * rect.cpp: Fix union with empty rectangles (so x and y are not
31442         assigned to 0 resulting in large bounds). Fix IsEmpty.
31443         * shape.cpp: Fix possible division by 0, resulting in infinite 
31444         values (and much too large bounds)
31446 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31448         *.cpp: Updated for the slightly different List API (list nodes no
31449         longer have Next() or Prev() methods, just access the pointers
31450         directly).
31452         * animation.cpp: Made sorted_list a GPtrArray and updated to use
31453         g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
31454         sorted_list) accesses assumed nodes were of type KeyFrameNode,
31455         which they were not. Fixed.
31457         * xaml.cpp: Made XamlElementInstance.dtor virtual.
31459         * collection.h: Made the Collection::Node.dtor virtual.
31461         * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
31462         can no longer guarantee that List::Node->next will have the same
31463         address as the List::Node object and so the list implementation
31464         broke. This rewrite is a bit less fancy, but doesn't rely on that
31465         feature.
31467 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31469         * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
31470         doesn't change the current rectangle (but returns a new one).
31471         However everything seems to work, so they are probably not needed.
31473 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31475         * text.cpp (OnPropertyChanged): Need to Invalidate() too.
31477 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31479         * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
31480           now reference either the fullscreen drawing area or the normal drawing
31481           area. Refactored drawing area initialization and destruction into
31482           seperate methods. Modified ConnectEvent to be able to specify whether
31483           the drawing area should attach to realize/unrealize events (fullscreen
31484           drawing area shouldn't). Only emit ResizeEvent if we're not in
31485           fullscreen mode. Added normal_height/width, contains the size of the
31486           surface when not in fullscreen (as opposed to screen_height/width for
31487           fullscreen mode). Height/width now contains the actual size of the area
31488           where we draw, whether in fullscreen mode or not.
31490 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31492         * shape.cpp: #ifdef out an optimization that doesn't work with
31493         ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
31494         wouldn't render at all with it's fill brush). Added same shortcut 
31495         (as before) for Shape::ComputeBoundsSlow.
31497 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
31499         * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
31500         are known to be empty (UIElement::SHAPE_EMPTY).
31502 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31504         * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
31505           apparently a point is inside a shape unregarding to whether it's filled
31506           or not, unlike geometries.
31508 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31510         * shape.cpp: Better degenerate handling for round-rectangles and 
31511         for ellipses.
31513 2007-08-30  Chris Toshok  <toshok@ximian.com>
31515         * collection.h, collection.cpp: change the prototype of
31516         Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
31517         subclasses check the return value before doing their type specific
31518         handling of the child.  Fixes the crash from invalid xaml in
31519         alan's testcase.
31521         * animation.h, animation.cpp: track collection api change.
31523 2007-08-30  Chris Toshok  <toshok@ximian.com>
31525         * collection.cpp (Collection::Add): make the warning a lot more
31526         useful if the child isn't of the right type.
31528 2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31530         * xaml.cpp: Unref the namescope.
31531         * debug.h, debug.cpp: Added. Implemented get_stack_trace and
31532           print_stack_trace.
31533         * clock.cpp: Unref the _instance.
31534         * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
31535           debug purposes. It's able to log to console object creation,
31536           destruction, ref/unrefs with a stacktrace with C++ unmangled function
31537           names, file and line number. Keep a count of created and destroyed
31538           objects, and a list of objects still alive. Ref and unref attached
31539           objects, and free the attachees when we're deleted.
31540         * animation.h, animation.cpp: Add animation_destroy, and destroy the default
31541           dependency property for a few properties.
31542         * type.cpp, type.cpp.in: Initialize Type::types to NULL.
31543         * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
31544           types. Call animation_destroy on shutdown, and add some object tracking
31545           output to runtime_init and runtime_shutdown.
31546         * Makefile.am: Added debug.*.
31548 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31550         * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
31551         for rectangles.
31553 2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
31555         * mplayer.cpp (AdvanceFrame): If there is no video stream, return
31556         based on audio state. Also, if current_pts >= target_pts already,
31557         return true rather than false to pretend we advanced a frame (it's
31558         really not that important to our caller, all the value is used for
31559         is updating position).
31561 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31563         * shape.cpp: Handle negative values for Height and Width (not 
31564         drawn) and for Radius[X|Y] (absolute values).
31566 2007-08-30  Jb Evain  <jbevain@novell.com> 
31568         * media.h, media.cpp: introduce a new MediaSource class that a
31569         MediaElement uses, so we can have either a SingleMedia or a Playlist
31570         as a source.
31571         * playlist.cpp, playlist.h: added
31572         * Makefile.am: add the previous files.
31574 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31576         * shape.cpp: Fix small rectangle fills when no stroke brush is 
31577         specified.
31579 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
31581         * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
31582         bounds on TextProperty change explicitly, it should already be
31583         recalculated later in the function in the same place it gets
31584         reclauclated for other property changes.
31585         (ComputeBounds): Updated to work the same as the rest of the
31586         elements work.
31588 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
31590         * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
31591         thickness
31593 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
31595         * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
31596         the path after we get a copy of it. Remove the now unrequired 
31597         clipping inside the *::BuildPath for StretchUniformToFill.
31599 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
31601         * media.cpp (Render): Cache the pattern matrix.
31602         (DownloaderComplete): Remove the assert and simply handle that
31603         case by returning (which defers the call until OnLoaded).
31605 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31607         * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
31608           making things consistent.
31610 2007-08-29  Chris Toshok  <toshok@ximian.com>
31612         * merged delayed-rendering-branch branch to head.  ChangeLog is:
31613         
31614         2007-08-28  Chris Toshok  <toshok@ximian.com>
31616                 * control.cpp (GetTransformFor): change this to act as
31617                 Canvas::GetTransformFor does - we only put in the transform from
31618                 parent to child here - don't include the parent's transform as
31619                 well.  Fixes the airlines demo.
31621         2007-08-28  Chris Toshok  <toshok@ximian.com>
31623                 * dirty.cpp (process_dirty_elements): use a different method for
31624                 checking if against the toplevel canvas, and also use
31625                 UIElement::parent instead of DependencyObject::GetParent() to get
31626                 controls working a little better than before.
31628                 * control.h, control.cpp: remove UpdateTransform.  this is handled
31629                 by the dirty.cpp code now.
31631                 * dependencyobject.h, dependencyobject.cpp: copy over the
31632                 event_object_{add,remove}_event_handler change from the trunk so
31633                 we can continue to work with HEAD olive.
31635         2007-08-22  Chris Toshok  <toshok@ximian.com>
31637                 * uielement.cpp (Invalidate): don't actually invalidate the
31638                 element unless it's visible.
31639                 (OnPropertyChanged): the above change requires us to invalidate
31640                 the element before setting the flags (in the case where we're
31641                 hiding an element).
31643         2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
31645                 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
31646                 unless unspecified, only then should we use video width/height.
31648         2007-08-21  Chris Toshok  <toshok@ximian.com>
31650                 * uielement.cpp (DoRender): short-circuit rendering of uielements
31651                 when their opacity is 0.
31653                 * dirty.cpp (process_dirty_elements): handle controls.
31655         2007-08-21  Chris Toshok  <toshok@ximian.com>
31657                 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
31658                 (cairo_*_extents) codepath for computing bounds.  Use this path
31659                 for polygons, polylines, and paths.  Implement a Line-specific
31660                 fast ComputeBounds.
31662         2007-08-20  Chris Toshok  <toshok@ximian.com>
31664                 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
31665                 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
31667         2007-08-20  Chris Toshok  <toshok@ximian.com>
31669                 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
31671                 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
31672                 call, and Rect::GrowBy
31674                 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
31675                 call.
31677         2007-08-20  Chris Toshok  <toshok@ximian.com>
31679                 * shape.h, shape.cpp: move the ellipse bound computing to shape
31680                 instead.
31682 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31684         * clock.h: Implement TimeManager::GetObjectType.
31685         * dependencyobject.h, dependencyobject.cpp: Move all type management down to
31686           Base (GetObjectType, Is, GetType, GetTypeName), and implement
31687           GetObjectType in the classes that don't do it already. Remove
31688           BASE_FLOATS, simplifying ref counting.
31689         * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
31690           that don't already inherit from DependencyObject.
31691         * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
31692           raises events), and implement GetObjectType.
31694 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
31696         * shape.cpp: Fix StretchUniformToFill
31698 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
31700         * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
31701         (new since refresh?) need to be multiplied with the stroke's 
31702         thickness
31704 2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
31706         * text.cpp (Render): Fixed the "no text to render" optimization:
31707         don't check TextBlock::TextProperty to see if we have any text to
31708         render, instead check TextBlock::layout (which will have any text
31709         from inlines as well).
31710         (OnPropertyChanged): If the TextProperty changes, recalculate the
31711         layout and bounds.
31713 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
31715         * geometry.h: Add a Path* parameter to Draw as we need to know some 
31716         stuff (e.g. stroke thickness) in order to detect degenerate cases.
31717         * geometry.cpp: Handle degenerate case for RectangleGeometry.
31718         * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
31719         element (NULL in the case of clipping).
31720         * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
31721         class. Add GetFillRule method. Handle most cases where a large stroke
31722         thickness change the SL drawing behaviour (wrt Cairo behaviour)
31723         * uielement.h: Add flags for empty/normal/degenerate shapes
31725 2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31727         * panel.cpp: InsideObject: The point is only inside us if we have a
31728           background, otherwise we act like if we were transparent (which is what
31729           we are if we aren't painting anything inside us).
31730         * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
31731           it's closer to what it actually does.
31732         * shape.cpp: Changed implementation of Shape::CanFill to return true only if
31733           we're actually filled, and rename CanFill to IsFilled so that it's
31734           closer to what it actually does. 
31736 2007-08-27  Jackson Harper  <jackson@ximian.com>
31738         * dependencyobject.cpp|h: Don't return Collections when getting
31739         parents.
31741 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
31743         * mplayer.cpp (Play): Always add a timeout, even for audio-only
31744         media, so that the callback can check if the media has ended and
31745         emit the MediaEnded event.
31747         * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
31749         * mplayer.cpp (MediaEnded): New convenience function.
31751 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
31753         * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
31754         as this clear any path data in the context (see
31755         test-path-group.xaml)
31757 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
31759         * mplayer.cpp (audio_play): Implement software balance/volume here
31760         rather than using the system's mixer (as that changes the
31761         balance/volume for all applications which is a bad thing). Fixes
31762         bug #82602.
31764 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31766         * panel.cpp: InsideObject: only skip checking the children if the
31767           point is not in the clipped area.
31769         * uielement.h, uielement.cpp: Added InsideClip, and moved the
31770           corresponding code from InsideObject to InsideClip.
31772 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
31774         * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
31775         tests/xaml/test-path-smoothquadraticbezier.xaml
31777 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31779         * uielement.h, uielement.cpp: Implement InsideObject here too, the same
31780           implementation as Shape has (for our Clip property).
31781         * frameworkelement.cpp: InsideObject: call new base implementation as well.
31782         * panel.cpp: InsideObject: don't check our children, the mouse may be over
31783           them, but they're not visible for some reason (the parent object might
31784           be clipped, etc).
31786 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31788         * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
31789           motion event even though the mouse isn't over us.
31790         * runtime.h: Add a public Surface::GetCapturedElement.
31792 2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
31794         * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
31795         video frames will update if we seek backwards.
31797         * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
31799         * media.cpp (UpdateProgress): Use the downloader progress value as
31800         the buffering progress value as well (since we don't yet stream).
31801         (DownloaderComplete): Call UpdateProgres() here so that we can
31802         flush the 100% progress value.
31804         * downloader.cpp (Write): Update the progress first, so that the
31805         writer callback can query the actual progress (all data read up to
31806         and /including/ this point in time).
31807         (NotifyFinished): Set progress to 100% and emit an event.
31809 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31811         * value.h[.in]: Added AsNPObj.
31812         * type.cpp[.in]: Initialize Type::NPOBJ correctly.
31814 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31816         * media.cpp: (DownloaderCompleted): The initial state of media
31817         elements that aren't autoplayed is 'Paused'.
31819 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31821         * media.cpp (MediaElement): Initialize 'loaded' to false.
31822         (SetSource): Don't call DownloaderComplete() if we haven't been
31823         loaded yet.
31824         (GetValue): Convert to position from ms to TimeSpan ticks.
31825         (OnLoaded): Set loaded to true and, if we have a downloader which
31826         has completed the download, call DownloaderComplete() which will
31827         then open the media file and autoplay if appropriate.
31828         (OnPropertyChanged): Protect against creating a downloader for an
31829         empty string uri.
31831 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31833         * media.cpp (DownloaderComplete): If we fail to open, emit the
31834         MediaFailedEvent and set some default values.
31835         (OnPropertyChanged): Don't StopLoader() here, do that all in
31836         SetSource (since SetSource needs to do it anyway).
31837         (SetSource): Call StopLoader() here and close the MediaPlayer,
31838         etc.
31840 2007-08-23  Jackson Harper  <jackson@ximian.com>
31842         * runtime.cpp|h: Make Resize use our event system (so the plugin
31843         can use it).
31844         * dependencyobject.cpp|h: Rename the add/remove handler functions
31845         to not require dependencyobjects.
31847 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31849         * media.cpp (OnPropertyChanged): Don't autoplay here.
31850         (advance_frame): Do ms->TimeSpan conversion here, too.
31851         (DownloaderComplete): Instead of calling ::Pause(), just set the
31852         pause state since the MediaPlayer already starts out in paused
31853         state.
31855 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31857         * clock.h: Add defines and methods to convert between timespans and
31858         floats.
31859         * media.cpp: Create a default (empty) Markers collection. When setting
31860         MediaPlayer time values, convert between ticks (in TimeSpans) and 
31861         milliseconds (which is what MediaPlayer expects). Emit MediaOpened
31862         when we're finished downloading a media, and if we're not autoplaying
31863         it, we're pausing it. Update uses of Value (gint64) constructors.
31864         * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
31865         Value (gint64, Type::Kind) constructor to avoid mixups between
31866         INT64 and TIMESPAN values. Check for null before unref'ing a 
31867         dependency object.
31868         * xaml.cpp: Update uses of Value (gint64) constructors.
31869         
31870 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
31872         * type.[cpp|h].in: Add const's here that were only added manually
31873         to the generated files.
31875 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
31877         * mplayer.cpp: Implemented volume/balance
31879 2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
31881         * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
31882         code in Polygon::Draw.
31884 2007-08-22  Chris Toshok  <toshok@ximian.com>
31886         * clock.cpp (Tick): guard against division by zero.  gets
31887         "monotone" displaying.
31889 2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
31891         * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
31892         from Rectangle and Ellipse. Monotone requires that on Path and I can't
31893         recall the reason I made this (while all the test cases I made still
31894         work that way).
31896 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
31898         * mplayer.cpp (MediaPlayer): Init mixer variables.
31900 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
31902         * media.cpp (advance_frame): Don't bother invalidating here, we'll
31903         do that in OnPropertyChanged() for the PositionProperty.
31904         (OnPropertyChanged): Invalidate if Position has changed and
31905         opacity > 0.0f (and we actually have video).
31906         (ComputeBounds): Use the FrameworkElement width/height if set.
31907         (GetTransformOrigin): Same.
31909 2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
31911         * mplayer.cpp (Open): Merged both Open() implementations into a
31912         single one. We no longer use Open() without passing a uri (since
31913         Stop() has been implemented in a better way).
31914         (AdvanceFrame): Keep track of our current pts so that we won't get
31915         ahead of the audio if called too often.
31917 2007-08-20  Chris Toshok  <toshok@ximian.com>
31919         * rect.cpp (bounding_rect_for_transformed_rect): oops, got
31920         MAX2/MIN2 mixed up.
31922 2007-08-20  Chris Toshok  <toshok@ximian.com>
31924         * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
31925         name, I know, but we need this functionality.  it's not enough to
31926         use UL and LR corners of the rectangle when computing the bounding
31927         rect for a transformed rectangle.  we have to test all 4 points.
31929         * panel.cpp (ComputeBounds): use
31930         bounding_rect_for_transformed_rect.
31932 2007-08-17  Chris Toshok  <toshok@ximian.com>
31934         * dependencyobject.cpp (strcase_equal, strcase_hash): new case
31935         insensitive hash functions.
31936         (RegisterFull): the property hash tables (per type, used for
31937         GetDependencyProperty) need to be case insensitive.
31939 2007-08-17  Chris Toshok  <toshok@ximian.com>
31941         * xaml.cpp: remove Hidden from the visibility_map.
31942         (enum_from_str): if we don't see a name we recognize, try to parse
31943         it as a number.  This could maybe be someplace else.
31945         * enums.h: remove VisibilityHidden
31947         * uielement.h, uielement.cpp: remove
31948         VisibilityHidden/LAYOUT_VISIBLE
31950         * control.h: remove GetLayoutVisible.
31952         * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
31953         item->GetVisible, since there's no need to distinguish between the
31954         two anymore.
31956 2007-08-17  Jackson Harper  <jackson@ximian.com>
31958         * clock.h: Add ToSeconds utility functions.
31960 2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
31962         * list.cpp (InsertSorted): For the stable evrsion, work backwards
31963         instead of forwards (improves performance in the typical case,
31964         altho we aren't gonna sue this feature anymore - z-sorted lists
31965         will now be GPtrArrays).
31967         * garray-ext.cpp|h: New src file containing an extension to
31968         GPtrArray for inserting an item into a presorted array.
31970         * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
31971         updated all usages of it.
31973         * panel.cpp (Render): Updated now that z_sorted is an array
31974         instead of a linked list.
31976 2007-08-16  Jackson Harper  <jackson@ximian.com>
31978         * xaml.cpp: Transforms can be set as attributes, they are just a
31979         matrix in string form, that become a MatrixTransform on the
31980         object.
31981         - Made the debug a little nicer
31983 2007-08-15  Jackson Harper  <jackson@ximian.com>
31985         * xaml.cpp: Since the callback setting is now a once per a domain
31986         thing, we don't want to check if they are already set. The 'are
31987         they already set' check only worked when we were setting them at
31988         the beginning of each parsing attempt.  With our current setup it
31989         was causing everything to get loaded in the same domain.
31991 2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
31993         * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
31994         segfault if there are no packets in the queue.
31996 2007-08-13  Chris Toshok  <toshok@ximian.com>
31998         * animation.cpp (*KeyFrame::InterpolateValue): for all the
31999         keyframes, if we don't have a Value defined, don't bother
32000         interpolating anything, just return baseValue.
32002 2007-08-13  Chris Toshok  <toshok@ximian.com>
32004         * collection.cpp: fix merging/unmerging of child namescopes.
32006         * namescope.h, namescope.cpp: add a flag (merged) and a list of
32007         child merged namescopes which are searched any time this namescope
32008         is searched.  Reimplement merge as list->Append, and unmerge as
32009         list->Remove.
32011         * dependencyobject.h: add ClearValue, and make GetParent
32012         inlineable.
32014         * dependencyobject.cpp: add impl for ClearValue, and remove
32015         GetParent.  Also, when finding a name we only check non-merged
32016         namescopes.  The merged ones in the hieararchy will be checked as
32017         the children of the non-merged ones.  Given that the set of names
32018         in merged scopes can't overlap, I'm not strictly sure this is
32019         necessary, except to reproduce Silverlight's faulty lookups after
32020         subtree removal.
32022 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
32024         * collection.cpp (Clear): Unregister the object names.
32026         * dependencyobject.h (GetName): uhh... just return the value, lets
32027         not go returning "(null)" in string form.
32029 2007-08-10  Chris Toshok  <toshok@ximian.com>
32031         * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
32032         to the silverlight Key and call s->toplevel->HandleKeyDown.
32033         (key_release_callback): same.
32034         (gdk_keyval_to_key): new function, to map between gdk and
32035         silverlight.
32036         
32037         * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
32038         just package up the args into a structure and Emit the event.
32040         * enums.h: add the Key enum from the silverlight docs.
32042 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
32044         * dependencyobject.cpp (resolve_property_path): Keep track of the
32045         last '.' so that when we go to get the DependencyProperty, we can
32046         pass the property name component rather than the full path of the
32047         property name. Fixes the color fades in Monotone.
32049 2007-08-09  Chris Toshok  <toshok@ximian.com>
32051         * animation.h, animation.cpp: if any keyframe's keytime changes,
32052         we need to re-resolve the collection.
32054 2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
32056         * mplayer.cpp (Play): Only start up the io/audio threads if we
32057         aren't simply paused (e.g. if they are already alive).
32058         (IsPlaying): Return true only if playing && !paused.
32059         (audio_loop): Changed the locking logic to lock outside of the
32060         loop rather than inside. We now only release the lock inside the
32061         loop if/when the paused state changes.
32063 2007-08-08  Chris Toshok  <toshok@ximian.com>
32065         * animation.h: sprinkle Resolve() methods and resolved flags
32066         around.
32068         * animation.cpp (Storyboard::HookupAnimationsRecurse): call
32069         Resolve() on the animation as we recurse.
32070         (KeyFrameNodeComparer): compare using the keyframe's resolved
32071         keytime.
32072         (KeyFrameNodeFinder): nuke.
32073         (KeyFrameCollection::Add): just mark the collection as needing to
32074         be resolved.  don't muck with the sorted list here.
32075         (KeyFrameCollection::Insert): same.
32076         (KeyFrameCollection::Remove): same.
32077         (KeyFrameCollection::Clear): also mark the collection as
32078         unresolved.
32079         (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
32080         (KeyFrameAnimation_ResolveKeyFrames): implement most of the
32081         algorithm posted at
32082         http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
32083         keytimes of different types.  this is all untested, unfortunately,
32084         as I can't get non-TimeSpan keytimes to work on SL.
32085         (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
32086         keytime.
32087         (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
32088         the key frames before using sorted_list.
32089         (*AnimationUsingKeyFrames::Resolve): override the empty
32090         default, and call KeyFrameAnimation_ResolveKeyFrames.
32092 2007-08-08  Chris Toshok  <toshok@ximian.com>
32094         * clock.cpp (Begin): make sure we handle clocks that seek in the
32095         first tick.
32097 2007-08-08  Chris Toshok  <toshok@ximian.com>
32099         * canvas.cpp (Canvas::Canvas): create a temporary namescope
32100         whenever we create a canvas.  We need this for animations that are
32101         started before the canvas is attached to the tree, or in any case
32102         where FindName is called on code associated with a subtree before
32103         it's added to the surface.
32105         * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
32106         Storyboard.TargetName can be assigned to the parent storyboard as
32107         well as the animation.  Loop up the clock hierarchy when looking
32108         for the targetname.
32109         
32110 2007-08-07  Chris Toshok  <toshok@ximian.com>
32112         * animation.cpp, animation.h
32113         (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
32114         iterate over all the keyframes looking for the last one - just
32115         look at the last one in the sorted list.
32117 2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
32119         * media.cpp (SetValue): Only crop position values if we're not
32120         updating state from the media player (we're allowed to set values
32121         outside of the duration range from the media player). Also, do our
32122         seeking here.
32123         (OnPropertyChanged): Don't do our seeking here because we can't
32124         get the actual seek position as GetValue()'s override will
32125         re-query the media player for its actual position.
32127         * mplayer.cpp (Open): Don't create the threads here anymore,
32128         create them in Play() instead. Also calculate ahead of time the
32129         new audio->pts_per_frame value which allows the video to keep even
32130         better sync with the audio (we used to base this on actual time
32131         spent playing the audio frame rather which could sometimes be off
32132         a smidgen).
32133         (AdvanceFrame): If seek_pts is non-zero, then we need to base
32134         target_pts on it rather than video->initial_pts (assuming we have
32135         no audio to sync to).
32136         (Play): Set playing = true and create the audio/io threads.
32137         (Close): A lot of the logic has been moved into a new method,
32138         StopThreads().
32139         (StopThreads): Stop the threads and reset minimal state.
32140         (Stop): Call StopThreads() and seek back to the beginning of the
32141         av stream.
32142         (Seek): Implemented.
32143         (Position): Back to subtracting the initial_pts so that we always
32144         have a range of 0:duration. If seek_pts is set and >target_pts,
32145         use that rather than target_pts so even if we are in a stopped
32146         state, querying the position will return expected results.
32147         (audio_play): Return audio->pts_per_frame rather than the actual
32148         time difference.
32150 2007-08-06  Jackson Harper  <jackson@ximian.com>
32152         * xaml.cpp: add VisualCollections.
32154 2007-08-06  Chris Toshok  <toshok@ximian.com>
32156         * clock.cpp, clock.h: this might be completely wrong and break
32157         other demos... but childless clockgroups Stop when they hit their
32158         duration, they don't SkipToFill.  fixes the silverlightclr balls
32159         demo.
32161 2007-08-06  Larry Ewing  <lewing@novell.com>
32163         * dependencyobject.h:
32164         * dependencyobject.cpp:
32165         * media.cpp:
32166         * type.h: 
32167         * type.cpp: add const to the various string apis.
32169 2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
32171         * mplayer.cpp: Fixes to make it work with media files w/ no audio
32172         (or where we are unable to play the audio).
32174 2007-08-04  Chris Toshok  <toshok@ximian.com>
32176         * brush.h, brush.cpp: add VisualBrush.
32178         * xaml.cpp (xaml_init): hookup VisualBrush parsing.
32180         * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
32182 2007-08-04  Chris Toshok  <toshok@ximian.com>
32184         * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
32185         to work properly, panel needs to call
32186         FrameworkElement::Invalidate, not parent->ChildInvalidated
32187         directly.
32189         * uielement.h, uielement.cpp: add an Invalidated event for use by
32190         the visual brush.
32191         
32192 2007-08-03  Chris Toshok  <toshok@ximian.com>
32194         * collection.cpp (Collection::Add, Collection::Insert): reinstate
32195         jackson's merging code, but only do it if @data's namescope is
32196         temporary.
32198         * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
32200         * xaml.cpp (xaml_create_from_str): set the namescope to be
32201         temporary if create_namescope is false.
32202         (xaml_create_from_file): same.
32204 2007-08-03  Chris Toshok  <toshok@ximian.com>
32206         * panel.h, panel.cpp: add an optimization for the 2 updates that
32207         travel down the tree (UpdateTotalOpacity and UpdateTransform).
32208         Since we're already invalidating the panel's bounds (in fact we do
32209         it before traversing), we can ignore the invalidates which come
32210         back up the tree from the children.
32212         * media.cpp, media.h: make NaturalDuration a Duration.  this gets
32213         the last of roeder's demos sorta working.
32215 2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
32217         * mplayer.cpp: Whenever we change the 'paused' state, signal to
32218         the other thread(s) that it has changed so that they can go on
32219         with their lives immediately rather than waiting for the kernel to
32220         context switch.
32222 2007-08-02  Chris Toshok  <toshok@ximian.com>
32224         * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
32225         you get your panties in a twist, check this out.  If you have a
32226         control and set both its Canvas.LeftProperty and that of its root
32227         object (the return value of InitializeFromXaml), the effects are
32228         *additive*, yet GetValue on each object returns exactly what you'd
32229         expect - the value you set on it.  The only reasonable explanation
32230         for this is that Control has Canvas's layout algorithm c&p'ed into
32231         it.
32233 2007-08-02  Chris Toshok  <toshok@ximian.com>
32235         * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
32236         functions to returning DependencyObjects instead of UIElements.
32237         in javascript you can create arbitrary xaml hierarchies (transform
32238         groups, brushes, etc).
32240         * control.cpp: need a cast here due to the above change.
32242 2007-08-02  Chris Toshok  <toshok@ximian.com>
32244         * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
32245         stuff the gtk_widget_queue_draw_area call there.
32247         * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
32248         panel.cpp, control.h, control.cpp: change the way
32249         UIElement::Invalidate works.  It used to call GetSurface() which
32250         would recurse up the tree to the root, and return the Surface*
32251         back down.  It would then call gtk_widget_queue_draw_area there.
32252         This left little room for optimization.  Switch everything over to
32253         using a new method implemented by all container classes,
32254         ChildInvalidated.  Basically Invalidate's recurse up to the root
32255         as before, but the actual gtk call happens at the root (well, 1
32256         level above it.  at the Surface itself).  In the future we can
32257         freeze Invalidates in container elements when they do things like
32258         update their transform so we'll just send 1 Invalidate up the
32259         tree, not N Invalidates for N children.
32260         
32261 2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
32263         * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
32264         properties.
32266         * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
32267         (IsPaused): New method.
32269         * media.cpp (MediaElement::GetValue): If the Position is being
32270         requested, query the MediaPlayer.
32271         (MediaElement::SetValue): Make sure the PositionProperty value is
32272         within bounds and force it to be if not.
32273         (MediaElement::Stop): Do nothing if we aren't playing/paused.
32274         (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
32275         position changed.
32277 2007-08-02  Chris Toshok  <toshok@ximian.com>
32279         * uielement.h, uielement.cpp: propagate opacity changes the way we
32280         do transform changes.  Store the total opacity of an item in the
32281         item, as we do with absolute_xform.  This keeps us from doing a
32282         walk up to the root of the hierarchy every time we have to draw an
32283         element (which we we were doing before in
32284         UIElement::GetTotalOpacity.)
32286         * panel.cpp, panel.h: when we update our total opacity, loop over
32287         the children telling them to update as well.
32289         * collection.cpp: propagate the panel's total opacity downward
32290         into the newly added subtree.
32292 2007-08-02  Chris Toshok  <toshok@ximian.com>
32294         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
32295         GetSurface/SetSurface.
32297 2007-08-02  Chris Toshok  <toshok@ximian.com>
32299         * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
32300         handle the property changing.
32302         * control.h, control.cpp: rip out all the proxying behavior.
32303         Control now works as a very specialized container.  Imagine if
32304         Panel had only 1 child, and no generalized way of manipulating it
32305         (other than initializing it from a xaml fragment), and you have
32306         Control.
32308 2007-08-01  Larry Ewing  <lewing@novell.com>
32310         * xaml.cpp: don't ever make the previous point relative.
32312 2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
32314         * text.h: Removed deprecated enum values for FontWeights
32316         * media.cpp, mplayer.cpp: Updated to add features newly added with
32317         the July 2007 release of Silverlight 1.1
32319 2007-07-31  Chris Toshok  <toshok@ximian.com>
32321         * runtime.cpp (Attach): attach a namescope to the toplevel canvas
32322         if there isn't one when it's attached.
32324 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
32326         * media.cpp: NaturalDuration is actually a TimeSpan, not a
32327         Duration.
32329 2007-07-31  Chris Toshok  <toshok@ximian.com>
32331         * media.h, media.cpp: move the MediaBase events to MediaElement.
32333 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
32335         * text.h: Added StyleSimulations enum values.
32337         * xaml.cpp: Updated the StyleSimulations enum mapping.
32339 2007-07-31  Chris Toshok  <toshok@ximian.com>
32341         * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
32342         enum StyleSimulations.
32344         * xaml.cpp: add stylesimulations enum map.
32346 2007-07-30  Chris Toshok  <toshok@ximian.com>
32348         * uielement.cpp, uielement.h: add the Tag property.
32350 2007-07-30  Chris Toshok  <toshok@ximian.com>
32352         * animation.h, animation.cpp: add the three KeyFrameCollection
32353         subclass types, and switch all references to "KeyFrameCollection"
32354         to the more specific types.
32356         * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
32357         with Color/Double/PointKeyFrameCollections as subclasses.
32359         * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
32360         type changes.
32361         
32362 2007-07-30  Larry Ewing  <lewing@novell.com>
32364         * color.cpp: make sure that we size expand 3 digit color
32365         specifications properly.
32367 2007-07-30  Chris Toshok  <toshok@ximian.com>
32369         * uielement.h, uielement.cpp: remove InsideObject from here, and
32370         move its warning to Visual::InsideObject instead.
32372         * visual.h, visual.cpp: add visual.cpp, and move implementation of
32373         InsideObject there.
32375         * Makefile.am (libmoon_la_SOURCES): add visual.cpp
32377 2007-07-30  Larry Ewing  <lewing@novell.com>
32379         * xaml.cpp: correct smooth path segments to use the correct value for
32380         cp1 and don't try to make it relative because all the sources are
32381         absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
32382         
32383 2007-07-30  Chris Toshok  <toshok@ximian.com>
32385         * clock.h, clock.cpp: add very naive, probably broken first pass
32386         at Clock::Seek.
32388 2007-07-30  Chris Toshok  <toshok@ximian.com>
32390         * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
32392 2007-07-30  Chris Toshok  <toshok@ximian.com>
32394         * brush.h, brush.cpp: track breaking change of the
32395         Brush.Transform/RelativeTransform properties - they're speced to
32396         be Transforms, not TransformGroups.
32398 2007-07-29  Chris Toshok  <toshok@ximian.com>
32400         * collection.h, collection.cpp: change "ResourceCollection" to
32401         "ResourceDictionary".
32403         * uielement.cpp: same.
32405         * type.cpp, type.h, value.cpp, value.h: same.
32407         * xaml.cpp: same.
32409 2007-07-27  Chris Toshok  <toshok@ximian.com>
32411         * xaml.cpp (xaml_set_property_from_str): look up the enum map from
32412         the property name, not the value.
32414 2007-07-27  Chris Toshok  <toshok@ximian.com>
32416         * transform.h, transform.cpp: cache the transformation matrix once
32417         we recompute it.  This gives us the responsiveness of delayed
32418         updating without the cost of calculating the matrix once per
32419         object associated with it.  a property change just sets the
32420         "need_update" flag, which causes a recompute on the next
32421         GetTransform call.
32423 2007-07-27  Larry Ewing  <lewing@novell.com>
32425         * uielement.cpp: implement initial support for OpacityMask.
32427 2007-07-26  Miguel de Icaza  <miguel@novell.com>
32429         This implements support for relative MediaElement sources and
32430         makes all of them go through the downloader, like we do for
32431         images.
32432         
32433         * media.cpp (MediaElement): Do an implementation of SetSource
32434         similar to the one in Image.   Although there is some code that
32435         could be shared, the problem is that some parameters get in the
32436         way.   
32438         (MediaElement::DownloaderComplete): Move the playback here. 
32439         
32440         (StopLoader): Utility routine, factor this out also on the Image
32441         case, and hook this up to the destructor of Image and
32442         MediaElement.
32443         
32445 2007-07-25  Chris Toshok  <toshok@ximian.com>
32447         * media.h, media.cpp: add the MediaElement events,and emit
32448         DownloadProgressChanged and CurrentStateChanged.
32450 2007-07-25  Chris Toshok  <toshok@ximian.com>
32452         * media.h, media.cpp: register the 3 MediaBase events.  now we
32453         need to figure out where to emit them.
32455 2007-07-25  Jackson Harper  <jackson@ximian.com>
32457         * value.cpp: Assign the kind for NPOBJs.
32459 2007-07-25  Miguel de Icaza  <miguel@novell.com>
32461         * openfile.cpp (open_file_dialog_show): Change this method to
32462         return an array with all the selected files.   
32464 2007-07-24  Chris Toshok  <toshok@ximian.com>
32466         * runtime.h, runtime.cpp: permit setting of the the surface's
32467         background color, which is used to fill the widget before we
32468         render the toplevel canvas.  only do this, though, if the canvas
32469         is not transparent.
32471 2007-07-24  Chris Toshok  <toshok@ximian.com>
32473         * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
32474         of making the assignment.
32476         * canvas.h, canvas.cpp: make surface private, and add SetSurface
32477         for runtime.cpp to use.
32479 2007-07-24  Chris Toshok  <toshok@ximian.com>
32481         * brush.h, brush.cpp: make ImageBrush::SetSource take a const
32482         char*.
32484 2007-07-24  Jackson Harper  <jackson@ximian.com>
32486         * type.h.in: Add the NPOBJ type.
32487         * value.h.in: Add the npobj value, it's just stored as a pointer
32488         so that we don't become dependent on mozilla.
32489         * value.cpp|h,type.h: sync.
32491 2007-07-24  Jackson Harper  <jackson@ximian.com>
32493         * typegen.cs: Kind.cs lives in agmono now.
32496 2007-07-24  Chris Toshok  <toshok@ximian.com>
32498         * media.h, media.cpp: const-ify the PartName argument of the
32499         SetSource methods.  also, ref the new downloader before unreffing
32500         the old one in Image::SetSource.  they could be the same object.
32502 2007-07-24  Chris Toshok  <toshok@ximian.com>
32504         * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
32505         is NULL, return early.
32507 2007-07-23  Chris Toshok  <toshok@ximian.com>
32509         * Makefile.am (libmooninclude_headers): add some missing headers.
32511         * error.h: split out the error classes here.
32513         * libmoon.h: include error.h
32515         * xaml.h: remove the error classes from here.
32517         * xaml.cpp: include error.h
32519 2007-07-23  Miguel de Icaza  <miguel@novell.com>
32521         * runtime.cpp: Removed the timer code from here, move to plugin.
32523 2007-07-20  Chris Toshok  <toshok@ximian.com>
32525         * xaml.cpp (custom_add_child): this method is what's called when
32526         we add a child to an element of a custom namespace.  Trouble is,
32527         it might be a panel subclass.  If it is, and the child is a
32528         UIElement subclass, go ahead and add the child using
32529         panel_child_add.  This gets the Loaded events working properly in
32530         the chess demo (the trouble was that the custom children weren't
32531         even added to the tree, so their OnLoaded methods weren't being
32532         called)
32534 2007-07-20  Miguel de Icaza  <miguel@novell.com>
32536         * collection.cpp: Add support for RemoveAt. 
32538         * runtime.cpp (html_timer_timeout_add): Added helper routine to
32539         setup Html timeouts.
32541 2007-07-20  Chris Toshok  <toshok@ximian.com>
32543         * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
32544         from Canvas to Panel.  I consider this cleaning up the source, as
32545         it's entirely possible to write Panel subclasses that aren't
32546         Canvas subclasses, but if you did that you'd have no
32547         rendering/event handling.
32549         Now pretty much all logic that involves iterating over the list of
32550         children is in Panel.  This also greatly simplifies Canvas.  It is
32551         now just a Panel with 2 interesting things about it: 1) it
32552         provides 2 attached properties to lay out its children, and 2) it
32553         allows the surface to dictate its bounds if it's the toplevel
32554         element.
32556 2007-07-20  Chris Toshok  <toshok@ximian.com>
32558         * downloader.cpp (Open): set the uri of the downloader.
32560 2007-07-20  Chris Toshok  <toshok@ximian.com>
32562         * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
32563         so the potentially large number of objects which don't register
32564         events don't allocate them.
32566 2007-07-20  Chris Toshok  <toshok@ximian.com>
32568         * clock.h, clock.cpp: lock around access to the tick_call list, so
32569         tick calls can be added from other threads.
32571 2007-07-16  Miguel de Icaza  <miguel@novell.com>
32573         * media.cpp (SetSource): Also handle Completed.
32575         * downloader.cpp (Send): If a send operation is performed on an
32576         object that has completed its operation, immediately emit the
32577         finished event or error event.
32579         (Open): During open invalidate the state, to
32580         ensure that new downloads are properly triggered. 
32582 2007-07-16  Chris Toshok  <toshok@ximian.com>
32584         * frameworkelement.h, frameworkelement.cpp: we need
32585         framework_element_new so managed subclasses of FrameworkElement
32586         are possible.
32588         * uielement.h, uielement.cpp: same for this type.
32590 2007-07-13  Chris Toshok  <toshok@ximian.com>
32592         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32593         normally we'd only update the bounds of this element on a
32594         width/height change, but if the render transform is someplace
32595         other than (0,0), the transform needs to be updated as well.
32597 2007-07-12  Chris Toshok  <toshok@ximian.com>
32599         * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
32600         capturing.  This should be on Visual and not UIElement, but we
32601         don't dispatch events that way.
32603 2007-07-12  Chris Toshok  <toshok@ximian.com>
32605         * downloader.h, downloader.cpp: make the Downloader object a bit
32606         more C++ friendly, and make all the private data private.
32608         Also, take this opportunity to switch to using RegisterEvent/Emit
32609         to generate events, instead of the custom listeners.  This will
32610         let JS hook up to the events.
32612         * media.h, media.cpp: track the downloader changes.
32614 2007-07-11  Jackson Harper  <jackson@ximian.com>
32616         * collection.cpp: Comment out the namescope merging stuff for now,
32617         it causes some regressions.
32619 2007-07-12  Jackson Harper  <jackson@ximian.com>
32621         * xaml.cpp: Restart the whole attribute parsing loop when the
32622         reparse flag is set, otherwise the first attribute will be
32623         skipped.
32625 2007-07-11  Chris Toshok  <toshok@ximian.com>
32627         * uielement.cpp (UIElement::UIElement): the event names need to
32628         match those used by microsoft.  makes it easier to handle the
32629         event hooking up in the plugin, where the event names are used.
32631 2007-07-11  Chris Toshok  <toshok@ximian.com>
32633         * xaml.cpp (xaml_set_property_from_str): the plugin does its own
32634         resolution of properties now, so it doesn't need to pass the
32635         property name.  Change this to take the DependencyProperty*
32636         instead.
32638         * xaml.h: change prototype for xaml_set_property_from_str.
32640 2007-07-11  Jackson Harper  <jackson@ximian.com>
32642         * collection.cpp: When new objects are added to a collection, try
32643         to merge them into the containers namescope.
32645 2007-07-11  Jackson Harper  <jackson@ximian.com>
32647         * xaml.cpp: We need to stop parsing if there is an error while
32648         resolving a custom namespace type.
32650 2007-07-10  Chris Toshok  <toshok@ximian.com>
32652         * dependencyobject.cpp (resolve_property_path): we need to reset
32653         "expression_found" when we hit a '.' so that we'll lookup what
32654         comes after it.
32656 2007-07-10  Chris Toshok  <toshok@ximian.com>
32657         
32658         * dependencyobject.cpp (resolve_property_path): we need to be able
32659         to handle more than just single digit indexers.  use strtol and
32660         recompute 'i' afterward.
32662         * canvas.cpp (Canvas::InsideObject): revert the change that helped
32663         dr.popper because it breaks lunareclipse.
32665 2007-07-09  Chris Toshok  <toshok@ximian.com>
32667         * demo.cpp: don't pass the parser callbacks to the individual xaml
32668         functions.
32670         * control.h, control.cpp: don't pass the parser callbacks to
32671         initialize_from_xaml.
32673         * xaml.h, xaml.cpp: remove the parser callbacks from the
32674         individual parsing methods, and add xaml_set_parser_callbacks.
32676 2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
32678         * mplayer.cpp (audio_loop): If we break out of the loop because
32679         the media player was stopped, don't forget to unlock the pause
32680         mutex.
32681         (Close): Don't free the uri here.
32682         (~MediaPlayer): Free it ehre, though.
32684 2007-07-09  Chris Toshok  <toshok@ximian.com>
32686         * uielement.h, uielement.cpp: we need to register the
32687         KeyUp/KeyDown events (even if we aren't emitting them) to keep
32688         from getting a warning when running aglayoutdemo.
32690         * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
32691         method (and remove all error handling, which should likely go back
32692         in) and replace the previous implementation.  It was failing to
32693         parse timespans like this: 0:0:0.20000000 because it was treating
32694         it as if I wanted "20000000" tenths of a second, instead of 2.
32695         This makes the 'pop' animation in dr.popper actually show up.
32696         
32697 2007-07-09  Chris Toshok  <toshok@ximian.com>
32699         * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
32700         calls.
32701         (Storyboard::Begin): This is a dubious change.  Remove the check
32702         to see if we weren't already Active.  This fixes the calendar view
32703         in airlines, since there's a window where the start animation is
32704         startable when we enter a day, but the end animation isn't (since
32705         it's still active) when we leave.  So we're left with a selected
32706         day.
32708         * clock.cpp: instead of Stopping clocks that come to the end of
32709         their active period, move to the Filling state.  ClockGroups with
32710         automatic duration and no Active children still stop correctly.
32712 2007-07-08  Chris Toshok  <toshok@ximian.com>
32714         * many-files (again!): another, smaller change to the event stuff.
32715         stop using strings for everything that we can.  Register events at
32716         object construction time, and use those id's for everything else.
32717         The string interface is still around because of
32718         EventTrigger::Set/RemoveTarget, as well as the managed code.
32720         One further change that's needed - the id's are per-instance now,
32721         which is stupid.  they should be static.
32723         This further cuts down the work (in terms of hash functions) that
32724         needs to be performed in order to dispatch an event.
32725         
32726 2007-07-08  Chris Toshok  <toshok@ximian.com>
32728         * many-files: fairly big change.  Stick the EventObject class
32729         between Base and DependencyObject in the hierarchy, and get rid of
32730         DependencyObject's "events" field.  Get rid of all the registered
32731         events on surface, and emit them directly from the elements where
32732         they occur.  This allows us to remove the Surface* parameter to
32733         all the event methods.  Also, change the EventHandler signature to
32734         include the sender of the event as well as a "calldata" pointer,
32735         which is where we stuff the unmanaged MouseEventArgs (and later
32736         will the KeyboardEventArgs).
32738         Next step is to add RegisterEvent in EventObject and use that
32739         integer id everywhere instead of the string name when we Emit
32740         events.
32742 2007-07-07  Chris Toshok  <toshok@ximian.com>
32744         * dependencyobject.h: add GetName() instance method.
32746         * dependencyobject.cpp (dependency_object_get_name): and call it
32747         here.
32749         * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
32750         implementation here since FrameworkElement just goes by
32751         Width/Height.
32753         * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
32754         same element" optimization.  it's stupid and doesn't work. what
32755         was i thinking?
32756         (Canvas::ComputeBounds): simplify this by using
32757         item->GetLayoutVisible instead of item->GetValue.
32758         (Canvas::Render): enable the rendering optimization where we only
32759         bother rendering elements whose bounds intersect those of the
32760         rectangle we're repainting.  This seriously speeds up airlines.
32762         * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
32763         another flag.  now the three VisibilityProperty states are
32764         represented by two flags.
32766         Also, remove the implementation of GetSizeForBrush (not all
32767         UIElements are stroked) and warn callers.
32769         * control.cpp: Attach to the real object, and report back its
32770         property changes to our parents.  Also, control_initialize_from_xaml
32771         should call Control::InitializeFromXaml.
32773         * control.h: override the 3 Get*Visible methods from UIElement,
32774         and return our real_object's state.
32776         
32778 2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
32780         * demo.cpp (FileDownloadState::Send): Only notify complete if uri
32781         != NULL (if uri is NULL, then it means it couldn't be opened).
32782         (FileDownloadState::Open): notify error if we can't open the file.
32784         * mplayer.cpp: Fix to make sure we have
32785         AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
32786         before calling decode to prevent an ffmpeg warning.
32788 2007-07-07  Chris Toshok  <toshok@ximian.com>
32790         * brush.cpp: make sure to use GetSizeForBrush for everything
32791         instead of cairo_stroke_extents, which won't work for non-stroked
32792         elements like canvases.  Also, notify changes to the
32793         GradientStopCollection up the hierarchy properly.
32795         * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
32796         implementation for FrameworkElement so Canvases (and other
32797         uielement subclasses) can have brushes assigned to them (canvas
32798         uses it for its background.)
32800         * canvas.cpp (Canvas::Render): remove the unused label.
32802 2007-07-06  Miguel de Icaza  <miguel@novell.com>
32804         * media.cpp: Do not pass the filename as the result now on the
32805         calls.   Code must use the downloader_get_response_text or
32806         downloader_get_response_file to get the contents from the download
32807         (as the request will include the part name).
32809         * downloader.cpp: Add a cache for zip file parts.
32811         * media.h (Image): track the part name that was requested on the
32812         call to SetSource.
32814 2007-07-06  Chris Toshok  <toshok@ximian.com>
32816         * canvas.cpp (Canvas::ComputeBounds): if the width/height
32817         framework element properties haven't been set (their default is
32818         0.0), then don't union it with the rest of our bounds.
32820 2007-07-06  Chris Toshok  <toshok@ximian.com>
32822         * runtime.h, runtime.cpp: continue the marginalization of
32823         Surface-as-general-data-dumping-ground by passing the cairo
32824         context to all the event handlers that need it (all but Leave, but
32825         should we make this distinction?).
32826         
32827         Make tons of stuff private that doesn't need exposing.  Add
32828         accessors for the easier things, and leave the callbacks public
32829         for now.  Also clean up the partially C/partially c++
32830         implementation in runtime.cpp.  Now the C api is a thin wrapper
32831         around instance method calls, and all the gtk/clock event
32832         callbacks are static methods so they can still access the private
32833         data.
32835         * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
32836         uielement.cpp: fallout from the event signature changes - add
32837         cairo_t* to a lot of places, basically.
32839         * demo.cpp: no need to use the C api for Surface here.  just use
32840         the c++ one.
32842 2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
32844         * media.cpp (OnPropertyChanged): Oops, be consistant with other
32845         implementations - only chain up if it wasn't a property owned by
32846         us.
32848         * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
32849         to save object size.
32851         * media.cpp (OnPropertyChanged): Fixed to always notify property
32852         listeners and chain up to our parent impl.
32854 2007-07-06  Miguel de Icaza  <miguel@novell.com>
32856         * downloader.cpp: Implement the zip file support for the
32857         downloader using miniZip, from:
32859                 http://www.winimage.com/zLibDll/minizip.html
32861         The implementation is in C++, so there are no needs to delegate
32862         this to the managed side as previously planned. 
32864         There are two APIs: one returns a filename, the other returns the
32865         file loaded into memory, with the size of the memory blob.
32867 2007-07-06  Chris Toshok  <toshok@ximian.com>
32869         * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
32870         track of the visibility (boolean, not three-state) and hit test
32871         visibility state in our flags.  implement GetVisible() and
32872         GetHitTestVisible() using the flags.
32874         * canvas.cpp (Canvas::CheckOver): use GetVisible and
32875         GetHitTestVisible to avoid property lookups when dispatching
32876         events.
32878 2007-07-06  Chris Toshok  <toshok@ximian.com>
32880         * runtime.cpp (measuring_context_create): we keep a singleton
32881         measuring context now.
32882         (measuring_context_destroy): do nothing here.  it's freed in
32883         runtime_shutdown.
32884         (runtime_shutdown): free up our measuring context.
32886         * canvas.cpp, canvas.h, control.cpp, control.h,
32887         frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
32888         text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
32889         InsideObject to take the cairo_t* instead of the Surface.
32890         
32891 2007-07-06  Chris Toshok  <toshok@ximian.com>
32893         * runtime.cpp (Surface::SetCursor): new method, used in the event
32894         code to update the cursor as we enter/leave elements.
32896         * runtime.h: add method, cursor_instance field, and move the body
32897         of the Surface ctor (and initializations) to the .cpp file.
32898         
32899         * xaml.cpp: fix name of Cursor property enum mapping.
32901         * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
32902         control.cpp: add MouseCursor* arg to HandleMotion so we can report
32903         back cursor changes on elements.
32905         Also, in canvas.cpp, implement IsHitTestVisible checking in
32906         CheckOver.
32908         * enums.h: add the MouseCursor enum.
32909         
32910 2007-07-05  Chris Toshok  <toshok@ximian.com>
32912         * Makefile.am (libmooninclude_headers): remove cutil.h
32913         (libmoon_la_SOURCES): remove cutil.cpp
32915         * cutil.h, cutil.cpp: remove.  no longer necessary.
32917         * text.cpp (TextBlock::ComputeBounds): load the identity matrix
32918         before stroke/fill_extents to work around a cairo bug that was
32919         giving us enormous bounds on rotated elements.  also, -1 from x/y
32920         and +2 to width/height of our bounds.
32922         * media.cpp (MediaElement::ComputeBounds): load the identity
32923         matrix before stroke/fill_extents to work around a cairo bug that
32924         was giving us enormous bounds on rotated elements.  also, -1 from
32925         x/y and +2 to width/height of our bounds.
32926         (Image::ComputeBounds): same.
32928         * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
32929         no stroke, we drew it, and do_op was true.
32930         (Shape::ComputeBounds): load the identity matrix before
32931         stroke/fill_extents to work around a cairo bug that was giving us
32932         enormous bounds on rotated elements.  also, -1 from x/y and +2 to
32933         width/height of our bounds.
32935         * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
32936         subproperty changes on RenderTransformOrigin, since it's a point
32937         and not a dependency object.
32939 2007-07-05  Chris Toshok  <toshok@ximian.com>
32941         * runtime.cpp, runtime.h: store the last mouse position of events
32942         so that we can continue to update after the clock tick (and
32943         provide motion/enter/leave events to elements that might have
32944         moved under the pointer).
32946         The "update-input" event isn't presently emitted (see clock.cpp)
32947         because it results in this code calling HandleMotion on every
32948         tick, which ends up emitting the C# event (which is wrong).
32950         * clock.h, clock.cpp: add a (presently unused) phase to the clock
32951         tick to update the current mouse over after we've updated our
32952         clocks (and therefore possibly updated the transforms on
32953         elements).
32955 2007-07-05  Chris Toshok  <toshok@ximian.com>
32957         * dependencyobject.cpp (dependency_object_get_name): change this
32958         to return the x:Name value if there is one (and "(null)" if not).
32959         (dependency_object_get_type_name): and make this function do the
32960         job originally done by _get_name.
32962         * dependencyobject.h: add dependency_object_get_type_name
32963         prototype.
32965 2007-07-05  Chris Toshok  <toshok@ximian.com>
32967         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
32968         mouse event code so that the Handle* calls return void, like the
32969         Enter/Leave calls do.  Also, all checks for "inside"-ness happen
32970         in the canvas/parent object.  Also factored out the loop over
32971         children to "FindMouseOver", with the checks happening in
32972         "CheckOver".
32974         This needs more testing to make sure that we're still emitting
32975         events in the right order/amount as silverlight.
32977         In uielement.cpp, also add support for showing the bounding
32978         rectangle.
32980         * control.h, control.cpp: track event refactoring.
32982         * frameworkelement.cpp (FrameworkElement::InsideObject): remove
32983         the bounding rect check.  that's handled in the parent object now.
32985 2007-07-04  Chris Toshok  <toshok@ximian.com>
32987         * media.cpp, media.h: rework our caching for images.  we now
32988         properly refcount things, don't leak the filename (or the
32989         surface), share 1 xlib surface amongst all Image's, and don't
32990         crash.  improvements all around!
32992 2007-07-04  Miguel de Icaza  <miguel@novell.com>
32994         * value.cpp (Value): Add a couple of extra cases I had missed
32995         where we should be using g_new instead of new as FreeValue always
32996         uses g_free.
32998 2007-07-03  Jackson Harper  <jackson@ximian.com>
33000         * xaml.cpp: Add the stylus types and some missing collections,
33001         this brings us up to sync with everything implemented in
33002         moonlight.
33004 2007-07-03  Chris Toshok  <toshok@ximian.com>
33006         * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
33007         filled), we need to call cairo_new_path.
33009 2007-07-03  Jackson Harper  <jackson@ximian.com>
33011         * xaml.cpp: Some post parsing memory cleanup and a little extra
33012         debug code.
33014 2007-07-03  Chris Toshok  <toshok@ximian.com>
33016         * text.h: add prototype for text_block_set_font_source.
33018 2007-07-03  Chris Toshok  <toshok@ximian.com>
33020         * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
33021         brush property changes.  Property chain up to
33022         Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
33023         (Shape::ComputeBounds): we need to do the fill, so pass true as
33024         consider_fill to DoDraw.  otherwise a stroke-less filled shape
33025         gets bounds with w == h == 0.0.
33027 2007-07-03  Chris Toshok  <toshok@ximian.com>
33029         * collection.cpp (VisualCollection::Clear): force the invalidate
33030         when we update our bounds.  Also, don't do anything if the length
33031         of the collection is 0.
33033 2007-07-03  Chris Toshok  <toshok@ximian.com>
33035         * canvas.cpp (Canvas::ComputeBounds): we need to always include
33036         our FrameworkElement::Width/Height in our bounds computation,
33037         instead of only consulting them if we have no children.
33039 2007-07-03  Chris Toshok  <toshok@ximian.com>
33041         * media.cpp, media.h: add an image surface cache.  we don't cache
33042         the xlib surface unfortunately, so there's still a slowdown from
33043         generating 1 per Image for shared pixbufs.
33044         
33045 2007-07-03  Miguel de Icaza  <miguel@novell.com>
33047         * collection.cpp: Add support for reporting errors if the iterator
33048         gets out of sync with the collection.
33050         * demo.cpp: Updated to the new downloader interface.
33052         * downloader.cpp: Eliminates the in-memory buffer during
33053         download. 
33055         We still do the progressive updates as those are necessary for the
33056         progress indicators, and if we ever need to hook up during
33057         progressive downloads again.   
33059         But now downloads on completion must notify the downloader of the
33060         local file where the download contents have been placed (necesary
33061         for implementing the Zip-file support).
33063         (Downloader): eliminate our in-memory buffer byte_array_contents 
33065         (downloader_notify): takes a new extra argument, overloaded
33066         depended on the operation.
33067         
33068         (get_response_text): currently not implemented, it needs to be
33069         implemented by a callback into managed code so we can use ZipLib
33070         (unless we can find a suitable unmanaged version).
33072         * media.cpp: Remove the stale code for progressive image
33073         downloads. 
33074 2007-07-02  Miguel de Icaza  <miguel@novell.com>
33076         * media.cpp (SetSource): If we had a previous downloader, unref
33077         it.  
33079 2007-07-02  Chris Toshok  <toshok@ximian.com>
33081         * collection.cpp (VisualCollection::Remove): punt on the optimized
33082         behavior for now.  invalidating just the item should work if the
33083         item's bounds are correct, but for some reason the map path
33084         segments in the airline demo aren't redrawing properly.  So, for
33085         now we just invalidate the parent container when an item is
33086         removed.
33088         * control.h, control.cpp: override GetValue to report back values
33089         from our real_object if there is one, from us otherwise.  and
33090         override SetValue to set values both on us and the real_object if
33091         there is one.
33093         Also, do nothing in our ComputeBounds call.  Our GetBounds always
33094         returns the right thing (the bounds of the real_object), so
33095         there's no need to do any computation.
33097         lastly, remove the OnChildPropertyChanged. This is only invoked
33098         for attached properties, so we shouldn't ever be called.
33100 2007-07-02  Chris Toshok  <toshok@ximian.com>
33102         * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
33103         updatebounds/invalidate here.  UpdateTransform will take care of
33104         that for us.
33106 2007-07-02  Chris Toshok  <toshok@ximian.com>
33108         * shape.cpp (Shape::OnPropertyChanged): turns out we need to
33109         update our bounds on the FillProperty changing as well, for shapes
33110         that aren't stroked.
33112 2007-07-02  Miguel de Icaza  <miguel@ximian.com>
33114         * collection.cpp: Guard for cases where we are not attached to
33115         anything (closure is set to NULL).
33117 2007-07-02  Chris Toshok  <toshok@ximian.com>
33119         * collection.cpp (collection_iterator_move_next): rework the logic
33120         here so we don't do the "current = next" assignment if
33121         iterator->first is true.
33122         (VisualCollection::Add): fix g++ warning.
33123         (TriggerCollection::SetVal): return the old element.
33125 2007-07-02  Jackson Harper  <jackson@ximian.com>
33127         * xaml.cpp: Convert char data into Runs and set them on
33128         TextBlocks, also flush the char data when starting elements, so
33129         things like: <TextBlock>line one<LineBreak />line two</TextBlock>
33130         work properly. <TextBlock><TextBlock.Inlines>text... is illegal
33131         though.
33133 2007-07-02  Miguel de Icaza  <miguel@novell.com>
33135         * value.cpp: Use g_malloc/g_free as the managed code is not able
33136         to use C++ new operator, so we have a potential error when we
33137         mismatch g_new with new and g_free with delete. 
33139         Reported by Valgrind.
33141         * uielement.cpp: Add new helper method needed by Alan.
33143 2007-07-01  Chris Toshok  <toshok@ximian.com>
33145         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
33146         notify attachees here.
33148         * text.cpp (TextBlock::OnPropertyChanged): need to notify on
33149         Actual Width/Height property changes, even if we don't recalc
33150         anything.
33152 2007-07-01  Chris Toshok  <toshok@ximian.com>
33154         * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
33155         guidelines here.  need to chain up to FrameworkElement.  fixes
33156         airline demo.
33158 2007-07-01  Chris Toshok  <toshok@ximian.com>
33160         * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
33161         (Polygon::OnPropertyChanged): same.
33162         (Path::OnPropertyChanged): same.
33163         (Shape::OnPropertyChanged): same.
33164         (Rectangle::OnPropertyChanged): same.
33166         * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
33167         pattern.
33168         (PathGeometry::OnPropertyChanged): same.
33169         (PathFigure::OnPropertyChanged): same.
33171         * brush.cpp (Brush::OnPropertyChanged): use the recommended
33172         pattern.
33173         (SolidColorBrush::OnPropertyChanged): same.
33174         (GradientBrush::OnPropertyChanged): same.
33175         (LinearGradientBrush::OnPropertyChanged): same.
33176         (RadialGradientBrush::OnPropertyChanged): new method.
33179         * brush.h: add RadialGradientBrush::OnPropertyChanged.
33181         * animation.cpp (animation_init): mark the storyboard TargetName
33182         and TargetProperty properties as attached.
33184         * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
33185         for chaining.
33186         (Run::OnPropertyChanged): same.
33187         (Inline::OnSubPropertyChanged): add to handle the inline's
33188         foreground brush changing.
33190         * text.h: add Inline::OnSubPropertyChanged.
33192         * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
33193         background brush, and invalidate whenever it changes.
33195 2007-06-30  Chris Toshok  <toshok@ximian.com>
33197         * shape.cpp (Shape::OnPropertyChanged): when need to update our
33198         bounding rectangle when a number of the stroke properties change.
33199         Also update them when the stroke itself is changed.
33201 2007-06-29  Chris Toshok  <toshok@ximian.com>
33203         * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
33204         we need it for the foreground property.  Make this explicit.
33205         also, add an OnSubPropertyChanged method for Glyphs, to handle the
33206         FillProperty.
33208 2007-06-29  Chris Toshok  <toshok@ximian.com>
33210         * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
33211         that invalidate if the flag is true.
33213 2007-06-29  Chris Toshok  <toshok@ximian.com>
33215         * text.cpp: Do CalcActualWidtHeight on any property that might
33216         cause a change.  This is going to be a performance hit, but we
33217         need to take this step backward to get things working with the new
33218         ComputeBounds stuff.  we'll need to reoptimize this so that it
33219         still works.  Make sure to listen to OnCollectionChanged so we'll
33220         update our bounds (and recompute our actual width/height) on
33221         Inlines collection changes.
33223         * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
33224         OnCollectionChanged.
33225         
33226 2007-06-29  Chris Toshok  <toshok@ximian.com>
33228         * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
33229         can actually read it, and notify attachees of our property
33230         changes.  this makes ZIndex setting resort the parent panels list.
33232         * uielement.h: add an arg to UpdateBounds (a bool that defaults to
33233         false) to force an invalidation of the new bounds.
33235 2007-06-29  Chris Toshok  <toshok@ximian.com>
33237         * panel.h, panel.cpp: okay, i'm stupid.  it's not
33238         OnChildPropertyChanged either.  it's OnCollectionChanged.  we
33239         seriously need to clean this stuff up.
33241 2007-06-29  Chris Toshok  <toshok@ximian.com>
33243         * panel.h, panel.cpp: child ZIndex property changes are reflected
33244         via OnChildPropertyChanged, not OnSubPropertyChanged.
33246 2007-06-28  Chris Toshok  <toshok@ximian.com>
33248         * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
33250         * collection.cpp (VisualCollectoin::Clear): update the panel's
33251         bounds after the clear so we redraw everything.
33253 2007-06-27  Chris Toshok  <toshok@ximian.com>
33255         * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
33256         instead.  Also, rename getbounds to ComputeBounds(), and add a new
33257         GetBounds which returns the bounding rectangle.
33259         * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
33260         Simplify it a bit by using Rect's instead of the 4 doubles.  Note
33261         that the calls to item->GetBounds do *not* cause item's bounds to
33262         be computed.
33263         (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
33264         child when its Left/Top properties change.
33265         (Canvas::HandleMotion): use Rect.PointInside to clean up the
33266         check.
33267         (Canvas::HandleButton): same.
33268         (Canvas::Render): remove the local "item_rect" and just use the
33269         item's bounds.
33271         * uielement.cpp (UIElement::UpdateBounds): remember the old
33272         bounds, compute the new bounds, and (if they're different)
33273         invalidate both and chain up to the parent's UpdateBounds method.
33274         (UIElement::UIElement): init the bounds.
33275         (UIElement::OnPropertyChanged): when switch away from a lot of the
33276         FullInvalidate calls.  If the clip or OpacityMask is changed, just
33277         Invalidate.  If the RenderTransform or RenderTransformOrigin is
33278         changed, called UpdateTransform.
33279         (UIElement::UpdateTransform): all UpdateBounds, since it's
33280         uncommon that our transform will change without our bounds
33281         changing..
33282         (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
33283         but again switch away from FullInvalidate to other more targeted
33284         methods.  If the transform properties change, call
33285         UpdateTransform, for clip and OpacityMask just call Invalidate.
33286         (UIElement::Invalidate): add a Rect taking one that just
33287         invalidates the rect, and make the default variety call it with
33288         bounds as the arg.
33289         (UIElement::ComputeBounds): rename GetBounds().
33291         * shape.cpp (ComputeBounds): don't use GetSurface.  use a
33292         measuring cairo context.
33293         (Shape::OnPropertyChanged): if the Stretch property changed,
33294         UpdateBounds.  also, change from FullInvalidate to just Invalidate
33295         for everything.  Remove the UpdateTransform call as that gets
33296         handled by UIElement::OnPropetyChanged.
33297         (Rectangle::OnPropertyChanged): we only need to invalidate on a
33298         property change.
33299         (Polygon::OnPropertyChanged): if the Points property changes we
33300         need to UpdateBounds and force an Invalidate.  otherwise, just
33301         Invalidate.  no need for FullInvalidate always.
33302         (Polygon::OnCollectionChanged): new method.
33303         UpdateBounds+Invalidate to catch changes to the points collection.
33304         (Polyline::OnPropertyChanged): analogous changes as were made to
33305         Polygon::OnPropertyChanged.
33306         (Polyline::OnCollectionChanged): same as
33307         Polygon::OnCollectionChanged.
33309         * text.cpp (TextBlock::TextBlock): move the SetValue call to the
33310         end, past all the initialization of things that might be needed in
33311         ComputeBounds, which gets called.
33312         (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
33313         cairo context.
33314         (TextBlock::CalcActualWidthHeight): use a measuring context here.
33315         (TextBlock::OnPropertyChanged): remove unnecessary call to
33316         FrameworkElement::OnPropertyChanged from the end of the method.
33317         (Glyphs::ComputeBounds): return Rect (0,0,0,0).
33319         * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
33320         use a measuring context.
33321         (Image::ComputeBounds): same.
33322         (OnPropertyChanged): just Invalidate here, no need for
33323         FullInvalidate.
33324         (DownloaderEvent): just Invalidate here, not FullInvalidate.
33326         * frameworkelement.cpp (FrameworkElement::InsideObject): use
33327         Rect.PointInside.
33329         * control.cpp (Control::GetBounds): use a Rect here.
33330         (Control::ComputeBounds): forward on to the real_object.
33332         * collection.cpp (VisualCollection::VisualUpdate): when adding an
33333         element, we need to force its invalidation, but not the parent's.
33334         we just update the parent's bounds and UpdateBounds will do the
33335         invalidating if it needs to.
33337         * runtime.cpp (surface_attach): we don't need to do a full
33338         invalidate.  just update the bounds of the toplevel (which sets
33339         the width and height to the widget's) and force an invalidate
33340         (just in case the user set the width/height to exactly the same
33341         thing before attaching).
33342         (surface_size_allocate): same thing here - no need for
33343         FullInvalidate.  Just update the bounds.
33344         (measuring_context_create): create a tiny surface and a cairo_t
33345         for use in measuring things.
33346         (measuring_context_destroy): destroy the surface and cairo_t.
33348         * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
33349         ComputeBounds.
33350         
33351 2007-06-28  Miguel de Icaza  <miguel@novell.com>
33353         * runtime.cpp (expose_event_callback): Introduce a new
33354         "transparent" field in the Surface.   If set, we clear the
33355         region with a transparent region.
33357 2007-06-27  Miguel de Icaza  <miguel@novell.com>
33359         * runtime.cpp: Event handlers will work with or without GdkWindows
33360         on the GtkWindows in preparation to support Larry later.
33362         Paint the surface with alpha transparency for now, this breaks the
33363         F-Spot embedding but will be fixed later when we can paint at an
33364         offset, wonder if this will affect performance for now.
33366         Call gtk_event_box_set_visible_window () with TRUE, so that we
33367         have a window, for now we require this to get the events working
33368         properly. 
33369         
33370         * canvas.cpp: Drop the translate transform on the topmost canvas
33371         as that was breaking all the code that depended on the inverse
33372         matrix transform to work for doing coordinate mapping based on the
33373         absolute_xform. 
33375         Instead we need to draw the cairo context at the given offset
33376         in the repaint routine.  This is left as an excercise for Larry. 
33378         Tests to validate that the mouse input is working:
33380                 * test/demo.exe: enter/leave
33381                 * surface demo
33382                 * silverlight airlines
33383                 * LunarEclipse designer.
33384         
33385         * value.cpp (FreeValue): New method that does the actual releasing
33386         of the value.   We do this here so the managed code can release
33387         things in the same way.
33389         (value_free_value): helper method.
33391 2007-06-27  Chris Toshok  <toshok@ximian.com>
33393         * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
33394         calls to RaiseAccumulatedEvents.
33396 2007-06-27  Chris Toshok  <toshok@ximian.com>
33398         * clock.cpp (get_now): turns out we really do want this extra *10
33399         in there, so that it matches up with mono's TimeSpan.Tick values.
33401 2007-06-27  Chris Toshok  <toshok@ximian.com>
33403         * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
33404         take part in bounds computation.
33405         (Canvas::HandleButton): !Visible elements don't take part in hit
33406         testing.
33407         (Canvas::HandleMotion): same here.
33409 2007-06-27  Jackson Harper  <jackson@ximian.com>
33411         * xaml.cpp: Use Type to lookup the property owner, because it
33412         might be a "ghost" type that the xaml parser can't lookup.
33414 2007-06-27  Miguel de Icaza  <miguel@novell.com>
33416         * control.cpp: When handling events, we also need to pass the
33417         event notification to the control, not only to the "real_object"
33418         that we are proxying for.   This is what cause the calendar to
33419         malfunction. 
33421         * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
33422         the canvas, instead use the point at (0,0) and the width, height
33423         with its absolute transformation.
33425         Otherwise canvases with children would end up with
33426         (0,0,0,0) and when compounded would extend the bounding box of
33427         containing ones to include this region even when not needed.
33429 2007-06-26  Chris Toshok  <toshok@ximian.com>
33431         * uielement.h: add virtual GetSurface() method.
33433         * uielement.cpp: implement UIElement::GetSurface to just chain up
33434         to the parent element if we have one, and return NULL otherwise.
33435         Also, make item_get_surface call this method.  removes the
33436         dependency on canvas.h from this file.
33438         * canvas.h: we override UIElement::GetSurface ()
33440         * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
33441         return our surface.  otherwise call our base class's GetSurface.
33443         * media.h: rename Image::GetSurface here to GetCairoSurface to
33444         avoid name collision.
33446         * brush.cpp, media.cpp: track media.h change.
33448 2007-06-26  Miguel de Icaza  <miguel@novell.com>
33450         * collection.h: Change of course.   The actual public interface
33451         implements IList<T> and ICollection<T> not IList nor ICollection
33452         which means that Add does not need to return an index, and Remove
33453         must return whether it actually removed the object.
33454         
33455         * collection.h (Add): Make this method return the index of the
33456         object just created, so we can implement int IList.Add(...).
33458         Removed all the empty Add/Remove methods from collections that
33459         were not doing anything interesting with them, the remaining
33460         chunks of old hacks.
33461         
33462         * (SetVal): This method is used to replace a value at a given
33463         index with another one.   For the C# IList.this [int] indexer.
33465 2007-06-26  Chris Toshok  <toshok@ximian.com>
33467         * clock.cpp: make a copy of the child clocks lists before
33468         traversing them calling callbacks that could result in the lists
33469         being modified.
33471 2007-06-26  Chris Toshok  <toshok@ximian.com>
33473         * dependencyobject.h: add OnCollectionChanged to allow
33474         propertychange notifications from elements in collections to
33475         bubble up to their parent.
33477         * collection.h: make the closure a DependencyObject*, just to be
33478         explicit.  also, add OnSubPropertyChanged to Collection so we can
33479         generate OnCollectionChanged notifications.
33481         * collection.cpp: hook things up on elements in collections, and
33482         generate proper notifications from the collection to its closure.
33484         * enums.h: add CollectionChangeType for use in
33485         OnCollectionChanged.
33487         * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
33488         collection notification stuff to bubble changes up the hierarchy.
33489         
33490 2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
33492         * list.cpp (Replace): Added.
33494         * dependencyobject.cpp (dependency_object_get_value_no_default):
33495         New binding function.
33496         (dependency_object_get_object_type): Renamed from get_kind() which
33497         didn't mirror the native API at all.
33499 2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
33501         * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
33502         * shape.cpp: Remove debugging output.
33504 2007-06-26  Chris Toshok  <toshok@ximian.com>
33506         * uielement.h: change render/dorender to take a cairo_t* instead
33507         of a Surface*.
33509         * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
33510         uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
33511         media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
33512         above change.
33513         
33514 2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
33516         * brush.cpp (LinearGradientBrush::SetupBrush): Use
33517         uielement->get_size_for_brush() because the framework width/height
33518         might be 0.
33520         * text.cpp: Implement text wrapping and clipping to Width/Height
33521         bounds if specified.
33523 2007-06-25  Miguel de Icaza  <miguel@novell.com>
33525         * runtime.cpp: Cope with the fact that we are now windowless and
33526         we will be sharing the parent's window.   Fixes mouse events.
33528         * collection.cpp (collection_get_value_at, collection_count): Add
33529         new methods.
33531 2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
33533         Mango-licious.
33535         * text.cpp: Rewritten to use the new MangoRenderer and
33536         MangoAttrForeground classes.
33538         * mango.cpp: New source file implementing a PangoRenderer and
33539         providing a new PangoAttribute for brushes.
33541 2007-06-25  Chris Toshok  <toshok@ximian.com>
33543         * runtime.h: add decl for Panel::OnSubPropertyChanged.
33545         * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
33546         zIndex by invalidating the item's rectangle.
33547         (UIElement::OnSubPropertyChanged): add braces around all the if
33548         blocks for consistency.
33549         (Panel::OnSubPropertyChanged): if a child changes its z index we
33550         need to resort our visual collection.
33551         (Canvas::render): loop over the z sorted list of children instead
33552         of the default collection list.
33553         (item_init): just to be anal, cast the Zindex default value to
33554         gint32.
33556 x2007-06-25  Chris Toshok  <toshok@ximian.com>
33558         * collection.cpp: keep a z-sorted list in VisualCollection,
33559         adding/removing elements from it when needed, and clearing it when
33560         the collection is cleared.
33562         * collection.h: add a virtual clear method so VisualCollection can
33563         override it.  Also, add a z_sorted_list member to
33564         VisualCollection, so we can deal with the ZIndices of children.
33566 2007-06-24  Alan McGovern  <amcgovern@novell.com>
33568         * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
33570 2007-06-24  Larry Ewing  <lewing@novell.com>
33572         * runtime.cpp: rework size allocation and make toplevel Canvas
33573         items read the allocation->x and allocation->y offsets from the
33574         surface widget when computing their position.
33576 2007-06-24  Chris Toshok  <toshok@ximian.com>
33578         * Makefile.am (libmooninclude_HEADERS): add collection.h
33579         (libmoon_la_SOURCES): add collection.cpp
33581         * collection.h, collection.cpp: new files.  split out Collection
33582         and all the collection-related code from runtime.h/runtime.cpp.
33583         arguably the collections specific to certain elements should exist
33584         completely in those .cpp/.h files, instead of here.
33586         * runtime.h, runtime.cpp: remove collection stuff.
33588         * clock.h, animation.h, transform.h: #include collection.h
33590         * value.h, value.h.in: #include <string.h> here so we can stop
33591         requiring it for everyone else.  really, though we should be using
33592         g_strcmp or something that's already pulled in from glib.
33593         
33594 2007-06-24  Chris Toshok  <toshok@ximian.com>
33596         * Makefile.am (libmoon_la_SOURCES): add array.cpp
33597         (libmooninclude_HEADERS): add array.h
33599         * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
33601         * array.h, array.cpp: new files, split them out from
33602         runtime.h/.cpp.
33604 2007-06-24  Chris Toshok  <toshok@ximian.com>
33606         * Makefile.am (libmooninclude_HEADERS): add xaml.h
33608         * xaml.h: split this out from...
33610         * runtime.h: ... here.
33612         * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
33613         
33614 2007-06-24  Chris Toshok  <toshok@ximian.com>
33616         * Makefile.am (libmooninclude_HEADERS): add control.h
33618         * control.h: split out class Control stuff...
33620         * runtime.h: .. from here.
33622         * runtime.cpp: #include control.h
33624         * control.cpp: same.
33626 2007-06-24  Chris Toshok  <toshok@ximian.com>
33628         * runtime.h: add OnLoaded methods to UIElement, Panel, and
33629         Control.
33631         * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
33632         haven't already.
33633         (VisualCollection::Add): only invoke OnLoaded on the item if the
33634         closure (the parent of the collection) has been loaded.
33635         (VisualCollection::Insert): same.
33636         (Panel::OnLoaded): call OnLoaded on all our children, then chain
33637         up.
33638         (surface_attach): call canvas->OnLoaded instead of
33639         emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
33640         flag - just use the type system.
33641         (item_get_surface): get rid of the IS_CANVAS flag and just use the
33642         type system.
33644         * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
33645         the real object before chaining up.
33647 2007-06-24  Larry Ewing  <lewing@novell.com>
33649         * runtime.cpp: disable transparent surfaces while fixing the
33650         drawing offset problem.
33652 2007-06-24  Larry Ewing  <lewing@novell.com>
33654         * brush.cpp: use cairo_create_similar rather than using an image
33655         brush.
33657 2007-06-24  Chris Toshok  <toshok@ximian.com>
33659         * runtime.cpp (VisualCollection::Add): only emit Loaded if the
33660         tree we're adding it to has already been loaded.
33662 2007-06-24  Larry Ewing  <lewing@novell.com>
33664         * demo.cpp: add -trans flag to demo to make the toplevel transparent.
33666 2007-06-24  Larry Ewing  <lewing@novell.com>
33668         * runtime.cpp: add comments to the new gtk functions.
33670         * runtime.h: expose surface_paint.
33672 2007-06-23  Miguel de Icaza  <miguel@novell.com>
33674         * runtime.cpp: Since unrealize does not seem to be called when our
33675         widget is destroyed by Mozilla, we need to cleanup on destroy the
33676         tick event.   This takes care of one of the plugin crashers.
33678         There are still others that I have to find out, I added some
33679         debugging prints for now.
33681 2007-06-24  Larry Ewing  <lewing@novell.com>
33683         * runtime.cpp: derive from EventBox not drawing area so that we
33684         can use it as a quick method of switching back and forth between
33685         transparent and not.  Add a method to let external code paint to a
33686         cairo context.
33688 2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
33690         * text.cpp (SetValue): Overridden to enforce Text strings not
33691         preserving any leading nor trailing whitespace (as defined in the
33692         Silverlight docs).
33694 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
33696         * xaml.cpp (matrix_value_from_str): use delete[] to free the array
33697         of doubles instead of g_free() as it was allocated with new, not
33698         g_malloc().
33700         * text.cpp (Layout): D'oh, make sure to always init text/block
33701         width/height values. This fixes VideoBrush again.
33703 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
33705         * mplayer.cpp: Initialize 'opened' state variable.
33707         * text.cpp (GetValue): Override DependencyObject::GetValue() so
33708         that we can special-case getting TextBlock::Actual[Width,Height]
33709         properties (this allows us to prolong re-calculating these values
33710         until after the user has set the values he's going to set -
33711         re-calculating on ever property change is too expensive.
33713         * runtime.h: Make DependencyObject::GetValue() virtual.
33715 2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
33717         * text.cpp: Stubbed out the required virtual methods for Glyphs
33718         and attempted to make ActualWidth and ActualHeight calculated
33719         immediately in an attempt to get DrPopper working better.
33721 2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
33723         * shape.cpp: Small hack to avoid calling Draw 2 times during render.
33725 2007-06-22  Chris Toshok  <toshok@ximian.com>
33727         * xaml.cpp (key_spline_from_str): free up the point arrays from
33728         point_array_from_str after we use them.
33729         (xaml_set_property_from_str): same.
33731 2007-06-22  Chris Toshok  <toshok@ximian.com>
33733         * value.cpp (Value): the copy ctor is definitely corrupting memory
33734         in the MATRIX case - we need to allocate the destination matrix.
33736 2007-06-21  Chris Toshok  <toshok@ximian.com>
33738         * Makefile.am: not that anyone should be installing this yet,
33739         install the headers to $(includedir)/libmoon.
33741 2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
33743         * text.cpp: Reworked text layout/rendering logic - we now cache
33744         width/height info for each text string as well as the overall
33745         block width/height. This info is then used to align text strings
33746         on each line along the bottom edge (rather than along the top
33747         edge) of the line of text.
33749         * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
33751 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33753         * stylus.h|cpp: Add InkPresenter.
33754         * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
33755         * value.h, type.h|cpp: Updated.
33757 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33759         * animation.cpp: Register *KeyFrame::Value properties as nullable.
33760         * clock.cpp: Register TimelineMarker properties.
33762 2007-06-21  Jackson Harper  <jackson@ximian.com>
33764         * xaml.cpp: When setting the x:Name also set the name property.
33766 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33768         * stylus.cpp|h: Added Stroke and DrawingAttributes.
33769         * runtime.h: All collections can now implement GetElementType.
33770         * value.h, type.h, type.cpp: Updated.
33771         
33772 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33774         * stylus.cpp|h: Added.
33775         * runtime.cpp|h: Define and call stylus_init.
33776         * Makefile.am: Add stylus.cpp|h.
33777         * value.h, type.h, type.cpp: Updated.
33779 2007-06-21  Jackson Harper  <jackson@ximian.com>
33781         * xaml.cpp: Add a global set of callbacks, so that all of the
33782         custom callbacks for a given parsing instance use the same
33783         methods.  This needs to be encapsulated properly, but for now is
33784         fine.
33786 2007-06-20  Chris Toshok  <toshok@ximian.com>
33788         * animation.cpp, animation.h: KeyFrameCollection overrides
33789         Collection::Clear to clear its sorted list.
33791         * runtime.cpp, runtime.h: add overrideable Collection::Clear
33792         method, and move collection_clear's body into it.
33794 2007-06-21  Jackson Harper  <jackson@ximian.com>
33796         * runtime.cpp|h: Don't return false on single element collections
33797         on the first item.
33799 2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
33801         * text.cpp: Use absolute font sizes, makes the fonts not so huge.
33803 2007-06-20  Jackson Harper  <jackson@ximian.com>
33805         * xaml.cpp: Set namecopes earlier, and make sure to copy the
33806         namescope when we recreate a class using x:Class.
33807         - When we use x:Class reparse the element's attributes, so it can
33808         hook up to events and set properties.
33809         * runtime.cpp|h: When the Name property is set, register it with
33810         the proper NameScope.
33811         
33812 2007-06-20  Chris Toshok  <toshok@ximian.com>
33814         * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
33815         only support Visible/Hidden really, and treat Collapsed as Hidden.
33817         * xaml.cpp (enum_from_str): use g_strcasecmp here.
33819 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33821         * shape.cpp|h: Implement caching of Path (this could be extended to
33822         all shapes).
33823         * geometry.cpp|h: Notify on changes.
33825 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
33827         * xaml.cpp: Don't allocate (and free) a copy of the PML before 
33828         calling geometry_from_str.
33830 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33832         * shape.cpp: Fix some Stretch modes for paths. This can get very
33833         expansive, next step is to cache the cairo_path_t* in the Path and
33834         recompute it only on changes.
33836 2007-06-20  Chris Toshok  <toshok@ximian.com>
33838         * xaml.cpp (is_valid_event_name): new function.
33839         (dependency_object_hookup_event): only allow valid events to be
33840         hooked up.
33842 2007-06-20  Jackson Harper  <jackson@ximian.com>
33844         * runtime.cpp|h: New method for finding an objects namescope.
33845         - Call an objects loaded event when it is added to a Collection
33846         - Some bits of namescope merging, these functions aren't called
33847         yet though.
33849 2007-06-20  Chris Toshok  <toshok@ximian.com>
33851         * xaml.cpp (dependency_object_hookup_event): we need more than
33852         just the Loaded event.
33854 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33856         * text.cpp (Run): Don't set default font values here... we need
33857         them to be unset if they aren't explicitly set by the user so that
33858         we can inherit font properties from our parent TextBlock.
33859         (Draw): Fixed to make Runs inherit unset font properties from the
33860         TextBlock at render-time. Also fixed to make sure we have a
33861         foreground brush to draw with... if unset, use the default brush.
33863 2007-06-20  Chris Toshok  <toshok@ximian.com>
33865         * runtime.cpp (UIElement::render): make this print the classname
33866         like UIElement::getbounds() does.
33868         * runtime.h, runtime.cpp: make control_initialize_from_xaml take
33869         the xaml parser custom element callbacks.
33871 2007-06-20  Chris Toshok  <toshok@ximian.com>
33873         * runtime.cpp (runtime_shutdown): set inited to false, since we
33874         want people to be able to call runtime_init again after this.
33876         * type.cpp.in (Type::RegisterType): allocate types if we need to.
33877         (Type::Shutdown): free types.
33879         * type.h.in (private): make the types array dynamically allocated.
33881         * type.h, type.cpp: sync
33883 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33885         * text.cpp (TextBlock): Need to actually set ActualWidth and
33886         ActualHeight values.
33888 2007-06-20  Chris Toshok  <toshok@ximian.com>
33890         * clock.cpp (Clock::Tick): if we hit our natural duration but our
33891         duration is Automatic, go to Fill mode, since we may have child
33892         clocks that started after us and need a chance to run their last
33893         tick.
33895 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
33897         * runtime.cpp (collection_iterator_move_next): If we can't iterate
33898         to the next item, don't set current = NULL.
33899         (dependency_object_get_name): New function needed for the binding.
33901 2007-06-20  Larry Ewing  <lewing@novell.com>
33903         * runtime.cpp: use gdk_cairo helper functions and clip to the
33904         expose event region.
33906         * runtime.h: remove unused members.
33908         * media.cpp: use cairo_get_target rather than keeping track of
33909         pixmap.
33911 2007-06-20  Jackson Harper  <jackson@ximian.com>
33913         * xaml.cpp/runtime.h: Add one more callback, this one will hookup
33914         events to methods. So things like Loaded=CanvasLoaded will work.
33915         * demo.cpp:
33916         * control.cpp:
33917         
33918 2007-06-20  Jackson Harper  <jackson@ximian.com>
33920         * xaml.cpp: More verbose debug output with namespace lookup
33921         errors.
33922         - Map in the default namespaces if we are unable to lookup the
33923         proper namespace name.
33925 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
33927         * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
33928         or the mouse moving won't work.
33930 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
33932         * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
33933         assigned, in that case we get the extents of the fill.
33935 2007-06-20  Chris Toshok  <toshok@ximian.com>
33937         * animation.cpp: um.. "oops".
33939         * xaml.cpp (xaml_init): enable the parsing of the color/point
33940         spline key frames.
33942 2007-06-20  Chris Toshok  <toshok@ximian.com>
33944         * animation.cpp: guard against division by zero in the double
33945         keyframe GetCurrentValue method.  I'll fix this method up some
33946         more and then report it to the other animation types.
33948         Also, add the Spline(Color,Point)KeyFrames.
33950         * clock.cpp, clock.h: fixes to get all this working again while
33951         still supporting the needed things from the last patch (like
33952         BeginTime.)
33954         * transform.cpp (GetTransform): i hate like hell to have to do
33955         this, but if we scale by 0.0 cairo can't invert the matrix and
33956         then everything goes belly up.  0.00002 is the smallest number I
33957         found (0.00001 doesn't work, for instance) where cairo doesn't
33958         complain about the inverse stuff.
33960         * media.cpp (media_element_set_buffering_time): we have to use the
33961         hacky Value ctor here.
33962         (media_element_set_position): and here.
33964         * runtime.cpp (emit_loaded_events): new function to walk the tree
33965         and emit loaded events.
33966         (surface_attach): call emit_loaded_events here - the docs specify
33967         that Loaded is emitted after it's associated with the host but
33968         before it's rendered.
33969         (Canvas::render): don't emit Loaded here.
33970         (runtime_init): output a nice message here if you run cairo
33971         against a verion of cairo that you shouldn't be using.
33973         * type.h, type.cpp, value.h: resync.
33975 2007-06-20  Jackson Harper  <jackson@ximian.com>
33977         * xaml.cpp: Improve the way we handle x:Class attributes failing
33978         to load.
33980 2007-06-20  Jackson Harper  <jackson@ximian.com>
33982         * xaml.cpp: Hookup attached properties in the property_from_str
33983         method.
33985 2007-06-19  Chris Toshok  <toshok@ximian.com>
33987         * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
33988         (media_element_get_position): same.
33989         (media_init): mark BufferingTime and Position as TimeSpan's.
33991 2007-06-19  Chris Toshok  <toshok@ximian.com>
33993         * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
33994         but this was necessary to get BeginTime's to be supported.  It
33995         reintroduces the "popping" in the surface demo, though, and
33996         honestly I'm unsure how we can ever guarantee that enough ticks
33997         will have occured to be sure we won't see the initial state of the
33998         surface objects.
34000         * animation.cpp: track clock api changes.
34002         * runtime.h: decl for FramworkElement::OnPropertyChanged.
34003         
34004         * runtime.cpp (EventObject::Emit): make a copy of the list before
34005         we start emitting, to keep us crashing if the list is modified
34006         while we're traversing it.
34007         (FramworkElement::OnPropertyChanged): invalidate on width/height
34008         changes.
34010         * xaml.cpp: when parsing a TIMESPAN property, use
34011         timespan_from_str.  This fixes the parsing of BeginTime
34012         attributes.
34014         * type.cpp.in: register TIMESPAN.
34016         * value.h.in: add a AsTimeSpan method, and special hacky
34017         constructor so the parser can construct a value of type TIMESPAN
34018         (which is problematic since it's typedef'ed to gint64.)  Move the
34019         TimeSpan typedef here.
34021         * value.cpp: add the impl for that hacky ctor.
34022         
34023         * type.h.in: add a TIMESPAN kind.
34025         * type.h, value.h, type.cpp: sync.
34027 2007-06-19  Jackson Harper  <jackson@ximian.com>
34029         * xaml.cpp: we need to new the points.
34031 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34033         * geometry.cpp: Add safety to ensure the number of points are 
34034         valid before iterating on them.
34036 2007-06-19  Jackson Harper  <jackson@ximian.com>
34038         * xaml.cpp: make sure to get all the points.
34039         - sneak peek at the exciting new attached property setting code.
34040         - improve error message
34041         - dont step off the end of the string when the trailing characters
34042         are white space.
34044 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34046         * *.cpp: Updated to use the new List type.
34048         * runtime.cpp|h (Collection): Modified to use List instead of
34049         GList which made some code simpler, we get to take advantage of
34050         destructors, woo!
34052         * demo.cpp (main): Removed surface_destroy() and
34053         runtime_shutdown() out of the delete_event callback (gtk timeouts
34054         could still fire after the gtk_main_quit() call it seems).
34056 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34058         * runtime.cpp: Enforce UIElement::ClipProperty when rendering
34059         Canvas
34061 2007-06-19  Jackson Harper  <jackson@ximian.com>
34063         * xaml.cpp: Content properties can be inherited.
34065 2007-06-19  Jackson Harper  <jackson@ximian.com>
34067         * xaml.cpp: Make sure that we have a previous figure.
34069 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34071         * geometry.cpp|h: Revert previous changes. That didn't work well
34072         with groups/collections.
34073         * shape.cpp: Path::Draw now process the path (find and susbtract
34074         origin) when Stretch requires it.
34076 2007-06-19  Jackson Harper  <jackson@ximian.com>
34078         * xaml.cpp: Set the namescope right away, so FindName will work in
34079         element constructors.
34081 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34083         * animation.cpp: Switched to use List instead of GList.
34085 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34087         * geometry.cpp|h: Change API so the Strech value is propagated from
34088         the shape to all the geometry figures. Fixed Stretch for LineGeometry,
34089         EllipseGeometry and RectangleGeometry.
34090         * shape.cpp: Path::Draw now supply the Stretch property value to
34091         all Geometry objects drawing methods.
34093 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34095         * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
34096         the caller responsbility to do so, if required (e.g. it isn't for
34097         geometry stuff).
34099 2007-06-19  Jackson Harper  <jackson@ximian.com>
34101         * xaml.cpp: Implement all the optional points on path markup.
34103 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34105         * shape.cpp: Fix Stretch for Polyline and Polygon.
34107 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34109         * xaml.cpp: Updated to use a real linked list implementation.. for
34110         added uberness. Also reduces memory leakage.
34112         * mplayer.cpp: Stubbed out a few more things and can now return
34113         the video duration.
34115 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34117         * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
34118         property to fill inside Rectangle and Ellipse ctors.
34120 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34122         * runtime.cpp (Insert): Make this use SharedAdd too, which I
34123         presume was the whole point.
34125 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34127         * shape.cpp: Fix Strech support for Rectangle (it behave more like
34128         Ellipse but that shows only with non squares).
34130 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34132         * mplayer.cpp (audio_loop): Fixed muting to advance the correct
34133         number of pts and not hang forever in a g_usleep() (gah, the timer
34134         was a huge negative value).
34136 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34138         * clock.h: Added TimelineMarker.
34139         * type.h, type.cpp, value.h: Updated.
34141 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34143         * shape.h: Fix filling for Polyline. MS supports filling polylines,
34144         even unclosed ones.
34146 2007-06-19  Chris Toshok  <toshok@ximian.com>
34148         * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
34149         s->cairo_xlib after recreating the xlib stuff.  avoids a crash
34150         when resizing surfaces.
34152 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34154         * shape.cpp: Add Strech support for Ellipse.
34156 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34158         * shape.cpp: Add Strech support for Rectangle (only None is different).
34159         Add comments to Line as Stretch doesn't apply for this Shape.
34161 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34163         * runtime.cpp (Collection): Add new Insert method, and update all
34164         the callers that overwrote it.   We probably need to cleanup
34165         everything that is doing virtual overrides and is a no-op 
34167 2007-06-19  Chris Toshok  <toshok@ximian.com>
34169         * runtime.cpp (clear_drawing_area): this method doesn't need to
34170         clean up the xlib cairo context/surface and the pixmap.
34172         There are two possibilities:
34174         1) the drawing area has been realized, which means we have xlib
34175         surface/context + pixmap.  We're guaranteed to hit
34176         unrealized_callback before this method is called, so they will
34177         have already been freed.
34179         2) the drawing area has not been realized, which means we have no
34180         xlib surface/context + pixmap, and this method doesn't need to do
34181         anything.
34183 2007-06-19  Jackson Harper  <jackson@ximian.com>
34185         * runtime.h/shape.cpp: Fix typo.
34187 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34189         * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
34190         implementation and if one of our properties changed, notify our
34191         attachees.
34192         (Inline::OnPropertyChanged): Same.
34193         (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
34194         (TextBlock::Draw): Use our foreground brush directly and the same
34195         for run's foreground brush.
34197 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34199         * runtime.cpp: Implement collection iterators.
34201 2007-06-19  Chris Toshok  <toshok@ximian.com>
34203         * xaml.cpp (timespan_from_str): don't walk off the end of the
34204         string.
34206 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34208         * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
34210 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34212         * animation.h|cpp: Add *_key_frame_new.
34214 2007-06-19  Jackson Harper  <jackson@ximian.com>
34216         * xaml.cpp\runtime.h: Add a public function for setting
34217         properties, from strings.  Basically a copy and paste of my
34218         set_attributes code.  Eventually I should be able to merge the
34219         two, but they use different name lookup mechanisms right now.
34221 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34223         * animation.cpp (Remove): Remove the KeyFrame from the sorted list
34224         before removing it from the collection (since it may be freed by
34225         Collection::Remove).
34227 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34229         * runtime.cpp: Add support for notifying the consumer that the
34230         surface has resized.
34232         Add support for resizing objects.
34234 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34236         * brush.cpp (~VideoBrush): We want to detach from the media
34237         element, not ourselves. Doh.
34239 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34241         * shape.h: Update comments about which shapes needs, or not, to 
34242         provide a getxformorigin method.
34244 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34246         * media.h|cpp: Add media_base_new.
34248 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34250         * value.cpp|h|in: Inline the non-DependencyObject
34251         As* functions as well.
34253 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34254         
34255         * typegen.cs: Removed some dead code.
34256         * value.cpp.in: Deleted, not needed anymore.
34257         * runtime.cpp, value.cpp, type.cpp.in: Moved 
34258         implementation of Value and Type into their own files.
34259         * type.cpp: Updated.
34261 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34263         * type.h, type.h.in: Created, moved declaration of Type here.
34264         * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
34265         references. Move the Value::As* into the header.
34266         * typegen.cs: Updated to cope with Kind changes.
34268 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34270         * runtime.cpp|h, value.h.in: Remove current nullable code,
34271         it's easier to store an is_nullable flag in the registered
34272         property, and store NULL values in the objects hashtable.
34273         * xaml.cpp: Revert unnecessary fixes.
34274         * value.h: Updated.
34276 2007-06-19  Chris Toshok  <toshok@ximian.com>
34278         * runtime.h: get rid of the specialized surface callbacks for
34279         mouse events.  we can dispatch them directly to the UIElements.
34280         Change the EventObject signatures to permit an event/call data as
34281         well as the closure.  add the sender object for kicks while we're
34282         at it.
34284         * runtime.cpp: dispatch element events through the
34285         DependencyObject's events object.
34287         * animation.h, animation.cpp: update signatures for event
34288         handlers.
34290         * control.cpp (handle_button): track signature change.
34292         * clock.cpp: same.
34294 2007-06-18  Chris Toshok  <toshok@ximian.com>
34296         * clock.cpp (TimeManager::Tick): add a lot of timing foo.
34297         (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
34298         we switching to the stopped state and our progress is 1.0 (that
34299         is, if we've finished).
34301         * animation.h, animation.cpp (Storyboard::Begin): rather heavy
34302         handed (but bulletproof) approach to making Begin work on a
34303         storyboard that has run its course - destroy the clock hierarchy
34304         and recreate it.  Also, add a handler for the ClockGroup's
34305         "Completed" event so we can reflect that back to managed land.
34307         * runtime.h: add C functions to add/remove handlers from the
34308         EventObject inside a dep object.
34310 2007-06-18  Jackson Harper  <jackson@ximian.com>
34312         * xaml.cpp: Set text context properties from char data.  This
34313         allows you to do things like <Run>Hi I am some text</Run>.  As far
34314         as I can tell, Run is the only element that allows this.
34316 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34318         * shape.cpp|h: Fix Line and Ellipse getxformorigin.
34320 2007-06-18  Jackson Harper  <jackson@ximian.com>
34322         * xaml.cpp: Now implement the smooth beziers correctly, much
34323         thanks to spouliot for figuring out the formula to reflect control
34324         points.
34326 2007-06-18  Chris Toshok  <toshok@ximian.com>
34328         * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
34329         what the timemanager should do on a given tick, and add some
34330         #defines/logic to calculate the gtk delay from the desired
34331         framerate.  Set the desired framerate to 20fps.
34333 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34335         Instead of attaching to Brush::ChangedProperty, connect to NULL.
34337         * media.cpp (render): If the width/height are 0.0, then use the
34338         video's natural width/height.
34339         (OnPropertyChanged): chain up.
34341         * shape.cpp (OnPropertyChanged): Always chain up to our parent.
34343 2007-06-18  Chris Toshok  <toshok@ximian.com>
34345         * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
34346         fixes setting of nullable property values.
34348 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34350         * runtime.cpp: Store NULL again in the property hashtable,
34351         but use the lookup_extended function to detect this and return
34352         a correct NULL value instead of the default value.
34354 2007-06-18  Chris Toshok  <toshok@ximian.com>
34356         * runtime.cpp (RemoveHandler): more cleanups.
34358 2007-06-18  Chris Toshok  <toshok@ximian.com>
34360         * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
34361         bad.
34363 2007-06-18  Jackson Harper  <jackson@ximian.com>
34365         * xaml.cpp: Implement path closing and ArcSegments.
34367 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34369         * runtime.cpp (SetValue): This looks painful, now
34370         DependencyObjects are stored inside the hash but they might
34371         contain a NULL.   This seems bad.
34372         
34373         (Value): Do not delete null dependency objects.
34375         Remove this patch, and try demo.exe, enter/leave/enter, this
34376         crashes now, because the leave sets the fill to "null" and the
34377         enter then tries to access it
34379 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34381         * brush.cpp: Do proper OnPropertyChanged proagation.
34382         (ImageBrush::OnPropertyChanged): Notify using the generic
34383         Brush::ChangedProperty.
34384         (VideoBrush::OnPropertyChanged): Same.
34385         (VideoBrush::OnSubPropertyChanged): Same.
34387         * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
34388         so we can listen for change notification.
34390         * runtime.cpp (UIElement): Same.
34391         (Panel): Here too.
34393         * text.cpp (TextBlock): Same here (need to do it for Inlines too
34394         at some point).
34396         * media.cpp (media_base_new): Removed, you can't instantiate a
34397         MediaBase.
34398         (advance_frame): Optimization hack: don't invalidate if our
34399         opacity is 0.
34400         (MediaElement::render): Respect opacity and stretch properties.
34402 2007-06-18  Jackson Harper  <jackson@ximian.com>
34404         * xaml.cpp: We need to create new figures if we get a Move
34405         command.
34407 2007-06-18  Chris Toshok  <toshok@ximian.com>
34409         * demo.cpp: use TimeManager::AddTickCall for the async file
34410         loading.  This makes the image visible immediately for me, instead
34411         of requiring the animations be paused to see it.
34413         * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
34414         sorts to TimeManager.  This way we can better control when the
34415         cross thread downloader calls happen, and keep them from affecting
34416         the frame rate, and also keep them from being starved by an
34417         overzealous demo.cpp.
34419 2007-06-18  Chris Toshok  <toshok@ximian.com>
34421         * runtime.cpp (unrealized_callback): remove the render handler.
34422         (realized_callback): attach the render handler.
34423         (render_surface): a very simple render handler.  We just force gtk
34424         to process all pending updates.
34426         * clock.cpp (TimeManager::Tick): as a temporary hack, have
34427         TimeManager emit the "render" event after every animation tick.
34428         We should add tuning to this method to achieve usable framerates
34429         without killing the cpu.
34431         * clock.h: make TimeManager subclass from EventObject so we can
34432         hook up to events on it.
34434 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34436         * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
34437         called. We create a new path so the bounds, for an invisible object,
34438         will be empty.
34440 2007-06-18  Chris Toshok  <toshok@ximian.com>
34442         * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
34444 2007-06-18  Jackson Harper  <jackson@ximian.com>
34446         * xaml.cpp: Fix smooth quadratic bezier's.
34448 2007-06-18  Chris Toshok  <toshok@ximian.com>
34450         * media.cpp, media.h (Image::render): on our first rendering,
34451         convert to using an xlib surface to speed up future redraws.
34453 2007-06-18  Chris Toshok  <toshok@ximian.com>
34455         * runtime.cpp (UIElement::dorender): add this, and make everything
34456         that calls ->render call ->dorender.
34458         * control.cpp (render): call dorender on the realobject.
34460         * runtime.h: add STARTTIMER/ENDTIMER macros, and add
34461         UIElement::dorender which can be used to wrap render calls with
34462         debug info (in this case timer info.)
34464         * clock.h: add prototype for get_now().
34466         * clock.cpp (get_now): make this public, so we can use it for
34467         timers.
34469 2007-06-18  Jackson Harper  <jackson@ximian.com>
34471         * xaml.cpp: Implement Path Geometry parsing.
34473 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34475         * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
34476         MediaElement if we don't already have one.
34477         (VideoBrush::OnPropertyChanged): SourceName does not refer to a
34478         uri, instead SourceName refers to a MediaElement.
34480         * media.cpp: Implemented some more helper "setters", defaulted
34481         some more MediaElement property values to correct values, and
34482         implemented updating of both the CurrentState property and the
34483         PositionProperty.
34485         * mplayer.cpp (Position): Implemented.
34487 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34489         * media.cpp: Close the path after rendering the image.
34490         * shape.cpp: Avoid the filling operation in calls to getbounds. Also
34491         open and close a path before drawing normal (square) rectangles.
34493 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34495         * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
34496         C-style methods to access Type and DependencyProperty fields.
34497         In Type::IsSubclassOf don't take into account nullability.
34498         * animation.cpp, clock.cpp: Register nullable properties as such.
34500 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34502         * media.h|cpp: Add media_base_new.
34504 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34506         * value.h.in: Make checked_get_subclass handle null values. Include the
34507         Kind::*Null* values in the C# Kind.cs, and change their values to fit
34508         in a signed int.
34509         * value.h: Updated.
34511 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34513         * media.cpp (DownloaderEvent): If the Width/Height have not been
34514         set explicitly, provide them from the images (demo works, but it
34515         takes a while, due to the idle handler being too busy to be
34516         invoked).
34518         * runtime.cpp (Canvas::render):  Cope with rounding from floats to
34519         ints, add 2, fixes the droppings in the surface.
34521         Include some of my debugging helpers (you sprinkle
34522         draw_grid in key places to see whats going on, useful to debug the
34523         bounding boxes and visually inspect if things are right.
34524         
34525         * media.cpp (getbounds): use the framework width/height not the
34526         pixbuf image size, this shrinks the size of the bounding box.
34527         (getxformorigin): Use it here too.
34529 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34531         * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
34532         indicates if their use would be visible or not (e.g. opacity > 0.0).
34533         * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
34534         Don't Fill or Stroke if the brush is invisible (opacity == 0).
34536 2007-06-18  Marek Habersack  <grendello@gmail.com>
34538         * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
34539         bit platforms too.
34541         * ffvideo.cpp (ALIGN): as above.
34543 2007-06-18  Chris Toshok  <toshok@ximian.com>
34545         * clock.cpp: simplify pausing and stopping a clock that has
34546         children by keeping track of the new state (the one the clock will
34547         take at the end of this tick).  This is necessary because the
34548         parent clock doesn't actually stop until the end of the tick, so
34549         we still need to update child clocks after we've determined the
34550         parent clock should stop.
34552 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
34554         * runtime.cpp: properly remove items from the doubly-linked list.
34556 2007-06-18  Chris Toshok  <toshok@ximian.com>
34558         * animation.cpp (AnimationStorage::~AnimationStorage): delete the
34559         baseValue here.
34560         (Storyboard::Begin): force a TimeManager tick after we've hooked
34561         up the clock, so that all the animations have proper values before
34562         the next render.  Fixes the "popping" in the surface demo.
34564 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34566         * runtime.cpp: Changed DependencyObject::SetValue to never store 
34567         a null value in the hashtable.
34569 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34571         * brush.cpp: Refactor the pattern creation to allow caching.
34572         * media.cpp|h: Add caching of cairo_pattern_t to Image.
34574 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
34576         * runtime.cpp: use motion hints for smoother motion event handling.
34578 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34580         * text.cpp|h: Runs now cache their own PangoFontDescription and
34581         PangoLayouts as an optimzation (seems to be very slight for simple
34582         us-ascii text, but might help enormously for more complex
34583         languages). Also added some FIXME thoughts.
34585 2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
34587         * downloader.cpp: Add missing downloader_notify_finished.
34589 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34591         * downloader.cpp: Only set dummy downloader functions if they
34592         aren't already set.
34594 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34596         * runtime.cpp: Add a few null checks.
34597         * downloader.cpp: Add initial dummy downloader functions to get
34598         meaningful messages if the downloader functions aren't initialized.
34600 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34601         
34602         * typegen.cs: Special case a few things for DependencyObject, 
34603         and make a few messages more informative.
34604         * runtime.h|cpp: Add a value_type field to Type, and a constructor
34605         to specify the value. Add a constructor to DependencyProperty that
34606         can specify default value and type (in the case the default value
34607         doesn't have the same type as the property). Changed
34608         DependencyObject::SetValue to never store a null value in the 
34609         hashtable. In Value destructor check for null pointers in a few 
34610         cases. Update all uses of Value.k to Value.GetKind.
34611         * type.cpp.in: Update to specify value_type information.
34612         * value.h.in: Implement nullable type handling in Value.
34613         * value.cpp, type.cpp, value.h: Updated.
34615 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34617         * text.cpp (get_size_for_brush): Calculate width/height if they
34618         are unset.
34619         (Draw): Don't use the brush if we aren't going to render (this is
34620         needed so that we don't get into a recursive loop since we have to
34621         manually calculate width/height).
34623 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34625         * text.cpp (get_size_for_brush): Implemented (since
34626         cairo_stroke_extents() won't work for us).
34628         * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
34629         (ImageBrush::SetupBrush): Same.
34631         * runtime.cpp (UIElement::get_size_for_brush): New method to get
34632         width/height needed by Brushes for scaling.
34634 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34636         * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
34637         parent.
34639 2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
34641         * text.cpp : added text_block_set_font_source().
34643 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34645         * brush.cpp (brush_init): Create a BRUSH property called
34646         "FrameChange", it is internal and the sole use of it is so that
34647         upper layers that care about brush changes act on it by updating
34648         their elements.
34650         * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
34651         brushes only trigger an invalidate, there is no need to recompute
34652         bounds. 
34654 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34656         * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
34657         delete for a void pointer, it can only delete known class types.
34659 2007-06-17  Jackson Harper  <jackson@ximian.com>
34661         * xaml.cpp: Implement x:Class, we can now load the Surface demo's
34662         XAML file, and it's custom Canvas class (things still don't work
34663         though because the custom canvas uses a downloader.)
34665 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34667         The surface rotate and translate controls should both work, and
34668         the enter/leave events are now correct.
34669         
34670         * runtime.cpp (UIElement::handle_motion, handle_button): Change
34671         the semantics to better match Silverlight.   Now these methods
34672         should check if the mouse is inside their region before calling
34673         the callback.
34675         This is necessary because children of the canvas (and panel) are
34676         within the confines of the bounding box, but the canvas can be
34677         smaller than that.   The canvas is a container whose boundaries
34678         are only used for paiting, children might be outside of these
34679         boundaries.
34681         It is necessary in these cases to pass the events to all the
34682         children within the canvas bounding box and for each child to
34683         determine if the event was within its range. 
34685         (inside_object): replaced the default implementation for
34686         FrameworkElements with a more performing version: instead of
34687         mapping the point and using cairo_in_stroke and in_fill operations
34688         on a rectangle with mapped coordinates, we map the coordinates and
34689         check against the rectangle.
34691         (Canvas::getbounds): if we are the topmost canvas, the boundaries
34692         are those from the Surface, not the ones that include the maximum
34693         extent from the children.   Used to do precise mouse enter/leave. 
34695 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
34697         * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
34698         when its not our property.
34700         * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
34702         * mplayer.cpp (GetSurface): Added.
34704         * text.cpp (text_init): Fixed to use RegisterFull for Froeground
34705         so we can specify Value::BRUSH as the default value type instead
34706         of it using SolidColorBrush as the type.
34708 2007-06-17  Chris Toshok  <toshok@ximian.com>
34710         * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
34711         than 1 second.
34713 2007-06-17  Chris Toshok  <toshok@ximian.com>
34715         * clock.cpp (Clock::TimeUpdated): remove a special case for the
34716         clock's duration being Automatic.  Fixes infinite animation in
34717         Surface port.
34719         * runtime.cpp (crossing_notify_callback): return type is gboolean,
34720         and make sure we always return something.
34721         
34722 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34724         Propagate changes from children of the transform up to our
34725         containers, this is done in several steps:
34727         * runtime.cpp (DependencyObject::Attach, Detach): New methods that
34728         are used to attach an object to a container and detach it.   They
34729         were previously inlined inside SetValue.
34731         (Collection::Add, Remove): Attach and detach objects when they are
34732         added/removed. 
34733         
34734         * transform.cpp (Transform::OnPropertyChanged): if any class
34735         derived from Transform has one of its properties changed, it
34736         has a visual effect, propage this to the attacchees.
34738         (TransformGroup::OnSubPropertyChanged): Escalate here as well,
34739         this will catch the messages coming from anyone in the collection
34740         to its container. 
34742         (TransformCollection::OnSubPropertyChanged): Buble the event up
34743         here as well.
34745         * runtime.cpp (handle_motion): Change the order in which we send
34746         the events to the UIElement, we should start at the topmost
34747         element, and have the toplevel canvas be last.
34749 2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
34751         * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
34752         inside Image::render.
34753         * media.cpp: Use code from ImageBrush to render image with it's
34754         properties (e.g. Stretch)
34755         * transform.cpp: Update (commented) debug output.
34757 2007-06-17  Miguel de Icaza  <miguel@novell.com>
34759         * runtime.cpp (GetValueNoDefault): This is necessary so we can
34760         distinguish a value that has been explicitly set from one that has
34761         not.
34762         
34764         * media.cpp (Image): use Framework::Width,Height for the image
34765         dimensions instead of the pixbuf width/height, used in extents and
34766         rotation computation.
34768         * runtime.cpp (Canvas::render): Set the clipping path on the
34769         identity matrix so we do not miss-clip.
34771         Render the canvas from 0, 0, fwidht, fheight, not the expose
34772         area. 
34774 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34776         * runtime.cpp (Cairo::render): The canvas also needs to set the
34777         matrix and clear its background. 
34779         (surface_resize): convenience entry point to resize a surface.
34780         Notice that this will resize the surface, but not the toplevel
34781         canvas. 
34783 2007-06-16  Jackson Harper  <jackson@ximian.com>
34785         * demo.cpp:
34786         * runtime.h:
34787         * control.cpp:
34788         * xaml.cpp: Use a callback for setting custom attributes in
34789         elements.
34791 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
34793         * media.cpp: Implemented all the needed virtual methods for
34794         MediaElement to work, using my new MediaPlayer class.
34796         * mplayer.cpp|h: New class for playing media sources.
34798         * ffvideo.cpp: Removed from the build.
34800 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34802         Observation: either it is the surface, or something else is very
34803         slow, but entering the surface is quite slow right now to show the
34804         handles.   Not sure what it could be.
34805         
34806         * runtime.cpp (OnPropertyChanged): We probably should catch the
34807         property changes here, and not in the Sub* variant of this thing,
34808         this will update the canvas properly now.
34810         (dump_hierarchy): useful bit to debug what is going wrong. 
34811         
34812         (Canvas::get_xform_for): Do not apply extra
34813         transformations to the child other than the absolute_xform.
34815         (surface_attach): On attach we need to do a full invalidate, so
34816         the transformations are computed, otherwise it uses the defaults
34817         for the toplevel (zero), this fixes the atom.xaml issue. 
34819         * control.cpp (get_xform_for): This is not proxied to the real
34820         object, this is proxied to the parent.
34821         (control_initialize_from_xaml): Set the parent link here.
34823 2007-06-16  Chris Toshok  <toshok@ximian.com>
34825         * transform.cpp, transform.h, runtime.cpp, runtime.h,
34826           geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
34827           at removing all cached instance collections and using GetValue
34828           for them.
34830 2007-06-16  Chris Toshok  <toshok@ximian.com>
34832         * media.cpp (Image::SetSource): we want events even if we attach a
34833         downloader that's been started.
34835 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34837         * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
34838         will mess with the earlier filling.
34840 2007-06-16  Chris Toshok  <toshok@ximian.com>
34842         * runtime.h, runtime.cpp: remove the instance cached
34843         Panel::children, use accessor to get it when we need it.
34845         * brush.h, brush.cpp: same for the GradientBrush::children
34846         property.
34848 2007-06-16  Chris Toshok  <toshok@ximian.com>
34850         * runtime.h: make these const Rect&'s.
34852 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
34854         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34855         the Value::Kind of the object that was created so the managed side do
34856         a Lookup on it.
34858 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34860         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34861         the element as the managed side needs (and defines) it.
34863 2007-06-16  Miguel de Icaza  <miguel@novell.com>
34865         * control.cpp: Implement Control.
34867         * downloader.cpp: Implement a system to send various notifications
34868         as Chris wants his notifications and managed world wants the
34869         notifications as well. 
34871         Should they ahve been separate?   For now I just added a list of
34872         them.   This code is turning uglier every minute.
34874 2007-06-16  Jackson Harper  <jackson@ximian.com>
34876         * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
34877         in.
34878         - Handle expat errors a little better.
34880 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
34882         * runtime.h: Implement missing IntersectsWith and Intersection to fix 
34883         build.
34885 2007-06-15  Chris Toshok  <toshok@ximian.com>
34887         * runtime.cpp (Canvas::render): small optimization.  only call the
34888         item's render method if its bounds actually intersects with the
34889         rectangle we're rendering.  Also, clip to the bounding rectangle
34890         of the item here.
34892 2007-06-16  Chris Toshok  <toshok@ximian.com>
34894         * clock.cpp, clock.h: don't use a constant for the timeout in
34895         gtk_timeout_add, and add methods to add/remove the timeout.
34897         (ClockGroup::TimeUpdated): if we're paused or stopped,
34898         don't call child clock TimeUpdated methods at all.  they always
34899         generate CurrentTimeInvalidated even when the time hasn't changed,
34900         which triggers redraws that don't need to happen.
34902 2007-06-16  Jackson Harper  <jackson@ximian.com>
34904         * runtime.cpp|h: We still need C style base_ref/unref.
34905         * demo.cpp:
34906         * xaml.cpp: Takle a callback for the from_file method also.
34907         
34908 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
34910         * ffvideo.cpp (Stop): Implemented.
34911         (.ctor): init paused to false (maybe this is why video
34912         didn'talways work?).
34913         (.dtor): Stop() the video and unhook the timeout.
34915         * runtime.cpp: Implement Base::ref and Base::unref instead of
34916         doing it the c way.
34918         * *.cpp: Updated for above change.
34920         * shape.cpp (shape_set_stroke): Don't unref the old stroke.
34921         (shape_set_fill): Same.
34923         * text.cpp (text_init): Use a separate brush for TextBlocks and
34924         Inlines.
34925         (text_block_set_foreground): Don't unref the old brush.
34926         (inline_set_foreground): Same.
34928 2007-06-15  Chris Toshok  <toshok@ximian.com>
34930         * xaml.cpp: little leak fixes here and there.
34932 2007-06-15  Chris Toshok  <toshok@ximian.com>
34934         * demo.cpp (delete_event): destroy the surface and shutdown the
34935         runtime before we quit, just to make finding leaks a little
34936         easier.
34938         * ffvideo.cpp (MediaElementFfmpeg): re-order the
34939         close/g_io_channel_close calls to quiet down glib.
34941         * media.cpp: don't close the loader in DownloaderEvents.  do it in
34942         the dtor for now, to keep from getting that stupid gdk warning.
34943         this is wrong, but at least it's quiet.
34945         * text.cpp: delete the color we initialize the solid color brush
34946         with in text_init.
34948         * animation.cpp, animation.h: remove the cached key_frames
34949         collections.
34951         * runtime.h, runtime.cpp: clean up our cleanup a lot.
34953         in the copy constructor we actually need to make a copy (or
34954         ref in cases where we can) everything we store as a pointer in
34955         our union.  This is to facilitate us destroying it in the
34956         destructor.
34958         in surface_destroy just delete the surface.  move all the destroy
34959         code to the destructor.  Also, in the destructor unhook from the
34960         gtk events, since we get an unrealize event as part of widget
34961         destruction, apparently.
34963         Add DependencyObject::Shutdown which destroys our properties
34964         hashtable.  Create all the hashtables with _new_full so we can
34965         give free functions for keys/values.  actually make use of them,
34966         and clean up the relevant destructors.
34968         Add a destructor for Type, and have the Type ctor take its
34969         arguments.  free the name in the dtor.  Same deal with _new_full
34970         for hashtable creation, and also add Type::Shutdown.
34972         (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
34973         and DependencyObject::Shutdown to free all our stuff.
34974         
34975         * clock.h, clock.cpp: add TimeManager::Shutdown.
34977 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
34979         * demo.cpp (gettime): Improved fps reporting.
34981 2007-06-15  Miguel de Icaza  <miguel@novell.com>
34983         * media.cpp (SetSource): Make it so we use the data from a
34984         downloader that might have already finished.
34986 2007-06-15  Chris Toshok  <toshok@ximian.com>
34988         * runtime.cpp: simplify refcounting a little more.  we now have 3
34989         rules:
34991             1. Value() holds a ref to its contained dependency object.
34992                This means we don't have to do anything special for
34993                anything stored in a DP.
34994         
34995             2. Collections hold a ref to their constituents.
34997             3. If you *must* cache an DO pointer in an instance field, you
34998                must ref/unref it properly.  But really, you shouldn't need
34999                to cache it, and I'll likely go through and remove all the
35000                ones I can find.
35002         * media.cpp (media_element_set_markers): remove the ref/unref
35003         stuff.
35005         * animation.cpp: comment out some spew, and follow a safer pattern
35006         in OnPropertyChanged.
35008         * brush.cpp (OnPropertyChanged): safer pattern.
35010         * geometry.cpp (OnPropertyChanged): safer pattern.
35012         * runtime.h: make all these dtors virtual.
35014         * clock.cpp, clock.h: remove the cached child_timelines instance
35015         field to clean up some of the ref counting problems.
35017 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35019         * media.cpp (SetSource): Make it so we use the data from a
35020         downloader that might have already finished.
35022         We now accumulated data as we go.
35023         
35024         * downloader.cpp (downloader_get_response_text): Return
35025         accumulated data.
35027 2007-06-15  Jackson Harper  <jackson@ximian.com>
35029         * demo.cpp:
35030         * runtime.h:
35031         * xaml.cpp: Callback into managed code to create custom element
35032         instances.
35034 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35036         * media.cpp (media_base_new): Removed, not instantiable.
35037         (Image::getbounds): Need to set the absolute_xform matrix :)
35039 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35041         * media.cpp (Image::getxformorigin): Implement getxformorigin, so
35042         rotations are correct.
35044         (Image::getbounds): Implement getbounds correctly, the coordinates
35045         should be in device coordinates with the transform applied.
35047 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35049         * demo.cpp (main): Add some Inlines to the TextBlock to test
35050         bounding box calculations.
35052         * text.cpp (OnPropertyChanged): If the property that changed is
35053         the Actual width/height, then don't invalidate anything - simply
35054         return (these are just cache values that only we can set
35055         internally).
35056         (Draw): Keep track of the pixel width/height of the entire
35057         rendered TextBlock+Inlines.
35058         (getbounds): Use the cached width/height of the TextBlock+Inlines
35059         and draw a rectangle instead to improve performance.
35061 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35063         * media.cpp|h: Add media_base_new.
35065 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35067         * Add destructors to classes that are caching DO collections and
35068         keeping refs to those, thanks to Chris Toshok for the pattern to
35069         use here. 
35071 2007-06-15  Chris Toshok  <toshok@ximian.com>
35073         * media.cpp (Image::render): use the uielement's opacity when
35074         painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
35076 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35078         * runtime.cpp (UIElement): The problem was that:
35080                 The ~UIElement destructor was setting the collection
35081                 properties to NULL in an attempt to unref stuff (these
35082                 are now automatically unrefed).
35084                 This caused the hash table destructor to unref the values
35085                 that were held in the collection.
35087                 At a later point, since "triggers" was cached and
35088                 OnPropertyNotify was called, we attempted to unref the
35089                 value, but that cached value pointed to an object that had
35090                 already been released.
35092         * Everywhere: remove duplicated code that got copy/pasted
35093         everywhere for tracking collections and caching values.  
35095         This should help fixing the crashing problem, but I still need to
35096         review the rules for reference counting and keeping a cache of
35097         variables in instance fields. 
35099 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35101         * text.cpp (Draw): Now renders inlines.
35103 2007-06-15  Chris Toshok  <toshok@ximian.com>
35105         * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
35106         libgdiplus.
35108         * demo.cpp: notify the downloader of the image file size so that
35109         it'll generate a COMPLETED event for the Image.
35111         * media.h, media.cpp: make image downloading non-progressive (we
35112         only create the surface when the downloader notifies the download
35113         is complete), but gain something in return: images with alpha
35114         channels.
35116         * downloader.h, downloader.cpp: add closure to event_notify, and
35117         expose the Event kind.
35119 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35121         * runtime.cpp (UIElement, Canvas): send events to the objects as
35122         well.   My original test on orcas was buggy.
35124 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35126         * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
35128 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35130         * xaml.cpp (dependency_object_add_child): If the col_v collection
35131         value is NULL, create a new collection and add it to the
35132         DependencyObject.
35134         * runtime.cpp: Added a generic collection_new() function which
35135         takes a Value::Kind to specificy which collection-type it should
35136         allocate.
35138 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35140         * downloader.cpp: Implement DownloadProgress property and event
35141         notification. 
35143         * runtime.h (DependencyObject::Is): new method, similar to C# is.
35145         * runtime.cpp (surface_repaint): We clear the background here
35146         again, to allow canvases to have transparent brushes.
35148 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35150         * runtime.cpp: Panel.Background is NULL by default, which means it's
35151         transparent. This fixes Canvas inside Canvas.
35153 2007-06-15  Jackson Harper  <jackson@ximian.com>
35155         * runtime.cpp|h: Implement some Inlines stuff that the parser will
35156         need.
35157         * xaml.cpp: Add some of the pieces for creating textblock inlines.
35158         - Added some TODO areas for creating late bound collections (maybe
35159         this should just be illegal??).
35161 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35163         * text.cpp: Have inlines cache their PangoFontDescription and
35164         added logic to render textblock inlines.
35166 2007-06-15  Alan McGovern  <amcgovern@novell.com>
35168         * runtime.cpp|h: Added DependencyProperty.NameProperty
35170 2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35172         * transform.cpp|h: Add Transform C constructor.
35173         * runtime.cpp: Better warning message.
35175 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35177         * runtime.cpp (surface_attach): Only hook up the events when we
35178         get a toplevel attached.   
35180         * downloader.h: Drop the C++ API with a C proxy API, switch to a
35181         pure C API as we need this from the managed side anyways.
35183         * downloader.h: Move downloader defs into .h file
35185         Add a notification system for reporting the size of a stream, so
35186         we can do progress indication.
35188         * downloader.cpp: Move downloader to its own file.
35190 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35192         * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
35193         (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
35194         * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
35195         will be removed in 1.0.
35196         * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
35197         * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
35198         the *right* place.
35200 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
35202         * text.cpp (text_init): Set more default values.
35204         * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
35205         we iterate thru them) and set the resulting list to NULL (in case
35206         we don't hold the last ref) before unreffing the children object
35207         (in case we do own the last ref).
35208         (EventTrigger::OnPropertyChanged): Same.
35209         (UIElement::OnPropertyChanged): Same.
35211         * transform.cpp (OnPropertyChanged): Same.
35213         * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
35214         (PathGeometry::OnPropertyChanged): Same
35215         (PathFigure::OnPropertyChanged): Same.
35217         * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
35219         * animation.cpp
35220         (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
35221         (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
35222         (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
35224 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
35226         * brush.cpp: Complete ImageBrush.Transform
35227         * shape.cpp: Please at least one side of the lines.
35229 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
35231         * text.cpp (text_init): No longer should ref the foreground brush
35232         or we leak refs.
35234         * xaml.cpp: Added support for Runs/LineBreaks
35236         * text.cpp: Implemented Run/LineBreak classes.
35237         (inline_new): Removed (can't instantiate this class).
35239 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35241         * runtime.cpp (~DependencyObject, free_value): unref all the
35242         values that are stored in the object on destruction
35244         * runtime.cpp: Add support for enter/leave events.
35246 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35248         * text.cpp (getbounds): Set the actual width/height values to keep
35249         them up-to-date.
35251 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35253         * text.cpp (getbounds): Revert prior change.
35254         (getxformorigin): Same.
35256         * shape.cpp (getbounds): Revert prior change.
35258         * ffvideo.cpp (getbounds): Revert prior change.
35260         * runtime.cpp (update_xform): Revert my last change.
35261         (item_update_bounds): Same.
35263 2007-06-14  Jackson Harper  <jackson@ximian.com>
35265         * xaml.cpp: Set content properties when adding child elements.  We
35266         now no longer need to special case any elements except panel.
35268 2007-06-14  Jackson Harper  <jackson@ximian.com>
35270         * xaml.cpp: I must have been very tired when I wrote that.
35272 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35274         * media.h: Expose Image's Height and Width (required for ImageBrush)
35275         * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
35276         (yet) force an update of the drawing once the image is available.
35278 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35280         * demo.cpp: Updated s/textblock/text_block/g
35282         * xaml.cpp: Don't register TextBlock twice.
35284         * ffvideo.cpp (getbounds): Can now depend on surface being set.
35286         * text.cpp: s/textblock/text_block/g
35287         (getbounds): Can now depend on surface being set.
35288         (getxformorigin): Same.
35290         * shape.cpp (getbounds): Can now depend on surface being set.
35292         * runtime.cpp (item_update_bounds): Don't update bounds if the
35293         surface hasn't been set yet.
35294         (update_xform): Same.
35296 2007-06-14  Jackson Harper  <jackson@ximian.com>
35298         * xaml.cpp: Add keyspline parsing.
35300 2007-06-14  Jackson Harper  <jackson@ximian.com>
35302         * value.h: This guy doesn't exist anymore, he is a
35303         DependencyObject now.
35305 2007-06-14  Jackson Harper  <jackson@ximian.com>
35307         * animation.cpp:
35308         * runtime.cpp|h: We also need to update the DependencyObject when
35309         resolving PropertyPaths.
35311 2007-06-14  Jackson Harper  <jackson@ximian.com>
35313         * runtime.cpp|h: New function that follows PropertyPath's to
35314         DependencyProperties.
35315         * animation.cpp: Use new function to resolve animation target
35316         properties.
35318 2007-06-14  Jackson Harper  <jackson@ximian.com>
35320         * runtime.cpp (GetDependencyProperty): If there is no table for a
35321         property, we still need to lookup the property in the parent
35322         chain (assumming inherit is true).
35323         - Fix some typos with types_by_name
35325 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35327         * demo.cpp (main): Rotate our demo text inside a filled rectangle
35328         around the center of the text.
35330         * text.cpp (TextBlock.ctor): Initialise a cached
35331         PangoFontDescription that we will update when properties change.
35332         (TextBlock.dtor): Free our font/layout.
35333         (getbounds): Implemented correctly.
35334         (getxformorigin): Implemented.
35335         (Draw): Simplified since we don't need to create our layout/font
35336         anymore (just use the cached ones).
35337         (OnPropertyChanged): Implemented.
35339 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35341         * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
35342         RadialGradientBrush): Notify owners when changes happen in the
35343         Brush.
35345         This makes the demo test-color-animation.xaml work without fps.
35347         * runtime.cpp: Make Canvas use the Background property to render
35348         the background.
35350 2007-06-14  Chris Toshok  <toshok@ximian.com>
35352         * demo.cpp (main): create a namescope to attach to the canvas, and
35353         also make sure to add the storyboard to the tree someplace so that
35354         it can find the names of things.
35356         * xaml.cpp: create a namescope to attach to the top_element.
35358         * runtime.cpp (FindName): rework this to walk up the tree.  Drop
35359         the global namescope.
35361 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35363         * brush.cpp|h: Add ImageBrush functions, which delegates most of its
35364         work to Image (downloader).
35365         * media.cpp|h: Expose the cairo_surface_t that contains the image.
35367 2007-06-14  Chris Toshok  <toshok@ximian.com>
35369         * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
35370         size from 1024 to 8192 (and make it an instance instead of stack
35371         variable).  Also, add a return statement that will cause the idle
35372         handler to no longer be called when we get a write of 0 length.
35373         This might be wrong in the long term.
35375         * media.cpp, media.h: add cleanup methods for the Image class, and
35376         add a dtor as well.
35378 2007-06-14  Chris Toshok  <toshok@ximian.com>
35380         * media.cpp (LoaderSizePrepared): fill in the initial state of the
35381         image to gray with black border.
35382         (LoaderAreaUpdated): invalidate the item.
35384         * media.h: fix the progressive image loading.
35386 2007-06-14  Chris Toshok  <toshok@ximian.com>
35388         * demo.cpp: use the MediaBase::SourceProperty to set the image's
35389         source.
35391         * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
35392         for changes in MediaBase::SourceProperty and kick off the download
35393         and stop the currently running one.
35395 2007-06-14  Chris Toshok  <toshok@ximian.com>
35397         * demo.cpp: track downloader api change.
35399         * media.cpp: track downloader api change.
35401         * runtime.h, runtime.cpp: the downloader's write function needs an
35402         offset as well as a length to work with mozilla's streaming api.
35404 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35406         * demo.cpp (main): Draw some text
35408         * text.cpp (text_init): Set a default solid black brush for
35409         foreground properties on Inline/TextBlock objects.
35410         (Draw): Setup the Brush stuff before drawing.
35412 2007-06-14  Jackson Harper  <jackson@ximian.com>
35414         * xaml.cpp: Add support for loading all implemented (and semi
35415         implemented) dependency object types.
35416         * text.cpp|h: C style constructors.
35418 2007-06-14  Chris Toshok  <toshok@ximian.com>
35420         * animation.cpp (KeySpline): default should be 1,1 for
35421         controlPoint2.
35423 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35425         * xaml.cpp: Add support for Matrix (non-DO) type.
35427 2007-06-14  Chris Toshok  <toshok@ximian.com>
35429         * runtime.cpp (downloader_write): add C-style downloader_write
35430         method so we can call into it from the binding.
35432 2007-06-14  Chris Toshok  <toshok@ximian.com>
35434         * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
35435         type.cpp.in, value.h.in: make KeySpline subclass from
35436         DependencyObject like it should, and fix resulting fallout.
35438 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35440         * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
35441         catch cases of Top/Left being set on a child, this makes changes
35442         to the object after it has been created (adding/removing the
35443         property) work. 
35445 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35447         * brush.cpp|h: Much closer results for RadialGradients (but I still
35448         have a test case that fails). Also added Transform support for 
35449         LinearGradient.
35451 2007-06-14  Jackson Harper  <jackson@ximian.com>
35453         * animation.h: C style constructors.
35454         * clock.cpp|h: C style constructors.
35455         * runtime.cpp|h: Follow proper naming convention for
35456         TimelineMarker C style constructors.
35458 2007-06-14  Chris Toshok  <toshok@ximian.com>
35460         * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
35461         here, and made Downloader pluggable with a set of functions.
35463         * demo.cpp: use the pluggable nature of Downloader to put
35464         UnmanagedDownloader here (and call it FileDownloadState).
35466         * value.cpp, value.h, type.cpp: resync.
35468 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35470         * text.cpp: Fixed Brush accessors for the NULL case.
35472         * media.cpp: Fixed accessors that could return NULL
35473         (media_init): init MediaBase and MediaElement items.
35475 2007-06-14  Jackson Harper  <jackson@ximian.com>
35477         * animation.cpp: C style constructor.
35478         * media.cpp|h: Add some C style constructors.
35479         * xaml.cpp:  Add parsing hooks for new components.
35481 2007-06-14  Chris Toshok  <toshok@ximian.com>
35483         * demo.cpp: make one of the videos an image instead.
35485 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35487         * xaml.cpp: Fixed the font_widths and font_stretches maps to
35488         reflect the numeric enum values defined in text.h (and msdn docs).
35490         * text.h: Sync enum values to documented numeric values.
35492 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35494         * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
35495         Make all classes that inherit from DO constructable, and add
35496         missing C-style constructors.
35498 2007-06-14  Jackson Harper  <jackson@ximian.com>
35500         * runtime.cpp|h: Hookup the resource collection.
35501         * xaml.cpp: Parse resource collections.
35503 2007-06-14  Chris Toshok  <toshok@ximian.com>
35505         * type.cpp, value.h, type.h: resync these.
35507         * media.h, media.cpp: add naive Image class.
35509         * runtime.h, runtime.cpp: add some Downloader methods, and
35510         subclass Downloader with a *very* hackish UnmanagedDownloader
35511         class that just loads from files.  Also add a "write_func"
35512         callback that the downloader can call when it has new data to hand
35513         off.
35515 2007-06-14  Chris Toshok  <toshok@ximian.com>
35517         * animation.cpp: import an arc length calculator I found on the
35518         net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
35519         and use that for KeySpline::GetSplineProgress.  The results don't
35520         match MS's exactly, though.
35522 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35524         * geometry.cpp, geometry.h: Add collection constructors.
35525         * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
35526         * runtime.cpp|runtime.h: Implement collection add/remove methods. 
35527         Add Downloader DPs.
35528         * media.cpp: Add MediaAttribute DP.     
35530 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35532         * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
35533         (as it cannot be globally applied). Added DP, and related functions,
35534         to TileBrush.
35536 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35538         * Improve the destruction scenario to release the resources that
35539         we have acquired, we are now up to the point of stopping clocks
35540         properly, but more work is going to be needed in the long term to
35541         properly track refs and objects.
35543         Ensured that all virtual GetObjectType are flagged with virtual.
35545         * Makefile.am: Put runtime.cpp at the top, to improve
35546         compile/test cycle.
35548 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35550         * brush.cpp|h: One step closer for RadialGradientBrush
35551         * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
35552         render (shape-wise) correctly.
35553         * shape.cpp: Draw before setting the brush. This allows the brush
35554         setting code to ask for the extents to stroke/fill.
35556 2007-06-13  Chris Toshok  <toshok@ximian.com>
35558         * animation.cpp (KeySpline::GetSplineProgress): reimplement this
35559         to return a percentage of the arc length of the bezier that is
35560         traversed when t = linearProgress, taking the algorithm from
35561         http://steve.hollasch.net/cgindex/curves/cbezarclen.html
35563 2007-06-13  Chris Toshok  <toshok@ximian.com>
35565         * brush.h, geometry.h, animation.h, clock.h: add GetElementType
35566         collection overloads.
35568         * type.cpp: resync to track UIElement : Visual relationship.
35570         * runtime.h: add Collection::GetElementType, and add overloads
35571         (some commented out) for the collections listed.  Also, fix
35572         UIElement's superclass to be Visual.
35574         * runtime.cpp (Add): make sure we're only adding subclasses of our
35575         element type.
35577 2007-06-13  Chris Toshok  <toshok@ximian.com>
35579         * clock.cpp (AddChild): just pass the child, unwrapped.
35581         * runtime.h: remove the Value* overloads for Collection::Add and
35582         Collection::Remove.
35584         * xaml.cpp (dependency_object_add_child): just pass the dependency
35585         object, unwrapped.
35587 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35589         * text.cpp: Implemented a ton of stuff...
35590         (text_init): Added.
35592         * runtime.cpp (runtime_init): Call text_init().
35594 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35596         * runtime.h (Collection): Since it seems that everything we have
35597         so far are collections of dependency objects, the code is now
35598         simplified and will also take refs and remove refs on destruction.
35600         The only reason to implement the Add/Remove methods is if you must
35601         do something as a hook during add/remove
35602         
35603         * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
35604         Objects. 
35605         
35606         (OnPropertyChanged): Allow the value to be NULL, cope with that,
35607         we use this to clear all of our objects.
35609 2007-06-13  Chris Toshok  <toshok@ximian.com>
35611         * xaml.cpp (xaml_create_from_str): make the from_str a little
35612         closer to from_file.  fixes hooking up names when loading from
35613         strings.
35615 2007-06-13  Chris Toshok  <toshok@ximian.com>
35617         * runtime.cpp (runtime_init): start the time manager here.
35619         * demo.cpp (main): instead of here.
35621 2007-06-13  Jackson Harper  <jackson@ximian.com>
35623         * xaml.cpp: Gracefull handling of error conditions. Being
35624         intentionally non strict about some things while we are
35625         developing (like unknown elements, and attributes, and missing
35626         namespaces).
35628 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35630         * brush.cpp: Better, but still imperfect, RadialGradientBrush
35632 2007-06-13  Jackson Harper  <jackson@ximian.com>
35634         * runtime.h: Add some of the error event handler args, so i can
35635         use these in the parser.
35637 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35639         * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
35640         (soptimsation, woot).
35642         * text.cpp: Implemented c wrappers for Inline
35644 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35646         * brush.cpp: Implemented LinearGradientBrush::SetupBrush
35647         * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
35648         support for LinearGradientBrush.
35650 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35652         * text.cpp: Stubbed out TextBlock and Glyphs
35654 2007-06-13  Jackson Harper  <jackson@ximian.com>
35656         * xaml.cpp: GradientBrush is a Brush.
35658 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35660         * runtime.cpp (dependency_object_find_name): Add new wrapper 
35662 2007-06-13  Chris Toshok  <toshok@ximian.com>
35664         * animation.cpp, animation.h: add public storyboard methods for
35665         begin/pause/resume/seek/stop.  also start in on the spline
35666         keyframe/KeySpline stuff.
35668         * type.cpp: resync.
35670         * value.cpp: resync.
35672         * value.h: resync.
35674         * value.h.in: add keyspline stuff.
35676         * type.cpp.in: add keyspline stuff.
35678 2007-06-13  Chris Toshok  <toshok@ximian.com>
35680         * demo.cpp: a few changes - none of the animations run forever
35681         now.  also, add some gtk events (button press/release/motion).  we
35682         pause animations on press, resume them on release.
35684         * clock.cpp: keep track of the offset caused by pausing/resuming
35685         the clock from our parent's time.
35687         * animation.cpp: split out all the logic for finding the current
35688         (and previous) keyframes into
35689         KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
35690         collection maintain a separate sorted list of keyframes.
35692 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35694         * media.cpp (media_base_get_source): Implemented; use char*
35695         instead of Uri - we'll make the binding convert between the types.
35696         (media_base_set_source): Same.
35698 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35700         * runtime.cpp: Xlib and we are both defining Visual,
35701         so implement a workaround.
35703 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35705         * brush.cpp|h: Added code for LinearGradientBrush and partial setup
35706         for all gradient-related brushes (needs testing). Add all color 
35707         definitions supported by XAML.
35708         * mkcolor.cs: Tool to generate colors from System.Drawing (as they
35709         are identical).
35711 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35712         
35713         * runtime.h: Add Visual.
35714         * value.cpp, value.h, type.cpp: Updated.
35716 2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
35718         * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
35720 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35722         * media.h: Added MediaAttribute.
35723         * runtime.h: Added Downloader.
35724         * value.cpp, value.h, type.cpp: Updated.
35725         * typegen.cs: Copy Kind.cs to the correct directory.
35727 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35729         * brush.cpp, brush.h, geometry.cpp: Fix property registration
35730         typos.
35732 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
35734         * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
35735         Brush::RelativeTransformProperty types.
35737 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
35739         * brush.cpp|h: Complete DependencyProperties for GradientBrush and
35740         add GradientStopCollection.
35741         * runtime.cpp|h: Remove code for GradientStopCollection.
35742         * xaml.cpp: Register new brush classes.
35744 2007-06-13  Miguel de Icaza  <miguel@novell.com>
35746         * runtime.cpp: Various new events are now sent.
35748 2007-06-13  Jackson Harper  <jackson@ximian.com>
35750         * xaml.cpp: When using the xaml_create_from_str we automatically
35751         add the default and x: namespaces.
35753 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
35755         * ffvideo.cpp: Fixed to subclass the new MediaElement class.
35757         * video.cpp: Removed.
35759 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35761         * brush.cpp|h: Added DependencyProperty for GradientBrush and 
35762         GradiantStop. Added new brush-related enums. Add [g|s]etter functions
35763         for RadialGradient and BrushGradiantStop.
35765 2007-06-12  Jackson Harper  <jackson@ximian.com>
35767         * xaml.cpp: Repsect namespaces.
35768         - Clean up code a little
35770 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35772         * brush.h: New. Brush related stuff.
35773         * brush.cpp: DependencyProperty for RadialGradientBrush
35774         * runtime.h: [Re]move brush stuff.
35775         * shape.h: Add include for brush.h
35776         * type.cpp, value.h, value.h: Add RadialGradientBrush type.
35777         * Makefile.am: Add brush.h to the build.
35779 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
35781         * media.cpp|h: Added to the build
35783 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35785         * transform.cpp|h: Complete MatrixTransform.
35786         * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
35787         Matrix type.
35789 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35791         * runtime.h (UIElement::inside_object): new routine that should
35792         return true if the given absolute x, y is inside the given object
35793         or not. 
35795         (UIElement::handle_motion): new routine that is called when a
35796         motion event happens, it should determine if it can handle the
35797         given event at x, y.
35799         (Surface): new callbacks, these are callbacks that will pass the
35800         notification of the event to managed code. 
35802         * runtime.cpp (FrameworkElement): provide a default implementation
35803         for inside object that works for "squares" (things with widths and
35804         heights) 
35806 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
35808         * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
35809         simply disable audio for that video. Temporary hack.
35811 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35813         * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
35815 2007-06-12  Jackson Harper  <jackson@ximian.com>
35817         * xaml.cpp: Implement enums.  This implementation is very naive,
35818         but works with the current Silverlight object model.  Basically,
35819         we just index property names to enum maps.  So a property name
35820         maps to a single enum type regardless of the type the enum is
35821         declared in.  This works fine with the current silverlight object
35822         model, but in the future might need to be changed, if we get
35823         conflicting property names.
35825 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
35827         * ffvideo.cpp: Fixed sound playback to not get that nasty
35828         reverb-like effect. Also switched to using SDL for audio.
35830 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
35832         * transform.cpp|h: Implement SkewTransform.
35833         * type.cpp: Register new type SkewTransform.
35834         * value.cpp|h: Add SkewTransform.
35835         * xaml.cpp: Register DO for SkewTransform.
35837 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35839         * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
35840         a normal field.
35842 2007-06-12  Jackson Harper  <jackson@ximian.com>
35844         * xaml.cpp: Don't try to add properties to the panel.
35846 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
35848         * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
35849         * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
35850         * Makefile.am: Add rsvg.cpp|h to the build.
35852 2007-06-12  Jackson Harper  <jackson@ximian.com>
35854         * xaml.cpp: Add parser for KeyTime structures.
35856 2007-06-12  Chris Toshok  <toshok@ximian.com>
35858         * animation.cpp
35859         (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35860         (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35861         (animation_init): make sure to initialize
35862         ColorKeyFrame::ValueProperty.
35864         * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
35866 2007-06-12  Jackson Harper  <jackson@ximian.com>
35868         * animation.cpp|h: C style constructor for KeyFrameCollection.
35869         * xaml.cpp: Implement the KeyFrame types
35870         - Make the base types ghosts, despite what the docs say, they
35871         can't be used.
35873 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35875         * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
35876         when we have reached someone that handles that property in the way
35877         up. 
35879 2007-06-12  Jackson Harper  <jackson@ximian.com>
35881         * xaml.cpp: Register the TriggerCollection so that
35882         TriggerCollections can be created using the explicit syntax.
35883         
35884 2007-06-12  Jackson Harper  <jackson@ximian.com>
35886         * xaml.cpp: No longer need to special case EventTriggers. Remove
35887         some dead code (yippie!)
35888         * runtime.cpp: Unregister the target when removing from the
35889         collection.
35891 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35893         * runtime.h: Implement Inlines.
35894         * value.cpp, value.h, type.cpp: Updated.
35896 2007-06-12  Jackson Harper  <jackson@ximian.com>
35898         * runtime.cpp|h: Hook up the UIElement::Triggers and
35899         EventTrigger::Actions/RoutedEvent properly.
35900         * xaml.cpp: Remove some of the special casing for event triggers
35901         now that they are proper DependencyProperties.
35903 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35905         * typegen.cs: Now checks if classes that inherits DependencyObject
35906         implement GetObjectType.
35907         * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
35908         missing GetObjectTypes and fix a few that were returning the wrong
35909         type.
35911 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35913         * runtime.cpp: 
35914         - (DependencyObject::SetValue): Allow assigning an object of a 
35915           more derived type than the defined property type. Change the
35916           attached_list code to handle NULL dependency_objects.
35917         - Delete types_init, it's generated now.
35918         - Delete Value:As[DependencyObjects], its generated now.
35919         * runtime.h: Added definitions for a few missing collection classes.
35920         * types.cpp[.in], value.cpp[.in], value.h.in: Added.
35921         * value.h: Update.
35922         * Makefile.am: Add types.cpp and value.cpp
35923         * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
35924         value.h and Kind.cs from the headers.
35926 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35928         * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
35930 2007-06-12  Chris Toshok  <toshok@ximian.com>
35932         * clock.h, clock.cpp, runtime.cpp, value.h: use a
35933         TimelineCollection to store child collections in TimelineGroup.
35935 2007-06-12  Chris Toshok  <toshok@ximian.com>
35937         * animation.h, animation.cpp (animation_init): remove the
35938         clock.cpp property registration.
35939         (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
35940         attempt, calculate our timespan from our key frames.
35941         (Animation::GetNaturalDurationCore): return a 1 second duration,
35942         as doc'ed on msdn.
35943         (UpdatePropertyValue): plug leak.
35945         * runtime.cpp (runtime_init): call clock_init.
35947         * clock.h, clock.cpp: largish pass at implementing support for
35948         Duration::Automatic in ClockGroups (where they query their child
35949         timelines to see how long they should make themselves).  Also, add
35950         clock_init.
35952         * xaml.cpp (timespan_from_str): correct math.
35954 2007-06-12  Jackson Harper  <jackson@ximian.com>
35956         * xaml.cpp: Add a couple more of the animation elements.
35958 2007-06-12  Jackson Harper  <jackson@ximian.com>
35960         * runtime.cpp|h: There is no public Triggers property.
35962 2007-06-12  Miguel de Icaza  <miguel@novell.com>
35964         * runtime.cpp (DependencyObject::RegisterFull): Allow for
35965         properties to be flagged as attached, and only propagate the child
35966         notification to those those that care about it.
35968 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35970         * Implement a mechanism to keep track of parents and notify
35971         parents of changes in attached properties.
35973 2007-06-11  Jackson Harper  <jackson@ximian.com>
35975         * xaml.cpp: Add content properties, and handle collections that
35976         are content properties, by implicitly adding items to the
35977         collections.
35979 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
35981         * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
35982         most cases).
35983         * transform.cpp: Add matrix initialization in TransformGroup::
35984         GetTransform. Makes the API safer :)
35986 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
35988         * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
35990 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
35992         * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
35993         [Poly]BezierSegment. More than half of Sam Ruby's samples can work
35994         with this.
35996 2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
35998         * ffvideo.cpp: Attempt to get video to be in sync with audio by
35999         using the audio pts as the target_pts.
36001 2007-06-11  Jackson Harper  <jackson@ximian.com>
36003         * runtime.cpp: Register the collection types as derived from
36004         COLLECTION.
36006 2007-06-11  Chris Toshok  <toshok@ximian.com>
36008         * xaml.cpp (timespan_from_str): fix reading off the end of digits
36009         array.
36011 2007-06-11  Jackson Harper  <jackson@ximian.com>
36013         * xaml.cpp: Implement some more collection loading. A lot of
36014         duplicate code here, so I should probably refactor things a bit,
36015         but will wait until I've seen how more collections are laid out.
36017 2007-06-11  Chris Toshok  <toshok@ximian.com>
36019         * animation.h, animation.cpp: use KeyFrameCollection's for the
36020         *AnimationUsingKeyFrames key frame stuff, instead of GLists.
36022         * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
36024 2007-06-11  Jackson Harper  <jackson@ximian.com>
36026         * xaml.cpp: Make the parents of collections the Collection ghost
36027         element.  This is a first step in cleaning up collection creation
36028         a little.
36030 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
36032         * transform.cpp: remove dead code.
36033         * xaml.cpp: Partial collection support for geometry.
36035 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
36037         * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
36038         open-clipart sample, at least the correct parts of the sample).
36039         * runtime.cpp: Always initialize the matrix in item_get_render_affine
36040         otherwise we'll end up with bad random results.
36042 2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36044         * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
36045         overloads that takes strings as well as DP, GetDependencyProperty where 
36046         it's possible to specify whether the parent type is searched for the
36047         property or not, and a HasProperty method
36049 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36051         * geometry.cpp|h: Fix function names wrt type.
36052         * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
36053         and call update_xform. This fix the "atom" sample :)
36054         * transform.cpp: Fix Rotate and Scale around a center point.
36056 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36058         * geometry.cpp: Add more precision to types.
36059         * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
36061 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36063         * brush.cpp: Implement Opacity for SolidColorBrush.
36064         * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
36065         access it's properties (e.g. Opacity in this case). Add uielement_
36066         [g|s]et_opacity functions.
36067         * shape.cpp: Supply the UIElement when setting up brushes.
36069 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36071         * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
36072         half the width|height.
36074 2007-06-10  Miguel de Icaza  <miguel@novell.com>
36076         * shape.cpp (OnPropertyChanged): Implement this property for most
36077         shapes: if the property is set, we need to invalidate and
36078         repaint. 
36080         * runtime.h (FullInvalidate): A method to perform a queue to
36081         redraw the underlying region, update the bounds and queue an
36082         update for the new region.
36084         * runtime.h (Base): make destructor virtual so that base_unref can
36085         call delete (Base *) p.   Exposed by the managed code when the
36086         first base_unref ran for the first time :-)
36088         I sense a leak!
36090         * runtime.cpp (surface_attach): invalidate the areas before and
36091         after, compute the bounds using item_update_bounds, not the
36092         getbounds method directly.
36094 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36096         * xaml.cpp: Add PathFigure[Collection]/Segments support.
36098 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36100         * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
36101         green unlike other basic colors (red/blue at 0xFF).
36102         * xaml.cpp: Don't assert on an empty collection.
36104 2007-06-10  Miguel de Icaza  <miguel@novell.com>
36106         * runtime.cpp, runtime.h (BasicArray): New base struct for
36107         PointArray and double array, puts the count field at the beginning
36108         and avoids an extra block to be allocated (count and values are
36109         now on a single contiguous block).
36111         Introduce a refcount for the arrays, so that we can release those
36112         properly.  Due to the nature of how we copied values before we
36113         had to leak the values, when the leak was plugged, we crashed.  
36115         The refcount is there just because it was easy, we could clone if
36116         we wanted, but also I would like to keep the refcount there to
36117         ensure that the array of doubles is aligned on an 8 byte
36118         boundary. 
36120         (double_array_new, point_array_new): New methods to create the
36121         structures. 
36123         (Value): Now free the arrays.
36124         
36126 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
36128         * geometry.cpp|h: Add/complete PathFigureCollection and 
36129         PathSegmentCollection. Doesn't parse from xaml.
36130         * runtime.cpp, value.h: Add support for new classes.
36132 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
36134         * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
36135         But color rending is not yet correct in demo files.
36136         * runtime.cpp, value.h: Add support for GeometryCollection
36137         * xaml.cpp: Add support for GeometryGroup
36139 2007-06-09  Chris Toshok  <toshok@ximian.com>
36141         * animation.h, animation.cpp, value.h, runtime.cpp: add
36142         ColorKeyFrame and it's linear/discrete subclasses, as well as
36143         ColorAnimationUsingKeyFrames.
36145 2007-06-09  Chris Toshok  <toshok@ximian.com>
36147         * animation.h, animation.cpp, value.h, runtime.cpp: add the
36148         Discrete keyframes for point and double.
36150 2007-06-09  Chris Toshok  <toshok@ximian.com>
36152         * genkindcs.sh: new file, a script to generate
36153         olive/class/agclr/Mono/Kind.cs.
36155         * value.h: add marker comments so that genkindcs.sh works.  Also,
36156         remove the explicit value assignments to enum elements <
36157         DEPENDENCY_OBJECT.  there's no need for it.
36159 2007-06-09  Chris Toshok  <toshok@ximian.com>
36161         * demo.cpp (main): add in another animation, this one using
36162         keyframes, that moves a square around in a square, while animating
36163         its background color the same way as the other rectangles.
36165         * value.h, runtime.cpp: add in the keyframe types.
36167         * runtime.cpp (DependencyObject::DependenceyObject): fix a
36168         valgrind error - we shouldn't be "free"ing Values, since they're
36169         "new"ed.  Add free_value and use that for the hash table value
36170         dtor, and delete them correctly.
36172         * animation.h, animation.cpp: add a lot of the keyframe animation
36173         stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
36174         the only tested configuration, though.
36176         * clock.cpp (everywhere): guint64->TimeSpan fixing.
36177         (TimeUpdated): turns out that not only does the progress go from
36178         1.0 to 0.0 when reversed, but current_time actually goes backward
36179         as well.  this has the nice effect of actually simplifying this
36180         method substantially, since we can always compute progress as
36181         time/duration.
36183         * clock.h: typedef TimeSpan to gint64 (switching from guint64
36184         everywhere), and update the api to use this.
36186 2007-06-09  Miguel de Icaza  <miguel@novell.com>
36188         * runtime.h (value_color_from_argb): Temporary hack until we
36189         figure out how to marshal Colors properly, we are using the uint32
36190         constructor, we should figure out if this is what we want, or if
36191         we should go down the route of using doubles (C++ stores thinks as
36192         Doubles our managed API as bytes).
36194 2007-06-10  Jackson Harper  <jackson@ximian.com>
36196         * xaml.cpp: Handle the TransformGroup default collection.
36197         - Add Value's to the collection
36199 2007-06-09  Jackson Harper  <jackson@ximian.com>
36201         * transform.cpp|h: C style constructor for TransformGroup
36202         * xaml.cpp: Implement loading transform groups and transform
36203         collections
36205 2007-06-09  Jackson Harper  <jackson@ximian.com>
36207         * value.h:
36208         * runtime.cpp:
36209         * transform.cpp|h: Impplement transform groups and transform
36210         collections.
36212 2007-06-09  Jackson Harper  <jackson@ximian.com>
36214         * value.h:
36215         * runtime.cpp|h: Use the new collection classes for triggers and
36216         actions. These are unsettable, so don't register them as
36217         DependencyProperties.
36219 2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
36221         * runtime.cpp: In surface_destroy check for toplevel before unref
36222         it. 
36224 2007-06-08  Chris Toshok  <toshok@ximian.com>
36226         * animation.h: remove the huge whitespace gap after KeyTime, and
36227         remove the ifdef'ed out Nullable<T> template.
36228         
36229         * animation.cpp: remove the unused point_animation C api, and use
36230         the overloaded + operator on Color and Point when initializing
36231         "end" in GetCurrentValue for those animations.  They're looking
36232         more and more similar.
36234 2007-06-08  Chris Toshok  <toshok@ximian.com>
36236         * globally: move away from all uses of Value::u union.  switch
36237         everything to using Value::As* methods, which do typechecking and
36238         safe downcasting.
36239         
36240         * value.h: make the union private to catch anyone accessing it
36241         directly.
36243         * runtime.cpp (IsSubclassOf): return true if type == super.  Not
36244         strictly "subclass", but it makes this method a little more
36245         useful/efficient.  Add As* methods for string, point arrays, and
36246         double arrays, and add nullable As* methods for the types which
36247         don't return pointers already.
36249 2007-06-09  Jackson Harper  <jackson@ximian.com>
36251         * xaml.cpp: Parse time spans correctly.
36253 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36255         * runtime.h (UIElement): Remove user_xform_origin as a field, now
36256         we pull this from the DependencyObject as it should be. 
36258         * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
36259         other properties that would trigger an invalidate/bounds
36260         recomputation. 
36262         (item_init): initialize the other properties that the managed code
36263         needs. 
36264         
36265         * shape.cpp, ffvideo.cpp: updated to use the
36266         RenderTransformOriginProperty in the computation of the center for
36267         the transformation.
36269 2007-06-08  Chris Toshok  <toshok@ximian.com>
36271         * Makefile.am (libmoon_la_SOURCES): add value.h
36273         * runtime.h, value.h: move the Value structure to value.h, since
36274         it (and its required forward decls) have grown huge.
36275         
36276         * runtime.cpp: add all the Value::As* methods, yay for CPP.
36278 2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
36280         * ffvideo.cpp (queue_data): Replaced the sound code with my newest
36281         implementation, seems to play sound correctly now.
36283 2007-06-08  Chris Toshok  <toshok@ximian.com>
36285         * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
36286         stuff here, to help relieve some of the pressure building up in
36287         animation.h/animation.cpp.
36289 2007-06-08  Chris Toshok  <toshok@ximian.com>
36291         * animation.cpp: add some skeleton code for point keyframe
36292         animations, and reduce all the Double/Point/Color Animation
36293         GetCurrentValue() methods to much the same, using LERP and the
36294         operators defined in runtime.h.
36296         * runtime.cpp (types_init): register the new keyframe types.
36298         * runtime.h: add some new animation types to Value, and add
36299         operators for +, -, and * (scalar) for Color and Point to make the
36300         animation code a little more concise.
36302         * animation.h: add some new classes/structs for use in keyframe
36303         animations.
36305 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36307         * runtime.cpp, runtime.h (Collection): Rework the collection to
36308         use abstract methods (gulp), 
36310         (VisualCollection): New collection, derives from Collection, does
36311         the collection thing.
36313         (Panel.OnPropertyChanged): If our children collection is updated,
36314         take care of it here.
36316         (DependencyObject): use free instead of g_free as we are
36317         allocating strings with strdup.
36318         
36319         (Value): drop constructor that specified type, type is not part of
36320         Value.
36321         
36322         * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
36323         track of types correctly.
36325 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36327         * brush.cpp: Fix color formats argb and rgb (too dark).
36329 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36331         * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
36332         in the integer ranges, and change Type's type hashtable to an array
36333         of types, indexed by Value::Kind. Also add Value::COLLECTION and 
36334         update Collection to use it.
36336 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36338         * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
36339         object(s) being used.
36340         * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
36341         Points properties and some basic draw stuff too.
36343 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36345         * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
36346         Remove the Value (DependencyObject, Kind) constructor,
36347         the type of the DependencyObject can be obtained directly 
36348         from the DependencyObject itself now, and update all uses
36349         to the Value (DependencyObject) constructor.
36351 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36353         * *.h, *.cpp: Remove objectType and SetObjectType from 
36354         DependencyObject, make DependencyObject::GetObjectType virtual, 
36355         and update all inheritors of DependencyObject to not use 
36356         SetObjectType, but override GetObjectType.
36358 2007-06-08  Jackson Harper  <jackson@ximian.com>
36360         * xaml.cpp: Add some type checks to ensure we are setting child
36361         properties to legal types.
36362         - explicitly set properties value types, Value now requires this.
36363         - fix warning
36365 2007-06-08  Jackson Harper  <jackson@ximian.com>
36367         * runtime.cpp: Initialize the surface to NULL
36368         - use UIElement as the type for flags 
36370 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36372         * shape.h: Don't waste time trying to fill lines.
36373         * shape.cpp: Fix dashes support. First reset between shapes and, 
36374         second, handle cairo dislike of a single dash value of 0.0.
36376 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36378         * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
36380 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36382         * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
36383         properties as DependencyProperty. Adjust their Draw methods.
36384         * runtime.cpp: Implement point_array_from_str.
36386 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36388         * shape.cpp|h: Add DP support for StrokeDashArray (double*).
36389         * runtime.cpp|h: Add double* and Point* (array) support to Value.
36390         * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
36391         kind for brushes to avoid runtime warnings.
36393 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36395         * runtime.cpp, runtime.h: Implemented a type system that tracks
36396         types' name and parent type.
36398 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36400         * runtime.cpp (Panel): Make children a property of the panel so we
36401         can access it from the managed world.
36403         (Value): Add new constructor that takes a full type, need to
36404         discuss this with the team.
36406 2007-06-08  Jackson Harper  <jackson@ximian.com>
36408         * animation.cpp|h: Implement BeginStoryboard
36409         * runtime.cpp|h: Implement event triggers
36410         - Fire a loaded event when we first render an element
36411         * xaml.cpp: Implement parsing and loading storyboard and begin
36412         storyboard as well as event triggers and some of the property
36413         types that go with these guys.
36414         
36415 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36417         * runtime.cpp (runtime_init): Add panel_init
36419         (panel_init): Register Children property (must still create the
36420         collections, that will be a new fight).
36422 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36424         * xaml.cpp (start_element_handler): For the top element, track the
36425         type that we loaded, so we can return this to our caller (needed
36426         for the managed interface).
36428         (XamlParserInfo): track also the Value::Kind of the top_element. 
36430         (xaml_create_from_file, xaml_create_from_str): Both now can
36431         optionally return the type of the toplevel element.
36433         * runtime.cpp (Value): Switch Value to strdup/free.
36435         Use inited to prevent multiple initializations.
36437 2007-06-07  Chris Toshok  <toshok@ximian.com>
36439         * demo.cpp (main): track more of the api axing.
36441         * animation.h, animation.cpp (Storyboard::Begin): return
36442         immediately if we've already got a root clock.
36443         (globally) continue axing unused C api.
36445 2007-06-07  Chris Toshok  <toshok@ximian.com>
36447         * demo.cpp: track all the animation changes away from the C api,
36448         and also test out the from/by animation combination by making the
36449         X scaling only go From 1.0 By -0.5 (so it animates in the range of
36450         [1.0..0.5].
36451         
36452         * animation.h, animation.cpp: lots of changes - get rid of many of
36453         the animation/timeline C api calls, since they're unnecessary for
36454         the binding.  Implement the nullable property getter/setters as
36455         #defines since I didn't want to c&p all of them and make the
36456         obvious mistakes.  While I'm at it, implement the thing I needed
36457         nullable typed values for - "by" animation support.  Now you can
36458         specify any of the following combinations and get a usable
36459         animation: From+By, From+To, By, To.  You can actually just put
36460         From as well, but it won't animate (since both start end end will
36461         be the same).  The To property overrides the By property, if both
36462         are present.
36464         * runtime.h, runtime.cpp: add an overload of
36465         DependencyProperty::SetValue which takes a Value*, to enable
36466         nullable types to be set.  the existing SetValue method calls the
36467         new one with &value.
36469 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36471         * brush.cpp: Fix comment.
36472         * shape.cpp: Reduce duplication.
36474 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36476         * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
36478         * runtime.cpp (dependency_object_set_value,
36479         dependency_object_get_value): Add C# callable method calls to
36480         control the properties.
36482         (dependency_property_lookup): Add a way of find dependency
36483         properties.
36485 2007-06-07  Chris Toshok  <toshok@ximian.com>
36487         * animation.cpp (TimeUpdated): comment out some spew.
36489         * runtime.cpp (SetValue): use the copy ctor, and fix != check for
36490         current_value and value.
36491         (Value::Value): add a copy ctor, which takes care of the g_strdup
36492         for us.
36494         * runtime.h: add copy ctor for Value.
36496 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36498         * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
36500 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
36502         * geometry.cpp: #if-out transforms, it crash the xaml samples
36503         * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
36505 2007-06-07  Chris Toshok  <toshok@ximian.com>
36507         * animation.cpp: switch all the various linear interpolation
36508         expressions to using the LERP macro, and add the PointAnimation
36509         implementation.
36511         * animation.h: add PointAnimation.
36513         * runtime.h: add Value::POINTANIMATION.
36515 2007-06-07  Chris Toshok  <toshok@ximian.com>
36517         * runtime.h (Value): add COLORANIMATION to the list of types.
36518         Also, add a Kind constructor so we can use that for nullable type
36519         default values in the ::RegisterProperty calls.  That is,
36520         initializing the default to Value(Value::COLOR) gives you a null
36521         default value with the COLOR type.
36523         * runtime.cpp (Value): new Kind ctor.
36525         * animation.cpp/.h: add ColorAnimation.
36527         * demo.cpp (main): add a color animation that interpolates between
36528         Red and Blue for the SolidColorBrush.
36530 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36532         * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
36533         without a cairo_save|restore pair (or without resetting it's original
36534         value). Anyway right now it works without any of that :)
36536 2007-06-07  Jackson Harper  <jackson@ximian.com>
36538         * runtime.cpp|h: add event triggers.
36539         * xaml.cpp: parse event triggers.
36541 2007-06-07  Chris Toshok  <toshok@ximian.com>
36543         * animation.cpp/.h (Clock): initialize duration here.
36544         (TimeUpdated): instead of getting it every time through this
36545         function.
36547 2007-06-07  Chris Toshok  <toshok@ximian.com>
36549         * animation.h: make Duration::FromSeconds return numbers of the
36550         same magnitude as get_now().
36552         * animation.cpp (Clock): fix UMR.
36554 2007-06-07  Jackson Harper  <jackson@ximian.com>
36556         * xamp.cpp: Oops, not sure how that happened.  Set the property
36557         name correctly, not to the type name.
36559 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36561         * geometry.cpp|h: Apply transform. Fix default values.
36563 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36565         * animation.cpp (get_now): The time computation was wrong, there
36566         was an extra "10" in there that made all computations go astray
36567         and in particular cause the large values for ScaleY, which made
36568         getboundingbox ridiculously slow.
36570         For debugging purposes: ScaleY was being set to
36571         131472940552.95215, which came from
36572         DoubleAnimation:GetCurrentValue which was computing this value
36573         from a busted clock.
36575 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36577         * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
36578         Add basic code for the other geometry types.
36579         * runtime.cpp|h: Add basic implementation for point_from_str and 
36580         rect_from_str 
36581         * shape.h: Export some cairo helpers.
36582         * shape.cpp: Refactor drawing to reuse the code from geometry.
36583         * xaml.cpp: Add Point and Rect parsing.
36585 2007-06-07  Chris Toshok  <toshok@ximian.com>
36587         * demo.cpp: make all the animation stuff work declaratively, and
36588         test some of the different repeatbehavior and autoreverse
36589         settings.
36590         
36591         * animation.cpp: huge block of nasty code to determine our
36592         progress given the combinations of autoreverse and repeatbehavior.
36594         * animation.h: Add Duration stucture, add a few C api calls for
36595         getting/setting timeline properties.
36597         * runtime.h, runtime.cpp: add DURATION support to Value.
36598         
36599 2007-06-07  Jackson Harper  <jackson@ximian.com>
36601         * runtime.cpp|h: Some pieces of the triggers framework.
36603 2007-06-07  Jackson Harper  <jackson@ximian.com>
36605         * xaml.cpp: Handle repeat behaviors, lookup attached properties.
36607 2007-06-06  Chris Toshok  <toshok@ximian.com>
36609         * animation.cpp, animation.h: add timeline_set_autoreverse.
36611 2007-06-06  Chris Toshok  <toshok@ximian.com>
36613         * animation.h: add prototype for timeline_set_repeat_behavior.
36614         
36615         * animation.cpp (animation_init): register the RepeatBehavior
36616         property.
36617         (timeline_set_repeat_behavior): new function.
36619         * runtime.h: a better solution to enforcing types in the Value
36620         ctors - make Value (void*) private.  this gives compilation errors
36621         at all usage points where you're passing an unrecognized pointer
36622         type.  Also, add RepeatBehavior support to Value.
36624         * runtime.cpp: add repeatbehavior support to Value.
36625         
36626         * geometry.cpp: change all Value(pointer-to-struct) calls to
36627         Value(struct) calls.
36629         * transform.h: we need do define TransformGroup as a subclass of
36630         Transform, or the functions that SetValue a transformgroup fail to
36631         compile (since it's not a descendent of DependencyObject.)
36633 2007-06-07  Jackson Harper  <jackson@ximian.com>
36635         * xaml.cpp: Get object element property setting working.
36637 2007-06-06  Chris Toshok  <toshok@ximian.com>
36639         * runtime.h, runtime.cpp: add a special void* ctor to value so
36640         pointers aren't silently converted to bool (bad c++, bad!), and
36641         have that ctor output a warning message to the console, along with
36642         the likely cause.
36644         * brush.cpp: need to deref the Color* in the Value ctor.
36646 2007-06-06  Chris Toshok  <toshok@ximian.com>
36648         * animation.cpp: new dump of the animation stuff.  this is much
36649         closer in spirit and implementation to that of WPF's
36650         timing/animation system.  it's not perfect yet, but it's much,
36651         much closer.
36653 2007-06-06  Chris Toshok  <toshok@ximian.com>
36655         * runtime.h: make the point/color/rect copy constructors take a
36656         ref, not a pointer.  also, make the value contructors for struct
36657         types by-value.
36659         * runtime.cpp: make the value constructors for struct types
36660         by-value.
36662         * brush.cpp (brush_init): pass the Color by value.
36664 2007-06-06  Chris Toshok  <toshok@ximian.com>
36666         * runtime.h, runtime.cpp: move the Value implementation (for
36667         everything but the operators) to the .cpp file.
36669 2007-06-06  Miguel de Icaza  <miguel@novell.com>
36671         * runtime.h, runtime.cpp: Surface is no longer derived from
36672         Canvas, it now instead hosts a canvas, should avoid having two
36673         nested canvases for loading XAML files.
36675         demo.cpp: update.
36677         Correct computation of the bounding box for shapes and videos.
36679         * shape.cpp: Do not pop the cairo state after draw and then call
36680         extents as the computation on extents is done with the current
36681         cairo context, not the cairo context that drew the data before
36682         popping (this would show up with thick brushes).
36684         * runtime.cpp: Add 2 instead of 1, as double to integer rounding
36685         can take two values (negative and positive).
36687         * cutil.cpp: Cut and paste cairo code here, it computes the proper
36688         bounding box from the extents using the current absolute matrix. 
36690         * ffvideo.cpp (queue_data): Memory leak gone.
36692 2007-06-06  Jackson Harper  <jackson@ximian.com>
36694         * xaml.cpp: Set brush attributes.
36696 2007-06-06  Jackson Harper  <jackson@ximian.com>
36698         * runtime.h:
36699         * transform.h: Need to register this base DependencyObject for the
36700         xaml parser.
36701         * geometry.cpp: use correct value kind for registering properties
36702         * runtime.cpp: Don't be strict about the type with properties that
36703         derive from DependencyObject, we can't be too strict here, because
36704         of inheritance the registered type BRUSH could be set to
36705         SOLIDCOLORBRUSH
36706         - register some properties with the correct type
36707         
36708 2007-06-06  Jackson Harper  <jackson@ximian.com>
36710         * animation.cpp|h:
36711         * runtime.h: Staring to add triggers
36712         * shape.cpp: Use brush as our property kind
36713         
36714 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36716         * runtime.h: Add new types and SweepDirection enum.
36717         * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
36718         LineSegment classes and [g|s]etter functions.
36720 2007-06-06  Miguel de Icaza  <miguel@novell.com>
36722         * runtime.h: Move all the types into the Value::Kind enumeration
36723         so that we can have a shared type system.
36725         * demo.cpp (main): Allow loading a XAML file from the command
36726         line, for your testing pleasure.
36728         * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
36729         channels.
36731         Move to cairo to render to the screen the contents
36732         of the buffer.   ffmpeg and cairo do have the same RGBA format, it
36733         was actually the copy from this format to the screen using
36734         gdk_draw_pixbuf that failed: pixbuf expected the data in another
36735         format and there is no way to configure it.
36736         
36737         * runtime.cpp (surface_clear): use the cairo api as the surface is
36738         no longer living on the client buffer. 
36740         (surface_destroy): update
36742         (create_xlib, realized_callback, unrealized_callback): When the
36743         widget is realized, create a cairo context
36745 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36747         * runtime.h: Add Value support for Point and Rect
36748         * geometry.cpp: Implement [g|s]etters for Point and Rect properties
36750 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36752         * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
36754 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36756         * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
36757         set_prop_from_str methods since everything they handled is now
36758         moved into DependencyProperty.
36760 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
36762         * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
36763         brushes. Add getter functions for fill and stroke.
36765 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36767         * runtime.h: Call SetObjectType on Brush and SolidColorBrush
36769 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36771         * runtime.cpp, runtime.h: Remove the default_values hashtable
36772         from DependencyObject, it's redundant since the default value
36773         is stored inside the DependencyProperty anyway.
36775 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36777         * demo.cpp: Adapted to API changes.
36778         * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
36779         DependencyProperty. Add brush initialization code.
36780         * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
36781         Add Color support to Value. Call brush initialization.
36782         * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
36783         * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
36784         from DependencyObject.
36786 2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
36788         * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
36789         non-NULL before trying to scale.
36791 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
36793         * brush.cpp: Fix compiler warning.
36795 2007-06-06  Jackson Harper  <jackson@ximian.com>
36797         * runtime.cpp/h: initialize xaml
36798         - Add canvas C style constructor
36799         - Make SolidColorBrush's Color public
36800         * shape.cpp: Comment out the set_prop... stuff, this code won't be
36801         used anymore, now that the xaml parser is using dependency objects
36802         to set properties.
36803         * animation.cpp|h:
36804         * transform.cpp|h: Add some C style constructors
36805         * brush.cpp: Create colors from a string instead of solid brushes
36806         * xaml.cpp: Add in a known element tree, and move property setting
36807         into the xaml code, also added code for setting properties with
36808         property element syntax
36809         
36810 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36812         Add type checking on SetValue, RegisterProperty to avoid
36813         mistakes. 
36814         
36815         * runtime.cpp (SetValue): Add simple type checking
36816         (Register): Ensure that no empty values are passed. 
36818         * runtime.h (DependencyObject): events, remove unused field.
36820 2007-06-05  Chris Toshok  <toshok@ximian.com>
36822         * runtime.cpp: we need to maintain another hash table for
36823         DependencyProperties so we can return the actual property, not the
36824         default value, which is what GetDependencyProperty needs to do.
36825         (DependencyObject::FindName): implement this by either trying to
36826         use the namescope on this object or the global_NameScope (rather
36827         suboptimal, it's supposed to 'walk the logical tree' according to
36828         msdn).
36830         partially implement NameScope.
36832         * runtime.h: add NameScope, and add a uint64 Value.  Also add
36833         FindName on DependencyObject.
36835 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36837         * shape.cpp|h: Add Shape's thickness and some dash support. Add more
36838         [g|s]etters for Shape using DependencyProperty.
36839         * demo.cpp: Add thickness and dashes to the rectangles.
36841 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36843         * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
36844         functions to retrieve the height and width of shapes (values defined
36845         in FrameworkElement).
36846         * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
36847         and Width properties.
36848         * demo.cpp: Adjust to API changes.
36850 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36852         * shape.cpp: Remove (now) useless properties in Line.
36854 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36856         * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
36857         now have an absolute affine set for us beforehand.
36859         * runtim.cpp: on update_xform call the parent ::get_xform_for to
36860         obtain the base affine transform to use.
36862 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36864         * geometry.cpp|h: Use DependencyProperty for properties.
36865         * transform.h: Protect.
36867 2007-06-05  Chris Toshok  <toshok@ximian.com>
36869         * runtime.h: call SetObjectType where we need it.
36871         * shape.h: same.
36872         
36873         * geometry.h: same.
36875 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36877         * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
36878         by valgrind
36880         * runtime.cpp (item_set_transform): This routine was doing nothing
36881         but doing an invalidate of the region, updating the transform,
36882         updating the bounding box and re-invalidating the new area.   Move
36883         that logic elsewhere (it was also ignoring the affine parameter
36884         anyways). 
36886         Unify user_xform with the RenderTransform dependency property, now
36887         we always have a static absolute transformation in the UIElement. 
36889 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36891         * shape.cpp|h: Update shape_init with correct values and implement
36892          path_[g|s]et_data.
36894 2007-06-05  Chris Toshok  <toshok@ximian.com>
36896         * animation.cpp (ClockTimeChanged): use the instance variety of
36897         GetDependencyProperty.
36899         * runtime.cpp (GetDependencyProperty): just call the static
36900         variety with our objectType.
36901         (SetObjectType): method to enable subclasses to set the object
36902         type.
36904         * runtime.h: add DependencyObject::SetObjectType, as well as the
36905         instance version of DependencyObject::GetDependencyProperty.
36907         * transform.h: call SetObjectType to identify this object.
36909 2007-06-05  Chris Toshok  <toshok@ximian.com>
36911         * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
36913 2007-06-05  Chris Toshok  <toshok@ximian.com>
36915         * runtime.h (Canvas): declare our dependencyproperties here.
36917         * runtime.cpp (canvas_init): actually assign the properties.
36919 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36920         
36921         * runtime.cpp, runtime.h: Implement a DependencyProperty::
36922         GetDependencyProperty.
36924 2007-06-05  Chris Toshok  <toshok@ximian.com>
36926         * runtime.cpp (OnSubPropertyChanged): remove the event handler for
36927         the render transform and use OnSubPropertyChange instead.
36928         (item_set_render_transform): clean this up substantially - the
36929         property system handles all the "event" stuff now.
36930         (item_get_render_transform): we need a getter now that this uses
36931         the depprop stuff.
36932         (NotifyAttacheesOfPropertyChange): new method, call
36933         OnSubPropertyChanged with both the attachee's property (the thing
36934         storing 'this') and the subproperty that changed.
36935         (SetValue): complicate the attachee stuff a bit, since we need to
36936         store both the object and the property it's storing the value in.
36937         (item_init): initialize RenderTransformProperty.
36939         * runtime.h: make UIElement subclass from DependencyObject. This
36940         flattens the hierarchy some from SL (which has Visual in between,
36941         but we have no Visual.)
36943         * transform.cpp (OnPropertyChanged): call
36944         NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
36946 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
36948         * demo.cpp: Updated to use rectangle_set_radius_[x|y]
36949         * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
36950         * xaml.cpp: Updated for API change.
36952 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36954         * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
36955         from DependencyObject.
36956         * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
36958 2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
36960         * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
36961         we simply cannot play sound (or maybe there is no sound), either
36962         way, don't try to dereference the audio_codec pointer if it is
36963         NULL. Also wrapped audio setup in an #ifdef
36965 2007-06-05  Miguel de Icaza  <miguel@novell.com>
36967         Implement the OnPropertySet stuff, builds on Toshok's first pass.
36969         Next stage: discuss with Toshok the migration to this awesome
36970         framework from Events ;-)
36971         
36972         * runtime.cpp (SetValue): when adding dependencyobjects track on
36973         the attached object the ownership.
36975         Notify all containers of a property change.
36977         * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
36978         use the property notification system for these.
36980         * runtime.h (DependencyObject): Add a "attached_list" gslist to
36981         keep track of all the objects where this particular
36982         DependencyObject has been attached to, to provide OnPropertyChange
36983         notifications (not hooked up yet).
36985         (Value): Introduce DependencyObject constructor.
36987 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
36989         * shape.cpp|h: Started moving properties to DependencyObject. Added
36990         Path.
36991         * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
36992         * runtime.cpp: Added calls to shape_init and geometry_init
36993         * runtime.h: Added Rect structure and new DependencyObject types for
36994         shapes and geometry.
36995         * Makefile.am: Added geometry.cpp|h to source files.
36997 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36999         * runtime.h: initialize Value to zero on construction.
37001 2007-06-05  Chris Toshok  <toshok@ximian.com>
37003         * demo.cpp: abstract the cairo transformations away by using
37004         RotateTransforms.. and this is probably going to annoy some
37005         people, but make the normally stationary elements bounce between
37006         smaller and larger.
37008         * animation.h: make Clock subclass from DependencyObject.
37010         * animation.cpp (animation_init): assign the properties, don't
37011         just call Register.
37013         also, track the EventObject method name change.
37015         * runtime.cpp (item_set_render_transform): new method.  unhook the
37016         old transform and hook up the new one.  also, explicit set our
37017         transformation here.
37018         (SetValue): make this only do the work (and more importantly only
37019         call OnPropertyChanged) if the value is different.
37021         * runtime.h: shorten the names of the EventObject methods.  Add
37022         operator== and operator!= to Value.  Add an EventObject to
37023         DependencyObject to give us rudimentary event handlers.  Add the
37024         render_transform "higher-level" transform into to UIElement.
37026         * transform.h: add the OnPropertyChanged override and rename
37027         transform_get_value to transform_get_transform.
37029         * transform.cpp (transform_init): oops.  we need to actually
37030         assign the properties.
37031         (transform_get_transform): indent.
37032         (OnPropertyChanged): override this method to emit
37033         "TransformChanged".
37035 2007-06-04  Chris Toshok  <toshok@ximian.com>
37037         * Makefile.am (libmoon_la_SOURCES): add animation and transform to
37038         the build.
37040         * runtime.h: flesh out Value some, adding BOOL (has to be C++
37041         bool, not gboolean, or else it conflicts with int32), INT32,
37042         INT64, and STRING (char*).
37044         * runtime.cpp (runtime_init): call animation_init and
37045         transform_init.
37047         * animation.cpp, animation.h, transform.h, transform.cpp: get
37048         these using the new dependency object/value foo, and get them
37049         compiling.
37051 2007-06-04  Miguel de Icaza  <miguel@novell.com>
37053         * runtime.h: Make the "Base" refcounting class the base for
37054         DependencyObject. 
37056         * ffvideo.cpp: Set audio initialization to zero for now, so we can
37057         continue debugging.
37059         * runtime.cpp (Canvas): override render, in preparation for using
37060         attached properties.   I get the feeling am going to regret not
37061         keeping the top/left attached properties somewhere else.
37063         (Value): introduce the discriminating union for values as
37064         discussed on irc.
37065         
37066         (DependencyObject): use lower case name for properties.
37067         Take Value * instead of void *, this is so we can represent NULL
37068         values (is this a good idea Chris, or do we want to have a
37069         Value.Type.NULL enumeration value?
37071         Update hash table creation to g_free the result on hash table
37072         update and removal.
37074         (Event): Update indentation to be Linux-like instead of GNU like.
37076 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37078         * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
37079         to create them. Replace the "old" C1 constant in Ellipse::Draw with 
37080         ARC_TO_BEZIER (now that I know where it comes from ;-)
37082 2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
37084         * ffvideo.cpp (queue_data): Got sound kinda sorta working...
37086 2007-06-04  Jackson Harper  <jackson@ximian.com>
37088         * xaml.cpp: Give elements a type
37090 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37092         * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
37094 2007-06-04  Chris Toshok  <toshok@ximian.com>
37096         * animation.h, animation.cpp: initial pass at some of the
37097         animation stuff.  doesn't build yet.
37099 2007-06-04  Chris Toshok  <toshok@ximian.com>
37101         * runtime.cpp, runtime.h: add EventObject, a c++ only base class
37102         for managing events.
37104 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37106         * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
37107         and added Draw methods to Polygon and Polyline.
37108         * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
37109         and match changes in header file.
37111 2007-06-04  Jackson Harper  <jackson@ximian.com>
37113         * shape.cpp/h: width and height are properties of the
37114         FrameworkElement.
37116 2007-06-04  Jackson Harper  <jackson@ximian.com>
37118         * shape.cpp/h: add ellipse_new
37119         - set width/height on ellipses (ellipsi ?) and draw them.
37120         * xaml.cpp: create ellipses, get zorder correct
37122 2007-06-04  Jackson Harper  <jackson@ximian.com>
37124         * xaml.cpp: put in character data functionality, eventually we
37125         will need to add FrameworkElement methods for setting the default
37126         content element. See
37127         http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
37128         for more info on content properties.
37130 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37132         * demo.cpp: Include shape.h and use a rounded-rectangle
37133         * runtime.h: Added FillRule and moved out Shapes.
37134         * shape.h: New. Moved all shapes from runtime.h and added new ones.
37135         * shape.cpp: Added Polygon and Polyline.
37136         * xaml.cpp: Include shape.h
37137         * Makefile.am: Add shape.h
37139 2007-06-04  Chris Toshok  <toshok@ximian.com>
37141         * transform.cpp, transform.h: initial code for the transform
37142         objects.  doesn't compile yet.
37144 2007-06-04  Jackson Harper  <jackson@ximian.com>
37146         * demo.cpp: fix typo
37148 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
37150         * demo.cpp: Fix for API changes.
37151         * runtime.h: Add FrameworkElement, other Shape properties and move
37152         around some properties to match the managed definitions.
37153         * shape.cpp: Add setters for new Shape properties and move properties
37154         parsing to match managed definitions.
37155         * xaml.cpp: Fix for API changes.
37157 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37159         * shape.cpp: Don't typecast doubles into ints.
37161 2007-06-04  Jackson Harper  <jackson@ximian.com>
37163         * runtime.h:
37164         * xaml.cpp: Implement function that allows you to load xaml from a
37165         chunk of text.
37166         * demo.cpp: add a very small xaml demo
37168 2007-06-04  Jackson Harper  <jackson@ximian.com>
37170         * xaml.cpp: remove old no longer used function.
37171         - track whether or not we are adding to a panel instead of surface
37172         * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
37174 2007-06-04  Jackson Harper  <jackson@ximian.com>
37176         * shape.cpp: Add new methods to allow shapes to have their
37177         properties filled in from text values.
37179         * brush.cpp: Start work on allowing solid color brushes to be
37180         created from strings.
37182         * runtime.cpp: stub in methods for setting properties on canvas
37183         and UIElements (these had some meat but I am removing it now that
37184         some of the names are updated, will put back later).
37186         * runtime.h: add some methods and functions for XAML parsing.
37188         * xaml.cpp: Initial implementation of the XAML parser.
37190 2007-06-03  Miguel de Icaza  <miguel@novell.com>
37192         * runtime.cpp (Collection, Panel): The beginning of an API to
37193         encapsulate collections that we will expose to the unmanaged
37194         world.  
37196         This should be the backend for the base collection class in agclr
37197         for the strongly typed types.   
37199         The idea is to have the MS.Internal.Collection<T> be a proxy that
37200         contains an IntPtr pointer to the C++ Collection instance and map
37201         the various add/remove methods to it.
37203         The immediate goal is to be able to do from C#:
37205                 Rectangle r = new Rectangle ();
37206                 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
37207                 Canvas.Children.Add (r);
37209 2007-06-02  Miguel de Icaza  <miguel@novell.com>
37211         Implement support for the render origin.
37212         
37213         * runtime.cpp (item_invalidate): add one to cope with the rouding
37214         from floats to ints (fixes some trailing junk).
37216         Item: redo the affine transformation setup to support both the
37217         render_transform_origin property and avoid recomputing all of this
37218         on each repaint request.
37220         * ffvideo.cpp: Changed the code to do the actual video decoding on
37221         the main thread so we can put all the video and audio in the
37222         queues before we start rendering.
37224         Failed attempts at getting audio to work.
37226         * Everywhere: renamed Item to UIElement to better match the actual
37227         class hierarchy that we will be exposing.
37229 2007-06-01  Jackson Harper  <jackson@ximian.com>
37231         * shape.cpp: Fix typo.
37233 2007-06-01  Miguel de Icaza  <miguel@novell.com>
37235         * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
37236         notify a special function (callback_video_inited).  Makes me
37237         wonder if I should do the same for the new-frame call
37239         Initialize the cairo surface on the callback_video_inited routine
37240         instead of doing this on the decoder thread (that was a mistake).
37242         This solves the misterious case of the video that randomly did not
37243         show up.
37245 2007-05-29  Miguel de Icaza  <miguel@novell.com>
37247         * video.cpp (load_next_frame): reimplement the video play back
37248         logic so that it will now properly paint the proper frame on the
37249         screen as needed.
37251         Add logic to skip frames if video is playing back too slowly, and
37252         to resume playback when new frames are ready.
37254         Currently its computing the delay using the n_frame_rate field
37255         (which no sample uses, but I could not find any other way of
37256         estimating the frame rate other than this.
37258         It works at least with some sample streams that I have with 30 fps
37259         and 15 fps.
37261         * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
37262         and handle exposes in the runtime, not in the demo.   Show the
37263         widget (thats why I was not getting the expose events on the
37264         widget, duh). 
37266 2007-05-26  Miguel de Icaza  <miguel@novell.com>
37268         * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
37270         (Shape): introduce reusable drawing framework for shapes, not
37271         complete. 
37272         
37273         (Line): introduce second user besides rectangles. 
37275         Remove agg test code.
37277         (Group::getbounds): implement.