1 2009-10-09 Chris Toshok <toshok@ximian.com>
3 * control.cpp (Control::OnPropertyChanged): drt #438 shows that
4 you can set Template = null to clear the template's visual tree.
6 (Control::ClearTemplate): set template_root to NULL after we
11 2009-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
13 * playlist.cpp: Quick fix to view NASA's LCROSS satellite crash into
14 the moon live on NASA TV's asx streams.
16 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
18 * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
19 which may happen quite often and in common code paths.
23 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
25 * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
26 invoking the property changed handler the values we have might have
27 gotten deleted. Clone them before calling the property changed handler
28 so that we don't access deleted values. Makes #544211 not crash.
32 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
34 * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
39 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
41 * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
43 * dependencyproperty.g.cpp: Regenerated.
47 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
49 * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
53 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
55 * audio.cpp: AudioSource::Dispose: lock around field accesses,
56 and move the fields into a local variables so we can clean up
57 with the mutex unlocked.
61 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
63 * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
64 end up with a null stream, so don't spam the console with warnings.
68 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
70 * mediaplayer.cpp: Open: seek to the initial pts.
72 * playlist.cpp: When we re-open a media after stopping it, don't do
73 it async since we might end up doing things in the wrong order.
79 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
81 * deployment.cpp|h: Make shutdown an async/iterative process to ensure
82 we don't accidentally get deadlocked while shutting down. Change shutdown
83 sequence to first ensure no media threads are running, then do managed
84 shutdown unloading the appdomain, and do nothing more until the appdomain
85 has unloaded successfully (calling mono_domain_finalize which we used to is
86 very wrong since it assumes all managed threads have been aborted, when only
87 mono_domain_unload actually aborts threads - we ended up executing code in
88 other managed threads with freed objects everywhere). Added an
89 AppDomainUnloadedEvent so that the plugin can know when the appdomain has
90 been unloaded and free itself. Dispose the types when the deployment is
91 disposed, and delete them types when the deployment is destroyed. This way we
92 make sure that the types are available until all the objects have been
93 deleted. This also fixes different code paths / deletion points
94 depending on whether we built with object tracking or not. This also
95 removes the need for the is_dead variable. Maintain a counter of the number of
96 deployments alive so that we know when runtime can be shut down.
98 * dependencyobject.cpp: Don't emit events while we're shutting down.
99 Deployment::is_dead is dead now, remove checks, replaced with Deployment::
100 IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
103 * dependencyproperty.cpp|h: Add a Dispose method which clears out any
104 refs the default value might have (but keep a default value, we depend
105 in some places on having a default value).
107 * type.cpp: Dispose: call Dispose on the DP.
110 * type.h.in: Remove 'disposed' field: no longer needed.
114 2009-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
116 * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
117 This ensures that we don't keep the (default) 5s buffer of media in
118 memory while stopped. Add lots of checks for a stopped media so that
119 we don't refill the buffer after clearing it.
120 Makes MS DRT #238, #239 and #244 require a lot less memory.
122 * playlist.cpp: Call Play on the media too when we start playing.
124 2009-10-05 Jeffrey Stedfast <fejj@novell.com>
126 * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
127 silently drop repeated key-press events.
131 2009-10-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
133 * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
134 issue where we'd create more MediaFrames than the delayed unref
135 mechanism could free, so we'd run out of memory.
139 2009-10-05 Alan McGovern <amcgovern@novell.com>
143 * dependencyobject.h:
144 * dependencyobject.cpp: Store the starting_generation and
145 only_unemitted flags on the EmitContext so that the values
146 are used when we call DoEmitCurrentContext from managed
149 2009-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
151 * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
152 if we there is already a request pending.
156 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
158 Gets drt #412 a bit closer to passing.
160 * textblock.cpp (TextBlock): Initialize our own FontDescription
161 needed so we can tell the layout engine what the base font to use
162 for calculating BlockLineHeight proportions.
163 (TextBlock): Delete our FontDescription.
164 (UpdateFontDescription): New method to update our own
165 FontDescription and notify the layout engine of any changes.
166 (UpdateLayoutAttributes): Call UpdateFontDescription().
167 (UpdateFontDescriptions): Same.
169 * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
170 distance to the baseline given the base font.
171 (TextLayout::OverrideLineHeight): Don't check line_height against
172 NAN, check it against 0 instead. NAN means that we use the
173 containing TextBlock's font height as a base.
174 (TextLayout::LineHeightOverride): New method to figure out the
175 line height value to use when using BlockLineHeight strategy.
176 (TextLayout::DescendOverride): Given the overridden LineHeight,
177 calculate the baseline offset using the proportional distance
178 calculated in SetBaseFont().
179 (TextLayout::Layout): Instead of using 0 as the overridden line
180 descent, use the value calculated from DescendOverride(). Also use
181 LineHeightOverride() instead of line_height directly.
185 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
187 * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
188 disposed, that ensures that the queue is cleared up even if the
189 MmsPlaylistEntry itself leaks.
193 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
195 * pipeline-asf.cpp: Fix some potential leaks.
199 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
201 * fonts.h (class TextFont): Make some of the getters const.
205 2009-10-01 Andreia Gaita <avidigal@novell.com>
207 * utils.cpp: if there's no Application instance, use the root temp
208 dir to store, and track the created path directly on deployment so
209 it can be cleared up in the end.
213 2009-10-01 Alan McGovern <amcgovern@novell.com>
215 * runtime.cpp: WalkTreeForLoaded has already been called on
216 this element as part of the previous call to AttachLayer.
218 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
220 * dependencyobject.h: Make GetUnsafeDeployment available always, media
221 code might use it to get the deployment of the object instead of the
224 * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
225 deployment instance to wait until there is nothing more executing in
226 the thread pool regarding that deployment.
228 * deployment.cpp|h: Maintain a list of all the Media instances created
229 and dispose them when the deployment shuts down.
233 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
235 * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
236 some code duplication in all our Emit methods.
240 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
242 * audio.cpp: Dispose: make sure the audio really stops.
246 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
248 * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
249 thread-safe, since managed code may clear them up on the finalizer
252 * cbinding.cpp|h: Regenerated.
256 2009-09-30 Alan McGovern <amcgovern@novell.com>
258 * runtime.cpp: If the surface has been zombified, don't handle
259 the plugin focus in/out event. r: toshok
261 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
263 * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
266 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
268 * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
269 decoding async. This ensures we don't reenter managed code when the
270 frame comes from MediaStreamSource.
274 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
276 * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
277 for the queue, it may blow up when the process shuts down because the
278 media thread might still be running when the list is destroyed causing
283 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
285 * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
286 specifying the max number of threads, and use static memory for all of
291 2009-09-30 Andreia Gaita <avidigal@novell.com>
293 * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
294 paths that get created in applications, so they can be released even
295 if the Application instance leaks.
297 * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
298 which keeps the base temp path of all files and resources for an
301 * utils.cpp: use the Application GetResourceRoot as a base path for
306 2009-09-30 Alan McGovern <amcgovern@novell.com>
308 * runtime.cpp: When the plugin gets focus or loses focus, we
309 have to emit the corresponding event on the currently
310 focused element - not on the TopLevel. Note that if we focus
311 out of the plugin, we emit LostFocus on the currently
312 focused element but do *not* set the current focused element
313 to null. Lastly when handling the mouse down event, we
314 should not try to focus elements in the hitlist from the
315 mouse click. This mostly fixes DRT 745. r: rolf
317 2009-09-30 Alan McGovern <amcgovern@novell.com>
321 * validators.cpp: IsInputMethodEnabled defaults to true and
322 also needs a validator to ensure that it's only set on
324 * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
325 true and also needs a validator to ensure that it's only set
328 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
330 * pipeline.cpp: Reset more state when a seek completes.
334 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
336 * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
337 call to MediaThreadPool::AddWork, since otherwise we have a race
338 condition between setting the is_disposed variable to true and adding
343 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
345 * mediaelement.cpp: Stop immediately when the we're deattached from the
350 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
352 * deployment.h: Fix typo in comment.
354 2009-09-29 Chris Toshok <toshok@ximian.com>
356 * dependencyobject.cpp (EventObject::StartEmit): when we copy the
357 list of closures to invoke, don't copy ones that are
358 pending_removal. This fixes the crash due to re-entering in drt
359 502 in a way that doesn't break the existing plugin behavior.
360 (EventObject::DoEmitCurrentContext): revert the
361 !closure->pending_removal change that caused plugin event listener
362 breakage in the xaml tests.
366 2009-09-29 Larry Ewing <lewing@novell.com>
368 * border.cpp (InsideObject): improve Border::InsideObject to
369 handle the actual drawn bounds.
375 2009-09-29 Jeffrey Stedfast <fejj@novell.com>
377 * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
378 to be more consistent with the managed method names. Don't set
379 Handled to true, since anything that makes it this far should also
384 2009-09-28 Andreia Gaita <avidigal@novell.com>
386 * application.cpp, bitmapimage.cpp,
387 file-downloader.cpp, fontmanager.cpp,
388 pipeline-ui.cpp, pipeline.cpp,
389 utils.cpp: uniform usage of glib io calls
393 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
395 * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
396 the current deployment as it was when returning from it.
400 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
402 * mediaelement.cpp|h: When receiving markers from the pipeline, store them
403 in a general list and only move them into a TimelineCollection just before
404 checking if they are to be emitted. This avoids locking a mutex during a
405 potentially large time, as well as trying to emit an event on the pipeline
406 thread (collection changed event when adding markers to the
411 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
413 * audio.cpp: Follow refcounting rules with the AlsaPlayer.
417 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
419 * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
420 locked. CreateInstance: Add a couple of comments.
424 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
426 * deployment.cpp|h: No need for the downloaders field to be a pointer
427 when it'll always exist. Move the downloader abort code to the node's
428 destructor, this way we ensure that the downloader is always aborted.
429 Reinitialize: clear the downloaders list instead of creating a new one
430 (and leaking the previous one).
434 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
436 * audio.cpp|h: AudioPlayer can't derive from EventObject, since
437 EventObject is tied to a particular deployment, while AudioPlayer is
438 process-wide. Implement simple refcounting in AudioPlayer to work
439 around this and keep the old behaviour.
444 * type-generated.cpp: Regenerated.
448 2009-09-28 Chris Toshok <toshok@ximian.com>
450 * frameworkelement.h|cpp (class FrameworkElement): remove the
451 empty SetValueWithErrorImpl implementation.
455 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
457 * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
458 MS DRT #244 (and possibly others) where we'd end up raising the
459 MediaOpened event while still parsing xaml (the test didn't have time
460 to attach an handler to the event before it was raised).
464 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
466 * mediaelement.cpp: Stop when we're detached. This helps with a
467 resource "leak": if the user code just removes the mediaelement from
468 the visual tree and forgets about it, we'd continue playing until the
469 gc kicks in and finds out it should free the mediaelement.
473 2009-09-28 Chris Toshok <toshok@ximian.com>
475 * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
476 call closure functions when the closure is pending removal. if
477 it's a managed delegate it will likely have already been
478 collected. This fixes the regression of drt #502.
482 2009-09-24 Stephen Shaw <sshaw@decriptor.com>
484 * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
485 Method now returns a value
489 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
491 * mediaelement.cpp|h: Remove unused methods.
495 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
497 * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
501 2009-09-23 Chris Toshok <toshok@ximian.com>
503 * uielement.cpp (UIElement::EmitGotFocus): this event passes
504 RoutedEventArgs, not EventArgs.
505 (UIElement::EmitLostFocus): same.
507 * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
508 make both MouseButtonEventArgs and MouseWheelEventArgs subclass
509 from MouseEventArgs. Move MouseEventArgs::GetButton and
510 ::GetClickCount to MouseButtonEventArgs.
512 * runtime.cpp (Surface::CreateArgsForEvent): for the button
513 events, create a MouseButtonEventArgs.
515 * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
516 button handling methods.
518 * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
522 2009-09-23 Chris Toshok <toshok@ximian.com>
524 * uielement.h (class UIElement): add event metadata.
526 * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
528 (UIElement::ClearLoaded): same with Unloaded.
530 * type-generated.cpp, type.h, value.h: regen.
532 * transform.h (class Matrix): add event metadata.
534 * timeline.h (class TimelineGroup): add event metadata.
536 * textbox.h (class TextBox): add event metadata.
537 (class PasswordBox): add event metadata.
539 * stylus.h (class StylusPoint): add event metadata.
541 * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
542 captured/pendingReleaseCapture before emitting the event,
543 otherwise we could get into an infinite loop between handler and
545 (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
547 * namescope.h (class NameScope): add event metadata.
549 * multiscaleimage.h (class MultiScaleImage): add event metadata.
551 * mediaelement.h (class MediaElement): add event metadata.
553 * media.h (class MediaBase): add event metadata.
555 * frameworkelement.h (class FrameworkElement): add event metadata.
557 * deployment.h (class Deployment): add event metadata.
559 * dependencyproperty.h: remove PropertyChangedEventArgs from here.
561 * eventargs.h: and put it here.
563 * dependencyproperty.h|cpp: replace the emitting count with a
564 stack of EmitContexts. This is since the managed layer calls a
565 function to actually perform the emit, and the managed code
566 doesn't have access to the context.
567 (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
568 can replace the normal emit machinery with a delegate into managed
569 that calls the OnEvent method.
570 (StartEmit): push the new context onto the stack
571 (DoEmit): if there's an on_event handler, call that and let it do
572 the work. otherwise call DoEmitCurrentContext.
573 (DoEmitCurrentContext): move the actual invoking of event closures
575 (FinishEmit): pop the context off the stack.
576 (DependencyObject::ProviderValueChanged): we have to allocate
577 PropertyChangedEventArgs on the heap now that it's refcounted.
578 (DependencyObject::NotifyListenersOfPropertyChange): same.
579 (DependencyObject::collection_item_changed): same.
581 * control.h (class Control): add event metadata.
583 * control.cpp (Control::OnPropertyChanged): when emitting
584 IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
586 * collection.h (class Collection): add event metadata.
588 * brush.h (class ImageBrush): add event metadata.
590 * bitmapsource.h (class BitmapSource): add event metadata.
592 * bitmapimage.h (class BitmapImage): add event metadata.
594 * application.h (class Application): add event metadata.
596 * cbinding.h|cpp: regen.
600 2009-09-23 Stephane Delcroix <sdelcroix@novell.com>
602 * multiscaleimage.cpp: fix the vp_h computation. vp_h is
603 vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
605 2009-09-21 Stephane Delcroix <sdelcroix@novell.com>
607 * multiscaleimage.h|cpp: stop the animations when setting
608 UseSprings to false. Set the values to the target values
609 of the animations too.
613 2009-09-18 Jackson Harper <jackson@ximian.com>
615 * xaml.cpp|h: Use flags passed to createfromstring now for
616 validating templates and importing the default namespace.
618 * collection.cpp|h: Implement a resource dictionary collection,
619 this is a collection of dictionaries used for the
620 MergedDictionaries property of ResourceDictionaries
621 * resources.cpp|h: Implement the merged dictionaries property and
622 check them when looking up items in a dictionary.
623 * dependencyproperty.g.cpp:
624 * types-generated.cpp:
625 * cbinding.c|h: regen
627 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
629 * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
630 media before asserting that it isn't null.
634 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
636 * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
637 buffering_time of 1 ms, otherwise we'll do nothing at all since we have
638 the requested amount of buffer (nothing at all), but buffering progress
639 is is still at 0% (since we didn't buffer anything). Don't change the
640 buffering progress calculation, since playback would fail (there would
645 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
647 * mms-downloader.cpp: Remove old debugging code that was stripping out
648 everything after a ? in a url.
652 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
654 * xaml.cpp: Honor the debug configuration option instead of enabling it
657 * glyphs.cpp: Move debug code into conditional expression.
659 * debug.h: DEBUG is resolved to nothing at all in release builds, so
660 when checking if debug is defined in complex expressions we need to
661 use 'defined (DEBUG)', since otherwise the expression becomes bogus.
662 Also Move #include "runtime.h" outside of the conditional code, this
663 way we don't have different include requirements in other headers
664 depending on debug/release configuration.
668 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
670 * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
671 specifying whether the current thread should be registered with the
674 This fixes a minor catch with the media threads: they need to register
675 the current thread with the deployment before calling
676 SetCurrentDeployment, but they can't call GetDeployment to get the
677 deployment to register the thread with before calling
678 SetCurrentDeployment since it would trigger a deployment mis-matched
681 * pipeline.cpp|h: Add a thread pool to manage media threads instead of
682 creating one thread per Media instance.
684 * pipeline-asf.cpp: Updated according to Media API changes.
688 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
690 * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
695 2009-09-16 Larry Ewing <lewing@novell.com>
697 * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
698 not DependencyObject so that property changes actually work.
702 2009-09-14 Jeffrey Stedfast <fejj@novell.com>
704 * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
706 * application.cpp (GetResourceAsPath): ExtractAll using
707 CanonModeResource (everything gets lowercased).
709 * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
710 .dll's get lowercased).
711 (xap_create_from_file): Canonicalize the AppManifest.xaml file
714 * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
715 argument to specify whether it is canonicalizing a Xap file, a
716 resource name, or just fixing path separators. When in Xap mode,
717 don't downcase Dll base names.
718 (ExtractAll): When extracting a Xap, symlink a fully lowercased
719 filename to the unmodified .dll name.
723 2009-09-16 Larry Ewing <lewing@novell.com>
725 * tilesource.h: make tileblendtime unamanaged so we can use it
726 when creating the fade animation.
728 * multiscaleimage.cpp (Render): use the duration from the
729 tilesource for the fade animation. This probably needs to listen
730 to change events but more testing is required.
734 2009-09-16 Larry Ewing <lewing@novell.com>
736 * style.h: make IsSealed field internal.
738 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
740 * messagebox.h: Remove tab to please the generator
744 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
746 * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
751 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
753 * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the
754 resource loader from the main thread.
758 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
761 * bitmapimage.cpp: don't leak get_res_aborter.
765 2009-09-16 Stephane Delcroix <sdelcroix@novell.com>
767 * multiscaleimage.h|cpp: StopDownloading () abort and clean the
768 downloaders. Call it from the dtor, InvalidateTileLayer and
769 OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
773 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
775 * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
776 and add a 'description' field to ease understanding of what is going
781 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
783 * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
787 2009-09-15 Larry Ewing <lewing@novell.com>
789 * control.h: Mark IsTemplateItem as internal.
791 * mediaelement.h: mark DownloadProgress as readonly.
793 * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
796 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
798 * messagebox.cpp|h: New. MessageBox implementation
799 * Makefile.am: Add new files to the build
803 2009-09-15 Stephane Delcroix <sdelcroix@novell.com>
805 * multiscaleimage.cpp: set the surface pointer to NULL after
810 2009-09-16 Chris Toshok <toshok@ximian.com>
812 * dependencyobject.cpp (EventObject::Emit): don't return early
813 when we have a pre-emit handler, even if the list is empty. Also,
814 don't do the pre-emit handler here.
815 (EventObject::DoEmit): instead do it here.
817 2009-09-14 Chris Toshok <toshok@ximian.com>
819 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
820 ParserErrorEventArgs overload to MoonError::FillIn to simplify
822 (XamlLoader::CreateFromStringWithError): same.
823 (XamlLoader::HydrateFromStringWithError): same.
825 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
826 MoonError to the ErrorEventArgs, instead of the multiple args.
828 * playlist.cpp: same.
832 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
833 the ErrorEventArgs, instead of the multiple args.
834 (Downloader::NotifyFailed): same.
836 * runtime.cpp (Surface::EmitError): same.
838 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
840 * pipeline.cpp: same.
842 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
843 we need to free the string we pass to MoonError::FillIn now that
845 (DependencyObject::IsValueValid): same.
846 (DependencyObject::RegisterAllNamesRootedAt): same.
847 (DependencyObject::ReadLocalValueWithError): same.
848 (DependencyObject::GetValueWithError): same.
849 (DependencyObject::GetValueNoDefaultWithError): same.
850 (DependencyObject::SetParent): same.
852 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
854 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
855 ImageFailedEvent, after reffing them.
857 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
858 an error, we need to fill in the moon error with the appropriate
859 exception, code, and msg. the calldata to the Emit call is now an
860 ImageErrorEventArgs again, which we construct using the
862 (BitmapImage::DownloaderFailed): same sort of change.
863 (BitmapImage::CreateLoader): same.
865 * bitmapimage.h (class BitmapImage): rename "error" field to
866 "gerror" to make it clearer what it is in the code.
868 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
869 we get a little more indication of where it comes from. this enum
870 is not long for this world, if I can help it.
872 * media.h|cpp (Image::image_failed): pass in the calldata to
874 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
875 ImageFailedEvent, after reffing them.
877 * error.h|cpp: move all the eventargs subclasses from here
879 (class MoonError): add a non-empty ctor, copy ctor and operator=.
880 Also, remove the char* vs. const char* apis. make them all const
881 char*, and dup the passed in string. Lastly, add a FillIn
882 overload that takes a ParserErrorEventArgs.
884 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
885 info in an embedded MoonError.
886 (ExceptionRoutedEventArgs): remove this class. Nothing in
887 unmanaged code uses it.
889 2009-09-14 Sebastien Pouliot <sebastien@ximian.com>
891 * xaml.cpp: remove dead code
895 2009-09-14 Chris Toshok <toshok@ximian.com>
897 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
898 ParserErrorEventArgs overload to MoonError::FillIn to simplify
900 (XamlLoader::CreateFromStringWithError): same.
901 (XamlLoader::HydrateFromStringWithError): same.
903 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
904 MoonError to the ErrorEventArgs, instead of the multiple args.
906 * playlist.cpp: same.
910 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
911 the ErrorEventArgs, instead of the multiple args.
912 (Downloader::NotifyFailed): same.
914 * runtime.cpp (Surface::EmitError): same.
916 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
918 * pipeline.cpp: same.
920 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
921 we need to free the string we pass to MoonError::FillIn now that
923 (DependencyObject::IsValueValid): same.
924 (DependencyObject::RegisterAllNamesRootedAt): same.
925 (DependencyObject::ReadLocalValueWithError): same.
926 (DependencyObject::GetValueWithError): same.
927 (DependencyObject::GetValueNoDefaultWithError): same.
928 (DependencyObject::SetParent): same.
930 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
932 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
933 ImageFailedEvent, after reffing them.
935 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
936 an error, we need to fill in the moon error with the appropriate
937 exception, code, and msg. the calldata to the Emit call is now an
938 ImageErrorEventArgs again, which we construct using the
940 (BitmapImage::DownloaderFailed): same sort of change.
941 (BitmapImage::CreateLoader): same.
943 * bitmapimage.h (class BitmapImage): rename "error" field to
944 "gerror" to make it clearer what it is in the code.
946 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
947 we get a little more indication of where it comes from. this enum
948 is not long for this world, if I can help it.
950 * media.h|cpp (Image::image_failed): pass in the calldata to
952 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
953 ImageFailedEvent, after reffing them.
955 * error.h|cpp: move all the eventargs subclasses from here
957 (class MoonError): add a non-empty ctor, copy ctor and operator=.
958 Also, remove the char* vs. const char* apis. make them all const
959 char*, and dup the passed in string. Lastly, add a FillIn
960 overload that takes a ParserErrorEventArgs.
962 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
963 info in an embedded MoonError.
964 (ExceptionRoutedEventArgs): remove this class. Nothing in
965 unmanaged code uses it.
967 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
970 * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
971 need to play something, and clean up when we stop playing audio.
973 * mutex.h: Add support for recursive mutexes.
977 2009-09-14 Stephane Delcroix <sdelcroix@novell.com>
979 * deepzoomimagetilesource.h:
980 * multiscaleimage.h|cpp:
982 * uielement.h: drop some manually written cbindings in favor of
985 * cbinding.h|cpp: regen
989 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
991 * audio.cpp: It should be safe to delete audio sources on any
996 2009-09-11 Larry Ewing <lewing@novell.com>
998 * deployment.cpp, deployment.h: add OutOfBrowserSettings,
999 ExternalPartCollection, ExternalPart and ExtensionPart to allow
1004 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1006 * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
1007 wherever we used to access the field directly. Fixes a very rare
1012 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1014 * pipeline-asf.cpp: Add a null check.
1018 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1020 * runtime.h: Fix typo in sanity message.
1022 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1024 * audio.cpp: WriteFull: have a local copy of the stream pointer,
1025 it may get changed on the main thread.
1029 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1031 * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
1032 the audio stream in all code paths.
1036 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1038 * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
1039 it should be safe since the tick call is removed upon destruction.
1043 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1045 * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
1046 AudioPlayer is disposed due to refcounting reaching 0. This way
1047 we can keep the instance lock for as little time as possible
1048 (to do the ref), instead of during the entire Add/Remove calls,
1049 which may end up deadlocking deep inside pulse in rare circumstances
1050 (we try to add an audio source on one thread(requires a global pa lock)
1051 when removing another audio source on another thread as a response to
1052 an event from pa which may already have the global pa lock).
1057 * type-generated.cpp: Regenerated
1061 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
1063 * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
1064 pointer instead of subcache, layer, x and y. Avoids some tree waliking
1069 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
1071 * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix
1072 qtree_remove to take guint64 indices, qtree_next_sibling for
1077 2009-09-10 Jackson Harper <jackson@ximian.com>
1079 * namescope.h: Add an accessor for the names hashtable so we can
1080 use them in plugin-debug.
1084 2009-09-10 Jackson Harper <jackson@ximian.com>
1086 * xaml.cpp|h: Add flags to the callback data
1087 - Add a pinvoke function that allows propertys to be delayed in
1088 their set call until after the element is fully parsed. This
1089 allows things like adding elements to a Selector and setting its
1094 2009-09-10 Larry Ewing <lewing@novell.com>
1096 * multiscaleimage.cpp (RenderSingle): work around the cairo
1097 limitations by doing the viewport/msi intersection and clipping in
1102 2009-09-10 Stephane Delcroix <sdelcroix@novell.com>
1104 * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
1105 receive on Render is already clipped to the control size.
1106 Wrap the clipping to image size in a conditional to avoid clipping
1107 with really huge rectangles. That it a bug in cairo, as shown in
1108 drt 2013, 2014. In those cases, the rendering will (visually) leak
1109 for the low order layers.
1113 2009-09-09 Jackson Harper <jackson@ximian.com>
1115 * xaml.cpp: When we are setting attributes we want to set
1116 everything with a backing dependency property before we set things
1117 that require managed. We also delay the setting of attributes with
1118 an explicit managed namespace reference. NOTE: We dont delay
1119 setting attributes that have a DP but are forced into managed
1120 because of their type.
1121 - We can share SetUnknownAttribute functions because the default
1122 xmlns is inited to NULL.
1126 2009-09-09 Stephane Delcroix <sdelcroix@novell.com>
1128 * multiscaleimage.cpp: Clear () the SubImagesCollection on
1129 source changed. Speed things up when reusing the same MSI
1130 over and over with different sources. drt #2004 is now passing
1135 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
1137 * downloader.h, layout.h, list.h: Add missing virtual destructors
1141 2009-09-08 Chris Toshok <toshok@ximian.com>
1143 * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
1144 for ProviderValueChanged's @set_parent.
1145 (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
1146 true in the visual walking case, and false in the
1147 textblock->inline case.
1148 (PROP_ADD): pass true.
1149 (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
1150 (InheritedPropertyValueProvider::PropagateInheritedProperty):
1151 do a deep traversal of the tree, looking for children who have a
1152 mapped property from the changed one (MapPropertyToDescendant
1153 returns NULL if there's no mapping). Once we find a suitable
1154 descendant, call ProviderValueChanged on it with "true" for
1155 notify_listeners. This will take care of notifying further down
1156 the tree if need be, and we can skip that branch. For textblocks
1157 we also have to iterate over the inlines to propagate the property
1158 change notification.
1159 (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
1160 traverse the entire subtree looking for classes which can inherit
1161 properties from above them. when we find one, get the inherited
1162 value. if it's non-null, notify that the property has changed,
1163 and keep trace of this property (we only notify once for a given
1164 subtree, since the normal ProviderValueChanged notifications will
1165 handle the rest for that property.)
1166 (walk_tree): this recursive function does the bulk of the work for
1167 ::PropagateInheritedPropertiesOnAddingToTree
1169 * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
1170 add an additional argument (set_parent), which is true for every
1171 instant except when TextBox is propagating inherited brushes to
1172 its constituent inlines. In this case, the textbox is still the
1173 parent of the brush. At least for the time being. In a perfect
1174 world all the changed handling would live in the leaf
1175 nodes (i.e. in the Inlines themselves)
1176 (DependencyObject::ClearValue): track api change
1177 (DependencyObject::SetValueWithErrorImpl): same.
1178 (DependencyObject::GetValue): add an overload for allowing both
1179 starting and ending precedences, and implement the other two
1180 overloads in terms of it.
1181 (DependencyObject::GetValueSkippingPrecedence): remove, no longer
1184 * uielement.cpp (UIElement::ElementAdded): propagate all
1185 inheritable properties into the subtree we're adding, before
1190 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1192 * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
1193 redirections (drt 874)
1195 * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
1198 * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
1202 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
1204 * downloader.cpp: Skip redirection check if the source url is a
1209 2009-09-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1211 * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
1212 event from the downloader after cancelling a resource request, this
1213 is no longer true, so emit ImageFailed manually after calling Abort.
1217 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1219 * deepzoomimagetilesource.cpp: don't render if any MSI extends
1220 is 0. avoid rendering an extra layer in some cases.
1224 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1226 * deepzoomimagetilesource.h|cpp: replace downloader usage by
1227 Application::GetResource (). Parses the xml stream as it comes,
1228 instead of all at once.
1232 2009-09-07 Chris Toshok <toshok@ximian.com>
1234 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
1235 don't bail out early if both values are null, as the property
1236 might be AlwaysChange.
1237 (DependencyObject::ClearValue): same.
1241 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
1243 * multiscaleimage.cpp: the tileLayer parameter is not the number
1244 of layers to invalidate.
1248 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
1250 * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
1251 full cache, but only the requested tiles.
1255 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
1257 * multiscaleimage.cpp:
1258 * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
1259 the cache, aborting the downloaders, invalidating, etc...) on dzits
1260 urisource changed that is done on msi sourcechanged.
1264 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
1266 * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
1267 the OnSourcePropertyChanged handling outside of OnPropertyChanged.
1268 No longer keep a source instance variable, as we can get it with
1273 2009-09-04 Larry Ewing <lewing@novell.com>
1275 * multiscaleimage.cpp (RenderSingle): clip our rendering to the
1276 image bounds so that when we are scaling up we don't end up with
1281 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
1283 * utils.h|cpp: add a void* arg to the Cancellable api
1285 * application.cpp: remove the downloader notifications on
1288 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
1290 * multiscaleimage.cpp: on source change, don't only Abort() the
1291 dlders, but also reset the internal state of the dlders to Free
1295 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
1297 * multiscaleimage.cpp: reset the Viewport to its default values
1298 on source change. Eventually fixes drt#511.
1302 2009-09-03 Jeffrey Stedfast <fejj@novell.com>
1304 * textbox.h: Nuke the CallInitialize metadata from TextBox.
1306 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
1308 * deepzoomimagetilesource.h: add Generate* attributes
1310 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
1312 * multiscaleimage.h: drop the GenrateJSBinding attributes
1314 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
1317 * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
1318 move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
1319 that we have to strip an eventual leading / on ctor but not on
1322 2009-09-02 Andreia Gaita <avidigal@novell.com>
1324 * dependencyobject.cpp: move the storage cleanup to Dispose, they
1325 will need to invoke handlers and other things that require the
1326 object to still be alive. fixes crash on drt 109
1330 2009-09-02 Jackson Harper <jackson@ximian.com>
1332 * dependencyproperty.cpp: If the explicitly mentioned type does
1333 not contain the property, try looking for the property on the
1334 current lookup obejct. Allows things like (UIElement.Height) on a
1339 2009-09-02 Jeffrey Stedfast <fejj@novell.com>
1341 * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
1342 UpdateLayoutAttributes(). We can't rely on it being called as a
1343 result of setting the Text property since the overall Text
1344 property value might not have changed.
1345 (TextBlock::OnCollectionItemChanged): Same here.
1346 (TextBlock::OnPropertyChanged): Same for when the Inlines property
1347 changes. In the FontSource case, don't set invalidate to
1348 false. Also set dirty to true.
1349 (SetTextInternal): Changed to return void, no need to return bool
1354 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
1356 * layout.cpp (TextLayoutGlyphCluster::Render): If the background
1357 brush is null, don't bother drawing a background.
1361 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
1363 * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
1364 brush is null, don't render the text.
1368 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
1370 * utils.cpp (CopyFileTo): Close the destination file handle if
1371 the source (filename) cannot be opened.
1375 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
1377 * uielement.cpp (UIElement::Paint): Don't leak a copy of the
1378 region when *not* using FTB rendering.
1382 2009-09-01 Larry Ewing <lewing@novell.com>
1384 * frameworkelement.cpp: clear LastRenderSize before we emit so
1385 that we don't end up in a possible recursion.
1387 Fixes http://www.worldwidetelescope.org/webclient/
1391 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
1393 * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
1394 error code when an invalid xap file is encoutered.
1398 2009-08-31 Sebastien Pouliot <sebastien@ximian.com>
1400 * debug.cpp: Delete frame if we're not using it in the loop
1401 * resources.cpp: Don't leak Value instance on error
1405 2009-08-30 Andreia Gaita <avidigal@novell.com>
1409 * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
1410 move it to the Timeline class so all timelines can clear their clocks.
1411 Removed private root_clock, all timelines should use the timeline
1414 * timeline.[h|cpp]: TeardownClock removes the clock from the parent
1415 ClockGroup and clears the ref on the clock so it can be destroyed
1416 (which in turn will release the ref on the timeline so it too gets
1418 DispatcherTimer doesn't have to destroy it's clock, the timeline
1419 dispose takes care of that. Added TeardownClock for DispatcherTimer
1420 so it stops the clock before disposing.
1421 Removed private root_clock, all timelines should use the timeline
1424 * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
1425 group Dispose goes down the hierarchy of clocks and starts clearing
1426 clocks (via timeline TeardownClock) from bottom to top, so
1427 everything is guaranteed to die before the root clock gets
1430 * timemanager.cpp: Dispose root clock before releasing it
1434 2009-08-30 Andreia Gaita <avidigal@novell.com>
1436 * textblock.cpp: drop the run reference, it's already reffed on the
1441 2009-08-28 Alan McGovern <amcgovern@novell.com>
1445 * contentcontrol.cpp: ContentControl is not in charge of
1446 expanding its content template, the users of ContentControl
1447 have to do that. When applying a ControlTemplate, if it
1448 expands to an empty element or one which is not a UIElement,
1449 we ignore the template and instead apply the default
1452 2009-08-27 Jeffrey Stedfast <fejj@novell.com>
1454 * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
1455 Mouse events anymore (except the special internal MultiClick
1456 event). Managed code will now call our public On$Event() methods
1458 (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
1459 true. Doesn't seem like SL ever does.
1463 2009-08-27 Stephane Delcroix <sdelcroix@novell.com>
1465 * tilesource.h: rely on the generator for internal properties.
1468 * deepzoomimagetilesource.cpp: use the accesors instead of the
1471 2009-08-27 Andreia Gaita <avidigal@novell.com>
1473 * dependencyobject.cpp: list should only be cleared, not destroyed,
1474 storage_hash still needs it
1478 2009-08-26 Chris Toshok <toshok@ximian.com>
1480 * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
1485 2009-08-16 Chris Toshok <toshok@ximian.com>
1487 * value.h.in, value.cpp: remove Value::Set. it's unnecessary.
1489 * validators.cpp (Validators::BalanceValidator): use the
1490 assignment operator instead of ::Set, which no longer exists.
1491 (Validators::VolumeValidator): same.
1492 (Validators::CursorValidator): don't assign the pointer, assign
1493 the value. This should have caused bugs...
1497 2009-08-26 Jeffrey Stedfast <fejj@novell.com>
1499 * validators.cpp (FloatValidator): New validator to make sure a
1500 value is within range for a float.
1502 * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
1503 origin_y state variables. We can just query these on demand.
1504 (Render): Simplified slightly.
1505 (GetTransformOrigin): Get rid of unused variable.
1506 (GetOriginPoint): Just use the ascender rather than the height and
1507 the descender. Simpler that way.
1509 * glyphs.h: Changed default OriginX and OriginY values to what
1510 they should be according to the moon-unit tests (also makes drt
1515 2009-08-26 Alan McGovern <amcgovern@novell.com>
1520 * template.cpp: Allow FrameworkTemplates to be expanded in
1521 managed code. Using that, expand the ItemsPanelTemplate in
1522 ItemsControl when it is available. r: toshok
1524 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
1526 * security.c: Fixed typos in last "a11y" commit.
1528 2009-08-26 Chris Toshok <toshok@ximian.com>
1530 * textbox.cpp (TextBoxBase::SetSurface): only call
1531 gtk_im_context_set_client_window if @surface is non-null. this
1532 quiets down some of the gtk warnings on shutdown.
1536 2009-08-26 Alan McGovern <amcgovern@novell.com>
1541 * type-generated.cpp: regen r: shana
1543 2009-08-26 Andreia Gaita <avidigal@novell.com>
1545 * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
1546 public methods that DOs and Clocks use to control an animation:
1547 - when a new storage is attached and there is already one on
1548 the property, Disable removes the handlers from the previous
1550 - when a storage is detached, the previous one is enabled via
1551 Enable, which attaches the handlers;
1552 - when a clock is stopped, it calls Stop, which detaches
1553 everything and resets the property;
1554 - when cloning, SwitchTarget is used to replace the DO and its
1555 handlers on the storage, to avoid having to clone all the
1556 storages every time.
1558 Storages are now only deleted when the clock stops, is destroyed
1559 or when the DO they're attached to is destroyed. IsLonely was
1560 removed (meaningless now), as well as the resettable flag (only
1561 enabled animations reset)
1563 * dependencyobject.[h|cpp]: a DO can have more than one animation
1564 running on the same DP, and they need to be stored so that when a
1565 DO is cloned, all running animations are updated to the new DO -
1566 - this way, when they stop they update the current DO and not the
1567 one they were originally attached to. This fixes the animation
1568 problems on togglebuttons and other objects that have several
1569 animations overlapping each other. The storage_hash now stores a
1570 List* of AnimationStorage::Node objects with all existing animations
1571 for every DP, and the animation storage cloning process doesn't clone
1572 the storages, it merely creates a new List* with the existing storages
1573 and updates them to the newly cloned DO.
1577 2009-08-26 Alan McGovern <amcgovern@novell.com>
1579 * template.cpp: NNull check 'result' before using it. r:shana
1581 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
1583 * security.c: Mark MoonAtkBridge.dll as platform assembly.
1585 2009-08-25 Chris Toshok <toshok@ximian.com>
1587 * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
1588 when IsEnabledProperty has changed. we need to do it after the
1589 focus handling has happened, though, as
1590 FocusManager.GetFocusedElement() returns the currently focused
1591 thing in handlers for IsEnabledChanged. Fixes the rendering of
1592 disabled elements in drt #432.
1596 2009-08-26 Jackson Harper <jackson@ximian.com>
1598 * dependencyproperty.cpp: Allow setting properties that are
1599 attached on their owner type without parens. r: toshok
1601 2009-08-26 Jackson Harper <jackson@ximian.com>
1603 * xaml.cpp|h: Expose a function for parsing bools so the plugin
1604 code can use our bool parsing code. (Handle ints).
1606 r: shana && kangaroo
1608 2009-08-25 Jeffrey Stedfast <fejj@novell.com>
1610 * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
1611 invalidate unless one of the fonts has actually changed.
1615 2009-08-25 Jackson Harper <jackson@ximian.com>
1617 * type.cpp: Function was still in the header but somehow lost its
1618 implementation. We dont use it anywhere but its useful for
1619 debugging. r: kangaroo
1621 2009-08-25 Alan McGovern <amcgovern@novell.com>
1627 * contentcontrol.cpp: Add support for using
1628 ContentControl.ContentTemplate when it is available. If
1629 there is no Control.Template, ContentControl.ControlTemplate
1630 is used. If that isn't available, we call into managed code
1631 and get the fallback root. r: toshok
1633 2009-08-24 Jackson Harper <jackson@ximian.com>
1635 * dependencyobject.cpp: Hydrated objects are registered in their
1636 parent namescope so we need to unregister them there also. r: toshok
1638 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
1640 * fontmanager.cpp (AddResource): Need to free the path string
1641 before returning on success.
1643 * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
1644 leak the various lists.
1648 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
1650 * grid.cpp (DestroyMatrices): Need to use delete[] to free the
1655 2009-08-21 Alan McGovern <amcgovern@novell.com>
1658 * template.cpp: Whenever any template is expanded, the
1659 template namescope should be locked. r: jackson
1661 2009-08-21 Alan McGovern <amcgovern@novell.com>
1663 * grid.cpp: When assigning sizes to grid segments, if the
1664 current UIElement spans across star segments, then extra
1665 height will only be assigned to those star segments.
1666 Otherwise extra height will be assigned to Auto and Pixel
1669 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
1671 * textbox.cpp (TextBoxBase::Emit*Async): Removed.
1672 (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
1673 (TextBox::EmitTextChanged): Same.
1674 (PasswordBox::EmitTextChanged): Same.
1676 * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
1678 * dependencyobject.cpp (EventObject::EmitAsync): New method to
1679 emit an event asynchronously.
1683 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
1685 * textbox.cpp (emit_selection_changed): Pass along the generation
1686 to the virtual EmitSelectionChanged() method.
1687 (emit_text_changed): Same.
1688 (EmitSelectionChangedAsync): Use a custom closure so that we can
1689 capture the current event generation to use when we actuall emit
1691 (EmitTextChangedAsync): Same.
1695 2009-08-20 Jackson Harper <jackson@ximian.com>
1697 * xaml.cpp: Setting OBJECT properties allows objects to be parsed
1698 from strings that shouldn't normally be. Such as SolidColorBrush
1699 and PointCollection.
1701 2009-08-19 Jeffrey Stedfast <fejj@novell.com>
1703 * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
1704 same algorithm used by Silverlight.
1708 2009-08-19 Jackson Harper <jackson@ximian.com>
1710 * playlist.cpp: Its possible to queue an async operation and then
1711 call Dispose before that operation has taken place. This patch
1712 makes Playlist delay its unref and adds guards in its async
1713 callback functions to avoid this. Fixes http://www.nederland24.nl/
1716 2009-08-18 Jackson Harper <jackson@ximian.com>
1718 * template.cpp: Remove not very helpful and somewhat scary looking
1719 debug spew. r:toshok
1721 2009-08-18 Jeffrey Stedfast <fejj@novell.com>
1723 * layout.cpp (word_type_changed): Partial revert for previous
1724 commit as it broke drt #208.
1728 2009-08-17 Jeffrey Stedfast <fejj@novell.com>
1732 * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
1734 (word_type_changed): Allow alphabetic characters inside
1736 (layout_word_wrap): Allow line advance to equal max width.
1740 2009-08-18 Alan McGovern <amcgovern@novell.com>
1743 * grid.cpp: Remove the 'magic' size as size allocations are
1744 read from row_matrix/col_matrix now. r: kangaroo
1746 2009-08-18 Alan McGovern <amcgovern@novell.com>
1749 * grid.cpp: Allocate sizes of the grid segments in the correct
1752 2009-08-17 Alan McGovern <amcgovern@novell.com>
1755 * grid.cpp: When allocating sizes for rows/columns, clamp the
1756 sizes between the Min and Max values in a consistent manner.
1759 2009-08-17 Alan McGovern <amcgovern@novell.com>
1762 * grid.cpp: Change the parameter order in the Segment
1763 constructors to be "value, min, max" to be consistent with
1764 how 'CLAMP' is usually defined. r: jackson
1766 2009-08-16 Chris Toshok <toshok@ximian.com>
1768 * xaml.cpp (value_from_str_with_parser): fix the abundant memory
1769 leaks in this method.
1771 * propertypath.h (struct PropertyPath): add a copy constructor
1772 here so the xaml.cpp changes work without crashing.
1776 2009-08-16 Chris Toshok <toshok@ximian.com>
1778 * xaml.cpp (value_from_str_with_parser): we were using the return
1779 value from this method to be "v has been set to a value", but this
1780 isn't enough state. We also need to know if the
1781 caller (dependency_object_set_attributes, specifically) should
1782 continue on or skip the attribute after it's called us. So, we
1783 add a "bool *v_set" parameter, and change the return value to
1784 "false = skip, true = continue processing." We return false in
1785 only 1 case right now, if a double-typed value is to be parsed
1786 from an empty string. This fixes the Klotski demo, which has
1787 <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
1788 usage to also deal properly with leading spaces, and stop
1789 duplicating "g_free (s); return true;" - just break there, and let
1790 the blanket free/return at the end of the method handle it.
1791 (dependency_object_set_attributes): simplify the {} handling, and
1792 stop leaking the string value of the attribute when we pass it to
1797 2009-08-15 Larry Ewing <lewing@novell.com>
1799 * mediaelement.cpp (Render): use the same logic we used in image
1800 here to always adjust the paint rect when stretch != StretchNone.
1804 2009-08-15 Larry Ewing <lewing@novell.com>
1806 * shape.cpp (MeasureOverride): Stretch to the proper width when
1807 available size in not infinite. Avoid using infinite dimesions as
1808 constraints for Uniform stretches.
1810 Fixes Header stretching in playboy an improves DRT #210.
1814 2009-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
1816 * pipeline.cpp: Quiet some debug spew.
1820 2009-08-14 Larry Ewing <lewing@novell.com>
1822 * grid.cpp (MeasureOverride): properly use min and max.
1824 Fixes regression in DRT #319 from new table code
1828 2009-08-14 Larry Ewing <lewing@novell.com>
1830 * media.cpp: always adjust our paint rectangle when Stretch !=
1833 Fixes DRT #516 and the regression in #422
1837 2009-08-14 Larry Ewing <lewing@novell.com>
1839 * frameworkelement.cpp (Arrange): apply the size constraints after
1840 we the the actualsize back from the element.
1842 * layoutinformation.cpp (GetClip): now that other things are
1843 improved only traverse up one level.
1845 Fixes clipping on the smooth streaming size and DRT #210
1849 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1851 * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
1856 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1858 * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
1859 variables in local variables and clear out the instance variables
1860 before unreffing them - prevents certain rare cases of infinite loops.
1864 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1866 * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
1867 we've been disposed.
1871 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1873 * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
1878 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1880 * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
1881 if we've been disposed.
1885 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1887 * pipeline.cpp: IMediaObject::Dispose: clear the list of events
1888 we were supposed to emit on the main thread.
1892 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1894 * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
1898 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1900 * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
1901 variables in local varaibles and clear out the instance variables
1902 before unreffing them - prevents certain rare cases of infinite loops.
1906 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1908 * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
1909 variables in local variables and clear out the instance variables
1910 before unreffing them - prevents certain rare cases of infinite loops.
1914 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1916 * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
1921 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1923 * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
1924 dependency between MmsPlaylistEntry and Media.
1928 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1930 * pipeline.cpp: Media::Dispose: store a copy of our instance variables
1931 in local variables and clear out the instance variables before
1932 unreffing them - prevents certain rare cases of infinite loops.
1936 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1938 * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
1942 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1944 * pipeline-asf.cpp: Add a few missing unrefs.
1948 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1950 * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
1951 the closure is called.
1955 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1957 * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
1958 can detect if the callback has been called or not.
1962 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1964 * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
1965 dispose on the media thread, call dispose directly.
1969 2009-08-14 Alan McGovern <amcgovern@novell.com>
1972 * grid.cpp: Rewrite the size allocation code in grid to better
1973 match the microsoft implementation. It works much better for
1974 the pixel and auto cases, but still has some issues with
1975 star columns. r: lewing
1977 2009-08-14 Jeffrey Stedfast <fejj@novell.com>
1979 * application.cpp (GetResource): Close the stream when we're
1980 done. Also changed to check write_cb exists before reading from
1981 the stream - if the callback is NULL, don't even bother.
1982 (GetResourceAsBuffer): Removed.
1983 (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
1984 the streaming ourselves. Also return NULL if writing the stream to
1987 * utils.cpp (managed_stream_open/read/write/etc): Changed to be
1988 internal. These symbols don't need to be publicly exported.
1990 * utils.h: Added a Stream_Close function signature to
1991 ManagedStreamCallbacks.
1993 * bitmapimage.cpp (resource_notify): Make static/internal - does
1994 not need to be publicly exported.
1998 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
2000 * multiscaleimage.cpp: retry downloading up to 5 times.
2002 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
2004 * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on
2009 2009-08-13 Larry Ewing <lewing@novell.com>
2011 * usercontrol.cpp (MeasureOverride): don't constrain the results.
2017 2009-08-13 Larry Ewing <lewing@novell.com>
2019 * textblock.cpp (MeasureOverride):
2020 * textbox.cpp (MeasureOverride): ceil our measurement request when
2021 layout rounding is being done so that we don't get rounded down
2022 and forced to wrap. More testing is in order but failure mode for
2025 Fixes wrapping in Playboy and the chess final screen.
2029 2009-08-13 Larry Ewing <lewing@novell.com>
2031 * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
2032 to idle so that firefox and gtk can process events without getting
2033 starved. Improved Quakelight and StrangeAttractor experience.
2037 2009-08-13 Larry Ewing <lewing@novell.com>
2039 * src/brush.cpp: replace all cairo_matrix_invert calls with a
2040 version that warns if it fails.
2044 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2046 * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
2047 advance width is 0. Fixes test-videobrush-text.xaml to render all
2052 2009-08-13 Chris Toshok <toshok@novell.com>
2054 * xaml.cpp (start_element): If the element is a TextBox.Text
2055 CDATA, treat it as verbatim. Partial fix for drt 2003.
2059 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2061 * layout.cpp (Layout): Make sure all attributes were able to load
2062 their fonts. If not, we can't proceed. Fixes the NULL TextFont
2065 * textblock.cpp (OnPropertyChanged): Instead of using
2066 UpdateLayoutAttributes(), all we really need to do is call
2067 UpdateFontDescriptions() when the FontSource changes.
2071 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2073 * fonts.cpp (TextFont::Load): When loading a font face from a
2074 source w/o any families specified, make sure to set master=0 so
2075 that we don't try to get extents from faces[-1].
2079 2009-08-13 Larry Ewing <lewing@novell.com>
2083 * writeablebitmap.cpp (InitializeFromBitmapSource): always use
2084 rgba pixelformat like sl3 does now.
2086 2009-08-12 Chris Toshok <toshok@ximian.com>
2088 * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
2089 "own" (default: true) which, if true, causes the bitmap source to
2090 free the bitmapdata when it's destroyed.
2092 * cbinding.h|cpp: regen
2094 2009-08-12 Alan McGovern <amcgovern@novell.com>
2097 * cbinding.cpp: regen r: toshok
2103 * contentcontrol.cpp:
2104 * frameworkelement.cpp: A ContentControl which has no Template
2105 needs to call into managed land to create a 'default
2106 template'. When the Content is a UIElement, the UIElement is
2107 used as the template root, otherwise a Grid + TextBlock
2108 (with Binding) is used. This is the same as what
2109 ContentPresenter does to its Content property. r: toshok
2111 2009-08-12 Alan McGovern <amcgovern@novell.com>
2113 * uielement.cpp: VisualParent should be set to null before
2114 invalidating the cache otherwise the element might be added
2115 to the dirty lists. This causes issues if the element is
2116 added back into the visual tree at a different level. r:
2119 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
2121 * multiscaleimage.cpp: clear the cache on source change, cache a NULL
2122 tile on downloader failure (fix drt 2014 for good).
2124 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
2126 * multiscaleimage.cpp: restore the initial number of concurrent
2127 downloaders, drt 2014 will require a proper fix.
2129 2009-08-12 Chris Toshok <toshok@ximian.com>
2131 * media.h|cpp (class Image): if our source is a BitmapSource,
2132 handle the PixelDataChangedEvent and Invalidate ourselves if it's
2135 * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
2136 handle the PixelDataChangedEvent and notify our listeners to
2137 redraw if it's emitted.
2139 * bitmapsource.h|cpp (class BitmapSource): add an event so classes
2140 using BitmapSources can be notified when the pixel data
2141 changes (primarily for use with WriteableBitmap). Emit it from
2142 BitmapSource::Invalidate.
2144 * type-generated.cpp, cbinding.h|cpp: regen
2146 2009-08-11 Chris Toshok <toshok@ximian.com>
2148 [ each of these changes fixes a line of text in drt 444 ]
2149 * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
2152 * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
2153 UpdateLayoutAttributes if FontSource is changed, so that the
2154 change propagates down to the inlines.
2158 2009-08-11 Larry Ewing <lewing@novell.com>
2160 * grid.cpp (MeasureOverride): adjust row definition values by
2161 max/min values when building up the Actual sizes
2167 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
2169 * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
2170 the TextFontDescription as well as emitting an event so the view
2171 knows it has to re-render. Improves drt 480.
2172 (PasswordBox::OnPropertyChanged): Same.
2173 (TextBox::ClearFontSource): Removed, not used.
2174 (PasswordBox::ClearFontSource): Same.
2178 2009-08-11 Andreia Gaita <avidigal@novell.com>
2180 * runtime.cpp: TimeManager should be the last thing destroyed, other
2181 objects might need to access it while disposing. r: alan
2183 2009-08-11 Stephane Delcroix <sdelcroix@novell.com>
2185 * multiscaleimage.cpp: cast so the modulo operation opers on int,
2186 not guint64. Fix sharedtiles usage. r:shana, lewing
2188 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
2190 * textbox.cpp (TextBoxBase::Paste): Change the multiline
2191 truncation test to explicitly check for \r, \n and 0x2028 instead
2192 of using g_unichar_type() which didn't return the expected values
2193 for these characters. Partial fix for drt 2003.
2194 (*Box::OnPropertyChanged): Updated for AddResource() API change.
2196 * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
2197 AddResource() API change.
2199 * fontmanager.cpp (AddResource): Instead of having our callers
2200 generate a unique resource name, let us do it for them. Don't
2201 bother using mkstemp()/mkdtemp() since our root dir is already
2202 unique. Also fixed to reset the stream resource after consuming it
2203 so that if multiple textblocks/boxes/etc reuse the FontSource,
2204 things work properly. Partial fix for drt 444.
2208 2009-08-11 Alan McGovern <amcgovern@novell.com>
2210 * runtime.cpp: Controls aren't really auto-focused. What
2211 happens is that when a focused control is removed from the
2212 live tree SL does not emit a LostFocus event and so when the
2213 control is added back into the tree it still thinks it has
2214 focus. This call is still needed as there can be pending
2215 GotFocus/LostFocus events waiting to be emitted. r: toshok.
2217 2009-08-11 Alan McGovern <amcgovern@novell.com>
2219 * runtime.cpp: Make HandleUIKeyPress do the same thing as
2220 HandleUIKeyRelease when there is no toplevel so it doesn't
2223 2009-08-10 Larry Ewing <lewing@novell.com>
2225 * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
2226 jpg abort the getresource call.
2228 2009-08-07 Larry Ewing <lewing@novell.com>
2230 * dirty.cpp (UpdateLayout): don't use the toplevel hack on
2233 Gets DRT #516 very close to passing slight layout problems left.
2235 2009-08-10 Andreia Gaita <avidigal@novell.com>
2237 * ptr.h: Change the base class to not allow direct casts to Value
2238 objects. Add cast operator to cast between DO classes directly
2240 2009-08-10 Andreia Gaita <avidigal@novell.com>
2242 * animation.[h|cpp]: Check for valid applier before trying to use it,
2243 it could be disposing, same for targetprop.
2244 * timemanager.cpp: clear applier when disposing
2246 2009-08-10 Andreia Gaita <avidigal@novell.com>
2248 * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
2249 pointer for DependencyObject.
2250 * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
2251 * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
2252 them when destroying
2254 2009-08-10 Alan McGovern <amcgovern@novell.com>
2256 * frameworkelement.cpp: A new measure pass should be made if
2257 either the available width *or* available height has changed
2258 since the last measure pass.
2260 2009-08-10 Andreia Gaita <avidigal@novell.com>
2262 * ptr.h: fix assignment operators, the copy by reference ones were
2263 causing the pointer to be destroyed prematurely when assigning via
2266 2009-08-08 Chris Toshok <toshok@ximian.com>
2268 * fontmanager.cpp (FontManager::AddResource): pass stream->handle
2269 as the first arg to stream->Read, not stream itself. Also, get
2270 rid of "total" and just pass a 0 offset for each read, since we're
2271 writing the full buffer's contents up to nread each time anyway.
2273 2009-08-07 Andreia Gaita <avidigal@novell.com>
2277 * multiscaleimage.cpp: Fix the type of the left shit operations to
2278 avoid overflows. Make it an inline function for easier maintenance.
2279 * tilesource.[h|cpp]: Fix the type of the image width and height,
2280 should be bigger than int.
2282 2009-08-07 Jeffrey Stedfast <fejj@novell.com>
2286 * textbox.cpp (TextBox::OnPropertyChanged): If setting
2287 SelectedText to "", don't emit TextChanged events if there was no
2289 (PasswordBox::OnPropertyChanged): Same.
2291 2009-08-06 Chris Toshok <toshok@ximian.com>
2293 * runtime.cpp (Surface::tick_after_attach_reached): the ordering
2294 of code between this method and Surface::ToplevelLoaded is likely
2295 still somewhat wrong, but moving the Emit here fixes drt #21.
2297 2009-08-06 Chris Toshok <toshok@ximian.com>
2299 * window-gtk.cpp: move the InvokeTickCalls from here...
2301 * runtime.cpp: to the HandleUI* methods here, so they will be used
2302 in both windowed and windowless codepaths.
2304 2009-08-06 Chris Toshok <toshok@ximian.com>
2306 * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
2307 another argument now (the data object passed to AddTickCall) so we
2308 can differentiate callbacks properly.
2310 * runtime.h|cpp (Surface::Attach): we don't return true from
2311 IsLoaded until after the first tick, so that our measure pass has
2312 been run (and contentpresenters are created for all content
2313 controls.) register the tick call here (after removing any that
2314 may have already been added).
2315 (Surface::tick_after_attach_reached): set ticked_after_attach to
2317 (Surface::IsLoaded): we require ticked_after_attach to be true
2320 * cbinding.h|cpp: regen.
2322 2009-08-06 Jeffrey Stedfast <fejj@novell.com>
2324 * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
2325 selection, just set the selection to the cursor position. This
2326 way, if the control gets programatically Focus()'d again, then the
2327 cursor will be where it was just before the control lost
2328 focus. Partial fix for drt 2003.
2330 2009-08-06 Jackson Harper <jackson@ximian.com>
2332 * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
2333 property has already been set.
2335 2009-08-06 Jackson Harper <jackson@ximian.com>
2337 * xaml.cpp: Its possible that a buffered element can add a new
2338 namespace that start_element_handler will not know about, just
2339 ignore this error and the namespace will be added when the buffer
2342 2009-08-06 Jackson Harper <jackson@ximian.com>
2344 * xaml.cpp: Handle null in the print_tree debug code. (This can
2345 occur when loading a null template)
2347 2009-08-05 Larry Ewing <lewing@novell.com>
2349 * frameworkelement.cpp (UpdateLayout): revert an accidental
2352 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
2354 * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
2355 should not copy the text buffer to the clipboard if the contents
2358 2009-08-05 Larry Ewing <lewing@novell.com>
2360 * uielement.cpp (ElementRemoved): clear the desired size when
2361 removing the element.
2363 * layoutinformation.cpp: partially revert one of the workarounds.
2365 * frameworkelement.cpp (Arrange): get the old_size from the
2366 RenderSize not the ActualWidth.
2368 2009-08-05 Chris Toshok <toshok@ximian.com>
2370 * popup.cpp (class GenerationClosure): new closure for emiting the
2371 Opened and Closed events.
2372 (Popup::emit_opened, Popup::emit_closed): pass the generation from
2373 the closure to ->Emit.
2374 (Popup::OnPropertyChanged): for the tick call, pass a closure that
2375 contains the current event generation.
2377 * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
2378 factor out the loop for invoking tick calls here and call it from
2379 the source tick method.
2381 * window-gtk.cpp (MoonWindowGtk::button_press)
2382 (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
2383 (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
2384 (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
2385 (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
2386 TimeManager::InvokeTickCalls from each of these methods before we
2387 call the Surface::HandleUI* method.
2389 * dependencyobject.h (class EventObject): make a couple of api
2391 (AddTickCall*): add an "EventObject* data" parameter. if it's
2392 NULL, pass "this", so we have the current behavior.
2393 (DoEmit/Emit): add a "starting_generation" optional argument. if
2394 it's supplied, we invoke only those handlers with tokens less than
2395 the starting_generation (i.e. those handlers that were registered
2396 before the event was generated.)
2398 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
2400 * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
2401 FontSource property when the FontFamily property changes.
2402 (TextBox::OnPropertyChanged): Handle FontSource property changes.
2403 (PasswordBox::OnPropertyChanged): Same.
2405 * textblock.cpp (CleanupDownloaders): Free the font_source string
2407 (SetFontSource): Update the font_source string based on the
2409 (UpdateLayoutAttributes): No longer need to get the font_source
2410 string, we already have it.
2411 (UpdateFontDescriptions): Same.
2412 (OnCollectionItemChanged): Here too.
2413 (OnPropertyChanged): Update the font_source string when the
2414 FontSource property changes.
2416 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
2418 * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
2419 GdkEventButton structure, use the new MouseEventArgs accessors
2422 * eventargs.cpp (GetButton): Get the id of the button pressed.
2423 (GetClickCount): Get the number of clicks on the button.
2425 2009-08-05 Alan McGovern <amcgovern@novell.com>
2427 * panel.cpp: The LogicalParent needs to be set before the
2428 element is added, otherwise the Loaded event can be fired
2429 before LogicalParent is set.
2431 2009-08-04 Larry Ewing <lewing@novell.com>
2433 * uielement.cpp (DoMeasure): invalidate up the tree more
2434 agressively. Fixes DRT #190 regression.
2436 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
2438 * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
2439 callback for the MultiClick event.
2440 (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
2441 double and triple mouse clicks.
2443 * uielement.h: Added a MosueLeftButtonMultiClickEvent.
2445 * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
2446 (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
2448 * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
2450 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
2452 * utils.cpp (write_all): Changed to just return int (-1 for fail,
2454 (ExtractFile): Don't fsync(). Saves us a lot of time.
2456 2009-08-03 Larry Ewing <lewing@novell.com>
2458 * shape.cpp (ArrangeOverride): clear the current path.
2460 2009-08-03 Larry Ewing <lewing@novell.com>
2462 * textbox.cpp (OnModelChanged): InvalidateMeasure when things
2465 2009-08-03 Jeffrey Stedfast <fejj@novell.com>
2467 * fontmanager.cpp (AddResource): Implemented a version of this
2468 interface that can take a ManagedStreamCallbacks argument.
2470 * application.cpp (GetResourceAsPath): If we are adding the X's
2471 ourselves, use MakeTempDir() instead of CreateTempDir().
2473 2009-07-31 Larry Ewing <lewing@novell.com>
2475 * layoutinformation.cpp (GetClip): add another hack for layoutclip
2476 on Controls while things are in flux.
2478 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2480 * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
2481 the work was enqueued or not.
2483 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2485 * pipeline.cpp: Media: use the new ClearQueue overload instead of
2486 spreading the logic all over the place.
2488 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2490 * pipeline.cpp: Media: add a ClearQueue overload which optionally
2493 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2495 * playlist.cpp: Don't g_warn something which can happen in normal
2498 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2500 * mediaplayer.cpp: Plug a leak in one rare code-path.
2502 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2504 * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
2506 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2508 * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
2510 2009-07-31 Jeffrey Stedfast <fejj@novell.com>
2512 * fonts.cpp (LoadPortableUserInterface): Always load the en-US
2513 font(s) first, and then load the preferred CJK font, followed by
2514 the rest. This improves drt 414.
2516 * fontmanager.cpp (GetExtents): Improved baseline alignment by
2517 adjusting Descent if Height is larger than Ascent +
2518 Descent. Especially visible with drt 107's Deobfuscated Brauhaus
2521 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2523 * deployment.cpp: Dispose: we need to unref and null out the application.
2525 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2529 * eventargs.cpp|h: Set the object's type upon construction instead
2530 of using SetObjectType right after. This is useful when tracking
2531 objects by type - the ctor also shows up.
2533 * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
2534 a Type::Kind argument.
2536 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
2538 * debug.cpp: Make the stacktrace pipes thread-local. This way
2539 printing stacktraces from several threads at the same time doesn't
2540 result in a big mess.
2542 2009-07-30 Larry Ewing <lewing@novell.com>
2544 * layoutinformation.cpp (GetClip): add a workaround for the panel
2545 case while layoutinformation is refactored.
2547 2009-07-30 Larry Ewing <lewing@novell.com>
2549 * layoutinformation.cpp: repair a merge bug.
2551 2009-07-30 Larry Ewing <lewing@novell.com>
2553 * layoutinformation.cpp, layoutinformation.h: move layoutinformation
2554 out of uielement.h. Compute the layout clip on the fly.
2557 * dependencyproperty.g.cpp:
2558 * frameworkelement.cpp:
2559 * frameworkelement.h:
2570 * uielement.h: start reworking layout logic at we refactor
2571 layoutinformation. Use RenderLayoutClip where appropriate.
2573 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
2575 * fontmanager.cpp (GetExtents): Much better fix than the
2576 string-comparison hack. Poke at the TrueType/OpenType OS/2 table
2577 and use the usWinAscent/usWinDescent values since this is what
2578 most Windows applications (brokenly) use according to some info I
2579 found on the web. Low and behold, this also makes the Adobe Caslon
2580 Pro metrics work out exactly like they do in Silverlight, so I'm
2581 guessing that the info I found is accurate :-)
2583 2009-07-30 Larry Ewing <lewing@novell.com>
2585 * uielement.cpp (DoArrange): revert the parent invalidation change as it
2588 2009-07-30 Larry Ewing <lewing@novell.com>
2590 * control.cpp (OnPropertyChanged): update the layout if the
2593 2009-07-30 Larry Ewing <lewing@novell.com>
2595 * uielement.cpp (DoArrange): remove the parent invalidation call
2596 it shouldn't be required now and is contraindicated by DRT #501.
2598 * runtime.cpp: InvalidateMeasure on resize.
2600 2009-07-30 Alan McGovern <amcgovern@novell.com>
2603 * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
2606 * dependencyobject.h:
2607 * dependencyobject.cpp: Implement a new method for adding
2608 callbacks to invoke asynchronous events. They can't be
2609 invoked using the regular AddTickCall as that causes the
2610 ordering of mouse events and asynchronous events to be
2611 incorrect preventing drt 333, 476 and some others from
2614 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
2616 * fontmanager.cpp (GetExtents): Now uses the alternative method of
2617 getting font metrics. Also, when dealing with Adobe fonts, use the
2618 bbox to get metrics rather than using the normal
2619 ascender/descender/height values.
2621 2009-07-30 Jackson Harper <jackson@ximian.com>
2623 * xaml.cpp: Swallow white space before linebreaks.
2625 2009-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
2627 * src.mdp: Connect the Build command in
2628 MonoDevelop with 'make install'.
2630 2009-07-30 Andreia Gaita <avidigal@novell.com>
2632 * multiscaleimage.cpp: leak and initialization fixes
2634 2009-07-30 Andreia Gaita <avidigal@novell.com>
2636 * shape.cpp: use smart pointer to avoid unreffing by hand
2638 2009-07-30 Andreia Gaita <avidigal@novell.com>
2640 * timeline.cpp: leak fix
2642 2009-07-30 Andreia Gaita <avidigal@novell.com>
2644 * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
2645 * Makefile.am: updated
2647 2009-07-29 Larry Ewing <lewing@novell.com>
2649 * border.cpp (ArrangeOverride): return the input now that it is
2652 * frameworkelement.cpp: short circuit Measure and Arrange if the
2653 element is collapsed.
2655 2009-07-29 Jeffrey Stedfast <fejj@novell.com>
2657 * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
2658 of the keyboard event was handled (meaning the state has changed).
2659 (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
2662 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2664 * shape.cpp: Plug a leak.
2666 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2668 * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
2669 semantics as EventObject::Emit: unref the event args at the end of
2672 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2674 * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
2675 unreffing the reffed media we've got.
2677 2009-07-29 Sebastien Pouliot <sebastien@ximian.com>
2679 * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
2680 Helper.CheckIntegrity (System.Windows.dll)
2682 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2684 * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
2685 improvement: return true immediately if we've actually managed to
2686 open a demuxer instead of enqueuing another call to
2689 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2693 * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
2694 to the playlist before initializing it, since initializing it may
2695 end up opening it right away and then it must be present in the
2698 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2700 * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
2701 created when done with them.
2703 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2705 * pipeline.cpp: printf -> LOG_PIPELINE.
2707 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2709 * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
2710 when we're done with it.
2712 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2714 * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
2715 unref it when done with it.
2717 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2719 * dependencyobject.h: Make EventObject::GetObjectType
2720 non-virtual. No need for a virtual method anymore, since we store
2721 the type on the object itself.
2723 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2725 * application.cpp: unref the downloader when it has finished.
2727 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2729 * utils.cpp|h: Cancellable: use strong typing to store the
2730 downloader and ref it. This way the cancel callback can use the
2733 2009-07-29 Alan McGovern <amcgovern@novell.com>
2738 * cbinding.cpp: 1) TextBox cannot hook into Key press events
2739 in unmanaged code otherwise they never propagate to managed
2740 and the user cannot intercept them. Instead of hooking to
2741 the event in native code, just call native
2742 TextBox::OnKeyDown in the managed override.
2743 2) Key press events are actually handled in two different
2744 places. 'Navigation' keypresses like Left/Right/PgUp are
2745 handled when the textbox OnKeyDown virtual method is
2746 invoked. 'Character' keypresses like 'a', 'b', 'c' are
2747 handled after the KeyDown event is emitted
2748 3) If a key press does not affect the textbox state (i.e.
2749 pressing 'left' when the caret is already at the very left),
2750 then the keypress is not handled.
2751 4) The KeyDown event is emitted even if OnKeyDown is overriden
2752 and the base method is not invoked.
2753 5) The tab key should be interpreted as 'Focus next control'
2754 only after the KeyDown event handlers have run and the key
2755 press is not handled.
2757 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
2759 * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
2760 know we can't decode. This means that if the user does not have
2761 MS codecs (or any other codecs) installed, he'll get the download
2762 codecs dialog for wmav3 media too.
2764 2009-07-28 Sebastien Pouliot <sebastien@ximian.com>
2766 * mediaelement.cpp: Add a check if the codecs have already been
2767 downloaded/installed without refreshing the browser. This will
2768 stop additional dialogs showing up and fix a crash (x86_64) if
2769 the codecs are downloaded/installed a second time in the same
2772 2009-07-27 Larry Ewing <lewing@novell.com>
2775 * src/frameworkelement.cpp:
2778 * src/textblock.cpp:
2779 * src/usercontrol.cpp: Move the alignment logic out of the
2780 controls and into the Arrange call now.
2782 Fixes DRT #335 improves several others.
2784 2009-07-28 Jackson Harper <jackson@ximian.com>
2786 * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
2788 - Don't create a Matrix for TRANSFORM properties if "Identity" was
2789 used as the string. (kinda seems like an SL bug to me).
2791 2009-07-28 Jeffrey Stedfast <fejj@novell.com>
2793 * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
2795 * window-gtk.cpp (button_press): Revert change to drop
2796 2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
2797 we find a better way (also, 234 is still broken even with this
2798 change, which breaks 337 and possibly makes other
2799 TextBox/PasswordBox drts unfixable).
2801 2009-07-27 Larry Ewing <lewing@novell.com>
2803 * glyphs.cpp, glyphs.h: Start implmenting glyph layout. Fixes DRT #442.
2805 2009-07-27 Larry Ewing <lewing@novell.com>
2807 * frameworkelement.cpp: Always round down when doing layout
2810 * uielement.cpp (OnPropertyChanged): Invalidate layout on
2815 2009-07-27 Chris Toshok <toshok@ximian.com>
2817 * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
2818 handler *after* all registered handlers. part of the fix for drt
2821 * window-gtk.cpp (MoonWindowGtk::button_press): ignore
2822 double-click and triple click gdk events here. part of the fix
2825 2009-07-27 Jackson Harper <jackson@ximian.com>
2827 * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB. It
2828 is legal to hydrate a top level managed non DOB class.
2829 * cbinding.cpp|h: regen
2831 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
2833 * mp3.cpp: When seeking and we don't have enough data to seek to
2834 the desired pts, try again a bit later. Fixes MS DRT #59.
2836 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
2838 * src.mdp: Use Makefile integration.
2840 2009-07-27 Alan McGovern <amcgovern@novell.com>
2842 * uielement.cpp: Default styles are applied even if the user
2843 applies a style. Fixes some visual glitches in the controls
2846 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
2848 * pipeline.cpp|h: Use Application::GetResource instead of creating
2849 downloaders to get data.
2851 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
2853 * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
2856 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
2858 * application.cpp: GetResource: set the notify_size callback
2859 on the downloader too. Media must known the size whenever possible.
2861 2009-07-27 Larry Ewing <lewing@novell.com>
2863 * uielement.cpp (GetTransformToUIElementWithError): signal and
2864 error in the to_element doesn't have a Surface case.
2866 2009-07-26 Larry Ewing <lewing@novell.com>
2868 * rect.h: make PointInside inclusive on the top/left.
2870 2009-07-24 Larry Ewing <lewing@novell.com>
2872 * textblock.cpp: Rework the bounds computation to be the max of
2873 the actual and the framework element settings. Fixes DRT #245.
2875 2009-07-24 Larry Ewing <lewing@novell.com>
2877 * border.cpp: Apply the default constraints more carefully.
2879 * src/frameworkelement.cpp, src/frameworkelement.h: add
2880 ApplySizeContraints method, use it.
2884 * src/textblock.cpp:
2885 * src/usercontrol.cpp: use ApplySizeContraints method.
2887 2009-07-24 Larry Ewing <lewing@novell.com>
2889 Rename some of the layout information based on some
2892 2009-07-24 Jeffrey Stedfast <fejj@novell.com>
2894 * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
2895 width/height properties change, pass those values along to our
2896 TextBoxView as well.
2898 2009-07-24 Jackson Harper <jackson@ximian.com>
2900 * xaml.cpp: Instead of cloning the element set it's namescope
2901 explicitly so it doesn't get registered in another namescope when
2902 it is used as a property of an element in another namescope.
2904 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
2906 * downloader.cpp (same_domain): Fixed to be safe if/when a uri
2909 2009-07-23 Alan McGovern <amcgovern@novell.com>
2911 * animation.cpp: If the initial value is null, create a Value
2912 with the correct type with IsNull set to true.
2914 2009-07-23 Jackson Harper <jackson@ximian.com>
2916 * xaml.cpp: If we are getting a named item from the app resources
2917 we should clone it since it comes from a different namescope. This
2918 allows you to have named items in app.resources be referenced in
2919 control code as a static resource even if it has the same name as
2920 an object in the control code.
2922 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
2924 * fonts.cpp (LoadPortableUserInterface): Even if we are a
2925 Silverlight 2.0 app, we still need to load Lucida Sans for the
2926 font face extents (Lucida extents seem to be very close to what
2927 Microsoft Silverlight is using).
2929 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
2931 * runtime.cpp: HandleUIKeyRelease: add a null check before
2932 accessing toplevel. Apparently toplevel can be null when the
2933 site fails to load completely (mstv.cz / bug #506306).
2935 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
2937 * media.h: MarkerReachedEventArgs: make Markers accessible to
2941 * cbinding.cpp: Regenerated.
2943 2009-07-22 Chris Toshok <toshok@ximian.com>
2945 * animation.h|cpp: add some more accessors for AnimationStorages
2946 so we can clone them.
2948 * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
2949 from here, and put it in DependencyObject where (imo) it belonged
2952 * dependencyobject.h|cpp: move the AnimationStorage stuff here,
2953 and also add support for cloning the storage while we're cloning
2954 the object. This means that new animations started against
2955 existing objects (with animations) will inherit the right reset
2956 value. This fixes the button animation regression.
2958 2009-07-22 Jeffrey Stedfast <fejj@novell.com>
2960 * fonts.cpp (LoadPortableUserInterface): If the application is a
2961 Silverlight 2.0 app, default to Verdana instead of Lucida Sans
2964 * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
2965 is a no-op for ReadOnly TextBox controls.
2967 2009-07-22 Sebastien Pouliot <sebastien@ximian.com>
2969 * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
2970 the current timemanager.
2972 2009-07-21 Jeffrey Stedfast <fejj@novell.com>
2974 * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
2976 (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
2978 (TextBoxBase::OnKeyDown): If there is no selection and the user
2979 invokes the Cut or Copy commands, do not overwrite the clipboard
2980 buffer with an empty string.
2982 2009-07-21 Jackson Harper <jackson@ximian.com>
2984 * xaml.cpp: Raise errors from managed SetProperty.
2986 2009-07-21 Jackson Harper <jackson@ximian.com>
2988 * xaml.cpp: Don't raise errors if we are a managed element, let
2989 the managed SetProperty handle that stuff.
2991 2009-07-21 Alan McGovern <amcgovern@novell.com>
2994 * dependencyproperty.g.cpp: The issue with auto creating
2995 PathGeometry.Figures appears to be fixed so add
2996 AutoCreateValue to FiguresProperty and see how the bots
2999 2009-07-20 Chris Toshok <toshok@ximian.com>
3001 * application.h|cpp: add a ResourceBase parameter to all the
3002 GetResource calls and to the GetResourceCallback delegate type.
3004 * dependencyobject.h (DependencyObject::SetResourceBase,
3005 DependencyObject::GetResourceBase): new methods.
3007 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3008 "inherit" resource base from our parent (this might be very, very
3010 (DependencyObject::Initialize): init resource_base to null.
3011 (DependencyObject::~DependencyObject): free resource_base.
3013 * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
3014 resource using our resource base.
3016 * template.cpp (FrameworkTemplate::GetVisualTree): use the same
3017 resource base when expanding the template.
3019 * textblock.cpp (Inline::AddFontResource): locate the font using
3021 (TextBlock::AddFontResource): same.
3023 * textbox.cpp (TextBoxBase::AddFontResource): same.
3024 using our resource base.
3026 * glyphs.cpp (Glyphs::SetFontResource): same.
3028 * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
3029 those SetSurface calls, and put it here. Also, set the resource
3030 base at the same time.
3031 (XamlLoader::Initialize): store off the resource_base.
3032 (XamlLoader::~XamlLoader): and free it.
3033 (xaml_loader_new): take a resourceBase, and pass it along.
3034 (XamlLoader::HydrateFromString): set the ResourceBase on the
3036 (create_element_info_from_imported_managed_type): remove the
3037 SetSurface call, just call XamlParserInfo::AddCreatedElement.
3038 (XamlElementInstanceNative::CreateItem): same.
3039 (XamlElementInfoManaged::CreateElementInstance): same.
3040 (XamlElementInfoManaged::CreateWrappedElementInstance): same.
3042 * xaml.h (class XamlLoader): add a common Initialize method, and a
3043 ctor overload that takes a "resource base", which is the uri which
3044 we're loading from. Also add a GetResourceBase() accessor.
3048 2009-07-20 Larry Ewing <lewing@novell.com>
3050 * uielement.cpp (ComputeTransform): add a hack for placing popup
3053 * popup.cpp: call updatetransform on our child whenever the offset
3054 values change. Fixes DRTs #325 #503
3056 2009-07-18 Jackson Harper <jackson@ximian.com>
3058 * xaml.h|cpp: New flag on the loader for determining whether or
3059 not to auto import the default SL namespace.
3060 - Throw the proper error if the default namespace isn't available.
3061 * template.cpp: Templates get the default namespace auto
3064 2009-07-17 Larry Ewing <lewing@novell.com>
3066 * runtime.cpp (Attach): copy the current framerate to the new
3069 2009-07-17 Jeffrey Stedfast <fejj@novell.com>
3071 * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
3073 (TextBoxBase::Paste): Consider the SelectionLength in our
3074 MaxLength overflow calculation.
3075 (TextBuffer::ctor): Instead of taking ownership of a string
3076 buffer, just copy it instead. This keeps memory management more
3078 (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
3080 (TextBoxUndoActionReplace::ctor): Same, so copy it.
3081 (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
3082 the undo action. I think some of these situations leaked before.
3084 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3086 * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
3088 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3090 * multiscaleimage.cpp: more protections against crash with 31 layers
3092 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3094 * multiscaleimage.cpp: allow up to 31 layers.
3096 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3098 * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
3100 2009-07-17 Alan McGovern <amcgovern@novell.com>
3102 * runtime.cpp: Correctly set 'emittingMouseEvent' to
3103 true/false when we receive a mouse event. Fixes some mouse
3104 capture issues in drt 535
3106 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3108 * playlist.cpp|h: Make the *Async methods really async, and add corresponding
3111 * mediaplayer.cpp: Don't allow Play while we're seeking.
3113 * mediaelement.cpp: When calling any of the async methods on the playlist,
3114 set the expected state immediately, since CurrentState is not async. Also
3115 allow Play/Pause/Stop if we're already in the desired state, since there might
3116 be another state changed pending.
3118 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3120 * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
3122 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3124 * pipeline.cpp|h: Notify the decoder when a seek has completed so
3125 that it can clean its state properly. FillBuffers: the final buffer size
3126 is equal to the smallest buffer size of all the streams, not the buffer
3127 size of the last stream.
3129 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3131 * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
3132 has already finished.
3134 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3136 * playlist.cpp|h: Fix IsSingleFile implementation.
3138 * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
3139 a Stop for non-playlist media.
3141 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3143 * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
3144 it whenever we stop the audio. AdvanceFrame: For media with a specified
3145 duration stop the audio when we've reached the desired duration.
3147 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3149 * mediaelement.cpp: OpenCompletedHander: Before emitting
3150 DownloadProgressChangedEvent get the highest DownloadProgress value
3151 from either our own dependency property or the media. For mms streams
3152 download progress needs to be 1.0 when emitting MediaOpenedEvent,
3153 the mms code sets media's DownloadProgress to 1.0 after parsing the
3154 asf header correctly, but since the media emits the DownloadProgressChanged
3155 event async, the dependency property in MediaElement hasn't been updated
3156 yet in OpenCompletedHandler.
3158 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3160 * pipeline.cpp: Allow buffering progress to go down, not only up.
3161 Also fix progress events to only emit if delta > 0.5% or if equal
3162 to lower/upper limits.
3164 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3166 * pipeline.cpp|h: When we get a decode frame request from another
3167 thread, store the request on the demuxer in a list, instead of on the
3168 media thread's stack. This ensures that decode frame requests are
3169 decoded in the same order they're requested.
3174 * type-generated.cpp: Regenerated.
3176 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3178 * playlist.cpp|h: Added and Emit EntryChangedEvent.
3180 * type-generated.cpp: Regenerated.
3182 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3184 * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
3187 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3189 * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
3190 buffer level will fluctuate as we play.
3192 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3194 * mediaelement.cpp|h: When we pause, store the current position, which we must return
3195 while paused. It may differ from the actual position when we pause, since the actual
3196 pause is done async.
3198 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3200 * mediaplayer.cpp|h:
3201 * mediaelement.cpp|h: Use a property value provider for
3202 Render/DroppedFramesPerSecond.
3204 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3206 * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
3207 call us from a worker thread.
3209 2009-07-16 Jackson Harper <jackson@ximian.com>
3211 * xaml.cpp: When creating user controls make sure that we are
3212 hydrating if an x:Class type name is used.
3214 2009-07-16 Jeffrey Stedfast <fejj@novell.com>
3216 * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
3217 'atomic' argument. If atomic is true, then the buffer is not
3218 growable. This is the behavior we want for TextBoxBase::Paste(),
3219 but not TextBoxBase::Commit() (which needs to allow growable
3220 insert actions so that Undo removes the string of text the user
3221 just typed as opposed to just the most recent character).
3222 (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
3223 TextBoxUndoActionInsert::.ctor().
3225 2009-07-16 Alan McGovern <amcgovern@novell.com>
3230 * uielement.cpp: 1) If the Control is not attached to a
3231 subtree which has been loaded, don't propagate IsEnabled to
3233 2) Whenever a Control is loaded we traverse it's visual
3234 parents until we find another control and propagate the
3237 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
3239 * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
3240 properties as AlwaysChange. fix drt #291.
3242 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3244 * dependencyobject.cpp: Retrieve all instance variables we need
3245 into local variables before decreasing the refcount. If the
3246 refcount is > 0 after decreasing it, we can't access instance
3247 variables anymore, since another thread might have unreffed which
3248 would cause the object to be deleted already.
3250 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3252 * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
3255 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3257 * dependencyobject.cpp: Add sanity check for refcount < 0.
3259 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3261 * dependencyobject.cpp: Move sanity verification into #if SANITY.
3263 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3265 * dependencyobject.h: Is, GetType, GetTypeName: use the Type
3266 overloads which takes a Deployment and provide our deployment
3269 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3271 * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
3272 which takes a Deployment argument for when we already have the
3273 Deployment handy. This way we can avoid hitting
3274 Deployment::GetCurrent on some frequently used methods.
3276 * type.h: Regenerated.
3278 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3280 * runtime.h: Add stack trace to warning.
3282 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3284 * audio.cpp: Underflowed: if we haven't ended and don't have any
3285 more frames, we need to set the Waiting bit so that we start
3286 playing again when we get more frames.
3288 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
3290 * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
3291 avoid issues while reusing dlders for the same images, like in drt2013
3293 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
3295 * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
3296 on tilesource InvalidateTileLayer ().
3298 2009-07-16 Jackson Harper <jackson@ximian.com>
3300 * xaml.cpp: Remove some dead code.
3302 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
3304 * deployment.h: DeploymentStack: Added to ease push/pop current
3305 deployment when calling into a browser.
3307 2009-07-15 Chris Toshok <toshok@ximian.com>
3309 * clock.h|cpp (Clock::CalculateFillTime): split this out from
3310 Clock::Begin since we can seek on a clock that hasn't actually hit
3312 (Clock::Begin): call CalculateFillTime.
3313 (Clock::UpdateFromParentTime): change our calculations slightly
3314 for what localTime is in the face of a seek, and update
3315 progress/localtime even when stopped. Also, call
3316 CalculateFillTime if we're seeking on a clock that hasn't started,
3317 to make sure we get the proper progress.
3318 (Clock::Seek): don't apply the SpeedRatio here, we do it in
3319 UpdateFromParentTime.
3321 * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
3323 (AnimationStorage::UpdatePropertyValue): pass the stopValue or
3324 baseValue as the defaultDestinationValue to
3325 AnimationClock::GetCurrentValue.
3326 (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
3327 (DoubleAnimation::GetCurrentValue): if there's a correctly typed
3328 defaultDestinationValue, use that before the base case of end =
3330 (ColorAnimation::GetCurrentValue): same.
3331 (PointAnimation::GetCurrentValue): same.
3333 2009-07-15 Jackson Harper <jackson@ximian.com>
3335 * xaml.cpp|h: Consolidate some of the data passed to
3336 every callback and not used much into a struct.
3338 2009-07-15 Jeffrey Stedfast <fejj@novell.com>
3340 * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
3341 return NULL, so properly handle this error condition.
3342 (IndexFontFile): Same.
3343 (FontManager::OpenFontFace): Here too.
3344 (OpenSystemFont): Don't destroy the FcPattern until after opening
3345 the font (otherwise the filename will be free'd memory).
3347 * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
3348 get the brush used for rendering the blinking caret. This is a 3.0
3351 2009-07-15 Alan McGovern <amcgovern@novell.com>
3354 * control.cpp: Remove the Control::SetVisualParent override
3355 which ensures Control::IsEnabled is propagated correctly as
3356 this needs to be performed in UIElement::SetVisualParent.
3357 Set the subtreeobject before calling
3358 FrameworkElement::ElementAdded otherwise Control::IsEnabled
3359 cannot be propagated.
3362 * uielement.cpp: Whenever the visual parent is changed on a
3363 UIElement we need to propagate Control::IsEnabled changes
3364 down the tree. Allows drt 557 to get a lot further.
3366 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3368 * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
3370 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3372 * pipeline.cpp: When seeking, reset buffering progress to 0.
3374 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3376 * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
3377 (that we know of), so initialize DownloadProgress to 1.0.
3379 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3381 * mediaelement.cpp: Don't emit CurrentStateChanged after calling
3382 SetState, since SetState will also emit the event.
3384 2009-07-15 Alan McGovern <amcgovern@novell.com>
3386 * tabnavigationwalker.cpp: If a child node is disabled, there
3387 is no point in walking its children or attempting to tab to
3390 2009-07-15 Jackson Harper <jackson@ximian.com>
3392 * xaml.cpp: We don't want to auto import the SL namespaces when
3395 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
3397 * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
3399 * cbinding.cpp|h: Regenerated.
3401 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
3403 * bitmapimage.h|cpp: drop the downloader references, rely on
3404 Application::GetResource () for getting from resource AND downloading. The
3405 old downloader mechanism for v1 js callbacks.
3407 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
3409 * application.h|cpp: Application.GetResource () now try to get the resource
3410 from the managed callback, then fallback to downloading.
3412 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
3414 * utils.h|cpp: Cancellable class, passed as method argument, allows
3415 to abort an async action.
3417 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
3419 * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
3420 hook itself in and invalidate the cache
3422 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
3424 * tilesource.h|cpp: stub InvalidateTileLayer
3426 2009-07-15 Alan McGovern <amcgovern@novell.com>
3428 * control.cpp: Ensure that the control loses focus when it is
3429 disabled even if there are no other focusable controls. Also
3430 ensure the surface is not null before using it, fixes a
3433 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3435 * error.h: ErrorEventArg: Add accessors that can be pinvoked.
3437 * cbinding.cpp|h: Regenerated.
3439 2009-07-15 Alan McGovern <amcgovern@novell.com>
3441 * control.cpp: When the focused control is disabled, tab to
3442 the next suitable control.
3444 2009-07-15 Alan McGovern <amcgovern@novell.com>
3447 * runtime.cpp: Implement the default autofocusing behaviour
3448 which silverlight exhibits. Apparently if the root control
3449 is focused, silverlight will keep attempting to focus a
3450 child of that control until it succeeds. Once a child
3451 control is focused, the focus changed events are emitted
3452 immediately, ignoring the usual focusing rules. Fixes DRT
3455 2009-07-15 Alan McGovern <amcgovern@novell.com>
3457 * uielement.cpp: When clearing the Loaded flag on a UIElement,
3458 we should clear the flag on all visual children too.
3460 2009-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3462 * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
3464 2009-07-14 Larry Ewing <lewing@novell.com>
3466 * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
3467 bounds when the bg changes. Fixes 641
3469 2009-07-14 Larry Ewing <lewing@novell.com>
3471 * border.cpp (OnSubPropertyChanged): elements must listen to
3472 subproperty changes for brushes. Fixes 2020
3474 2009-07-14 Alan McGovern <amcgovern@novell.com>
3476 * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
3477 called on a Control with the 'Cycle' navigation mode and
3478 none of the children of that node can be tabbed to, then
3479 focus remains on that control.
3481 2009-07-13 Jeffrey Stedfast <fejj@novell.com>
3483 * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
3484 string array until after we've finished using the hash
3485 table. Prevents FMRs.
3487 2009-07-13 Jackson Harper <jackson@ximian.com>
3489 * xaml.cpp: Don't allow setting x:Name and Name on the same
3491 - Raise an error if we try to set a property to an incompatible
3494 2009-07-13 Alan McGovern <amcgovern@novell.com>
3497 * uielement.cpp: If the focused element is removed from the
3498 visual tree, it should lose focus.
3500 2009-07-13 Jackson Harper <jackson@ximian.com>
3502 * xaml.cpp: Oops, trying to get the element name from the wrong
3505 2009-07-13 Jackson Harper <jackson@ximian.com>
3507 * xaml.cpp: Handle MoonErrors for AddChild.
3509 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
3516 * mms-downloader.cpp: IMediaObject: make the media field
3517 private, and add thread-safe property accessors (using a
3518 mutex and always returning a reffed object). Update all code
3519 which accessed the old accessor to use the new accessor and
3520 unref the media when done.
3522 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
3524 * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
3528 * type-generated.cpp: Regenerated.
3530 2009-07-13 Alan McGovern <amcgovern@novell.com>
3532 * control.cpp: A control does not have to be loaded to be
3533 focusable, the visual tree it's attached to has to be
3536 2009-07-13 Alan McGovern <amcgovern@novell.com>
3540 * tabnavigationwalker.h: TabNavigation should activate if the
3541 control does not handle the Tab key
3543 2009-07-13 Alan McGovern <amcgovern@novell.com>
3550 * tabnavigationwalker.h:
3551 * tabnavigationwalker.cpp: Commit the initial implementation
3552 of the TabNavigationWalker. Supports the three tabbing modes
3553 and also forward/backward tabbing. Passes drt 323 except for
3554 a default focusing issue.
3556 2009-07-13 Alan McGovern <amcgovern@novell.com>
3558 * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
3561 2009-07-13 Jérémie Laval <jeremie.laval@gmail.com>
3563 * src/dependencyproperty.cpp: Added const modifier to local variables.
3564 Fix the build with recent gcc.
3566 2009-07-10 Chris Toshok <toshok@ximian.com>
3568 * value.h.in|cpp (Value::Clone): new method, clone the DO if the
3569 value contains one, and otherwise just copy the contents.
3571 * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
3572 this is probably wrong, as the mapping needs to reference cloned
3573 objects, not the same objects that existed in the original
3576 * collection.h|cpp (Collection::CloneCore): clone the collection
3579 * dependencyproperty.h|cpp (resolve_property_path): add a
3580 promoted_values hashtable argument. if the value has already been
3581 promoted, don't do it again. promote the first value we can while
3582 resolving the property path. Don't promote UIElement subclasses
3585 * dependencyobject.h|cpp: add api for cloning (deep copying) for
3586 DependencyObjects. DependencyObject::Clone is the public
3587 interface, with subclasses overriding ::CloneCore if they need to.
3589 * color.cpp (color_to_string): multiply by 255, not 256.
3591 * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
3592 takes a hashtable now so we don't promote values more than
3593 once (doing so causes previous animations to target objects that
3594 are no longer attached anywhere).
3596 * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
3598 2009-07-10 Larry Ewing <lewing@novell.com>
3600 * shape.cpp (MeasureOverride): start working towards fixing
3601 LayoutShapes with some tweaking here.
3602 (Clip): apply the framework clip to elements in the flow too.
3604 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
3606 * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
3608 (TextBoxBase::CursorPrevWord): Same.
3609 (TextBoxBase::KeyPressRight): If there is currently a selection
3610 and the user presses ArrowRight by itself, set the anchor and
3611 cursor at the end of the selection.
3612 (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
3615 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
3617 * textbox.cpp: Always set SelectionStart before
3618 SelectionLength. Fixes a bug when selecting backwards from the end
3621 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
3623 * mediaelement.cpp|h: Store the last seeked-to position so that we never
3624 return a value before that as the current Position. MS DRT #486 uses
3625 a MediaStreamSource which returns frames before the seeked to position
3626 after seeking, and the test checks that MediaElement's Position property
3627 never returns a value before the seeked to position.
3629 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
3631 * audio.cpp: When we stop, we need to discard any audio data we might
3634 2009-07-10 Sebastien Pouliot <sebastien at ximian.com>
3636 * runtime.cpp|h, type-generated.cpp: Rename
3637 SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
3639 2009-07-09 Jeffrey Stedfast <fejj@novell.com>
3643 * uri.cpp: Don't use a GData for params, instead use a custom
3644 linked-list. This makes it easier to compare param lists.
3645 (operator==): Compare params.
3647 * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
3650 2009-07-09 Jackson Harper <jackson@ximian.com>
3652 * dependencyobject.cpp|h: Add a little more logic for setting
3653 things to NULL and consolidate in it's own function (STRING can
3654 now be set to NULL).
3656 2009-07-09 Sebastien Pouliot <sebastien at ximian.com>
3658 * downloader.cpp|h: Don't check redirection AFTER downloading the
3659 data. Expose CheckRedirectionPolicy so the plugin can check for
3660 the redirection policy when creating a new stream.
3661 * uri.cpp|h: Add IsAbsolute method and make the return value of
3664 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3666 * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
3667 the root takes care of that. (Playlist): loop over all children and
3668 call StopAsync on them, this way all nested playlists are reset properly
3669 (PlaylistRoot): when done stopping, reopen us.
3671 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3673 * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
3675 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3677 * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
3679 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3681 * mediaelement.cpp: Don't go directly into a Buffering state, when
3682 MediaOpened is emitted we must be either in Paused or Playing state.
3684 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3686 * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
3688 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3690 * mediaelement.cpp|h: Emit CurrentState events asynchronously.
3692 2009-07-08 Larry Ewing <lewing@novell.com>
3694 * frameworkelement.cpp (Arrange): apply min/max values to the
3697 2009-07-08 Jeffrey Stedfast <fejj@novell.com>
3699 * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
3700 at opening the requested system font. First, try using the font
3701 name exactly as the user gave it to us. If that fails, fallback to
3702 canonicalizing it and the style values.
3703 (style_diff): Modify the algorithm used to compare the style
3704 difference between 2 fonts.
3706 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
3709 * mediaelement.h: Add validators for Balance and Volume.
3710 This fixes MS DRT #960.
3712 * value.cpp|in: Add support for changing a value.
3715 * dependencyproperty.g.cpp: Regenerated.
3717 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3719 * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
3720 some casing changes with media attributes. PlayNext: fix logic, after
3721 finishing a nested playlist we must play the next entry in our playlist,
3722 not finish right away. If the pipeline raises a MediaError event due to
3723 missing a codec (which is most likely due to an unsupported media file),
3724 don't propagate the error, just play the next entry. Fix a lot of error
3725 code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
3726 as 99.6% of our playlist tests.
3728 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3731 * playlist.h|cpp: Unify playlist detection into one place and add
3732 support for skipping initial whitespace in the file.
3734 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3736 * playlist.cpp|h: String setters: be consistent: take a const string
3737 and dup inside the setter if required, instead of always when calling
3738 the setter, which may leak.
3740 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3742 * playlist.cpp: OnASXStartElement: null initialize to avoid reading
3745 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3747 * playlist.cpp: Cleanup: cleanup properly since we may continue to live
3748 after this method has been called.
3750 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3752 * playlist.cpp: PlaylistEntry: needs to ref/unref the source.
3754 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3757 * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
3758 the parsing fails, propagate the args up in the pipeline.
3760 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3762 * mediaelement.cpp: We need to populate media attributes before raising
3765 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3767 * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
3768 has changed at least a tiny bit.
3770 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3772 * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
3774 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3776 * mediaelement.cpp: Properly set CanPause and CanSeek, and always use
3777 mediaplayer's duration as NaturalDuration.
3779 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3781 * mediaplayer.cpp: All starting points seem to be allowed now, so don't
3782 throw an error event for starting point > duration anymore. Also duration
3783 is always the entire length of the media, regardless of when we start and
3784 how long we're supposed to play.
3786 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3788 * error.cpp|h: Add custom information to ErrorEventArgs, to provide
3789 better Moonlight debugging and in some cases we need more information
3790 than what MS reports.
3792 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
3794 * media.cpp: MediaAttributes are case-insensitive.
3796 2009-07-07 Jeffrey Stedfast <fejj@novell.com>
3798 * fontmanager.cpp (canon_font_family_and_style): New convenience
3799 function to canonicalize font family & style info, split out of
3801 (IndexMatchFace): Use the new function.
3803 2009-07-07 Jackson Harper <jackson@ximian.com>
3805 * style.h: Need an internal setter for IsSealed so we can do the
3806 parser seal/unseal hack.
3808 2009-07-07 Sebastien Pouliot <sebastien@ximian.com>
3810 * downloader.cpp|h: Add a new FontPolicy since it differs from
3811 XamlPolicy (which is otherwise *unused*) and fix policies wrt
3812 http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
3813 * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
3816 2009-07-07 Alan McGovern <amcgovern@novell.com>
3818 * namescope.cpp: Once a namescope is locked, don't allow names
3819 to be registered or unregistered. Fixes the case where the
3820 name is changed on a template item.
3822 2009-07-07 Alan McGovern <amcgovern@novell.com>
3826 * template.cpp: When expanding a template, mark all the
3827 children as TemplateItems so they will be able to look up
3828 the correct namescope.
3832 * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
3835 * dependencyobject.h:
3836 * dependencyobject.cpp: Add extra overloads to FindName and
3837 FindNameScope so that we can tell whether we are looking up
3838 a template name or regular name.
3841 * namescope.cpp: Add the ability to lock a namescope so it
3842 can be recognised as a template namescope.
3844 2009-07-07 Jackson Harper <jackson@ximian.com>
3846 * xaml.cpp: Lookup properties on the owner type so attached
3847 properties get looked up properly when setting them via text ie
3848 <Canvas.Left>5</Canvas.Left>
3850 2009-07-06 Jackson Harper <jackson@ximian.com>
3852 * xaml.cpp: Ignored elements should buffer their contents
3853 - Add in Ignored attributes
3855 2009-07-06 Jackson Harper <jackson@ximian.com>
3857 * xaml.cpp: Implement ignorable namespaces.
3859 2009-07-06 Larry Ewing <lewing@novell.com>
3861 * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
3863 2009-07-06 Stephane Delcroix <sdelcroix@novell.com>
3865 * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
3866 so ZoomAbout *= the target's value for zoom, not the current one.
3868 2009-07-06 Jeffrey Stedfast <fejj@novell.com>
3872 * fonts.cpp (LoadPortableUserInterface): Return the index of the
3874 (TextFont::Load): If PUI is our first family, keep track of which
3875 face the Lucida face is and use that as our master. Otherwise use
3877 (TextFont::UpdateFaceExtents): Use the 'master' face to get the
3878 extents from, rather than the first face.
3880 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
3882 * playlist.cpp: PlayNext: play even if previous entry didn't fail.
3883 Fixes our test #136.
3885 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
3887 * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
3888 playlist format so we'll never get it, it'll be parsed on the
3891 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
3893 * mediaelement.cpp: Fix warning.
3895 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
3899 2009-07-03 Larry Ewing <lewing@novell.com>
3901 * textblock.cpp (ArrangeOverride): try to get textblock height
3902 stretching closer. See 295 and 2020 for examples.
3904 2009-07-03 Alan McGovern <amcgovern@novell.com>
3906 * runtime.cpp: We don't need to change these actually.
3908 2009-07-03 Alan McGovern <amcgovern@novell.com>
3910 * runtime.cpp: When inside the if statement, we know that
3911 toplevel and element are the same, so use 'element' instead
3912 of 'toplevel' in case the toplevel is removed during the
3913 loaded/resized event. Fixes memorabilia.
3915 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
3917 * mms-downloader.cpp: ProcessResponseHeaderCallback:
3918 set current deployment.
3920 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3922 * pipeline-asf.cpp|h:
3923 * mms-downloader.cpp|h: If downloading the mms url
3924 doesn't succeed, raise an error. Fixes MS DRT #222
3927 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3930 * mediaelement.cpp: When playing an mms stream, SL sets
3931 DownloadProgress to 1.0 after downloading the header.
3932 Makes MS DRT #222 reach a bit further.
3934 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3936 * pipeline.cpp: Fix printf.
3938 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3940 * mediaelement.cpp: Handle DownloadProgressChanged events
3943 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3945 * downloader.cpp|h: Add another downloader API
3946 method, this time to get the DownloaderResponse.
3948 * cbinding.cpp|h: Regenerated.
3950 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
3952 * multiscaleimage.h: instruct the generator to do more for us.
3954 2009-07-02 Chris Toshok <toshok@ximian.com>
3956 * propertypath.h: fix operator== and add operator!=.
3958 * validators.h|cpp: add StoryboardTargetPropertyValidator.
3960 * dependencyproperty.g.cpp: regen.
3962 * animation.h (class Storyboard): use a special validator for
3963 TargetPropertyProperty such that it follows the semantics laid out
3964 in StoryboardTest.SetTargetPropertyTwice*.
3966 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
3968 * mediaelement.cpp: Protect against emitting BufferingProgressChanged
3969 when the actual value hasn't changed.
3971 * pipeline.cpp: FillBuffers: don't report any buffering progress
3972 if we don't have any media streams.
3974 2009-07-02 Jeffrey Stedfast <fejj@novell.com>
3976 * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
3977 argument which is used for loading the preferred default font (by
3978 language) first, before the other fallback fonts.
3979 (TextFont::Load): Pass in the 'lang' argument.
3980 (TextFontDescription): Added methods to get/set a Language
3983 * textblock.cpp (Inline::UpdateFontDescription): Set the language
3984 on the TextFontDescription.
3985 (TextBlock::OnPropertyChanged): If the
3986 FrameworkElement::LanguageProperty changes, reload the fonts and
3989 2009-07-02 Jackson Harper <jackson@ximian.com>
3991 * xaml.cpp: Fix error code so it gets propogated up when
3992 validating templates.
3994 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
3996 * runtime.cpp: Fix printf.
3998 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
4000 * multiscaleimage.h|cpp: handle the various motion finished separately
4001 and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
4002 animations are completed.
4004 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
4006 * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
4007 use a custom property provider so getting vp origin or width returns
4008 the current value, while setting them sets the animation's targets.
4010 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4012 * pipeline.cpp: FillBuffers: Only take into
4013 account media streams when trying to determine
4014 if all streams have reached its end. Fixes our test
4017 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4019 * mediaelement.cpp: Reinvalidate everything when
4020 clearing a source. Fixes MS DRT #45 (after setting
4021 the source to an empty string, the media element
4022 shouldn't render anything anymore).
4024 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4026 * pipeline.cpp: FillBuffers: Take into account that
4027 decoders may call SetOutputEnded once SetInputEnded
4028 is called, and update the number of ended streams
4029 immediately. Fixes our test #111.
4031 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4034 * playlist.cpp: Make debug output more descriptive.
4036 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4038 * pipeline-asf.cpp|h: Reimplement support for mms seeking.
4040 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4042 * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
4045 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4047 * mp3.cpp: Fix parsing of xing vbr headers causing wrong
4048 duration to get calculated of the file.
4050 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4052 * mp3.cpp: FindMpegHeader: fix return value: the offset of
4053 the header goes into the result output variable and we return
4054 success instead of returning a bogus error value.
4056 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4058 * pipeline.cpp: If we couldn't select a demuxer because of
4059 not having enough data yet, try again later.
4061 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4063 * mediaelement.cpp: If Source (or UriSource) is either null
4064 or an empty string, we're only supposed to clean up, not
4065 trying to play the null/empty string.
4067 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4069 * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
4070 to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
4071 all streams have finished their output, set buffering progress
4074 * playlist.cpp: Properly forward progress event args.
4076 * mediaelement.cpp: Set buffering progress when it changes,
4077 and raise BufferingProgressChanged. Don't try to autoplay
4078 when buffering progress is < 1.0, wait until it reaches 1.0.
4080 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4082 * audio-pulse.cpp: Fix warning.
4084 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4086 * audio-alsa.cpp: WriteMmap: If we try to write with an audio
4087 source which has ended, call Underflowed, since that's what's
4090 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4092 * audio-alsa.cpp: If hw setup failed, dump current hw parameters
4093 to stdout (if debug mode is enabled).
4095 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4097 * mms-downloader.cpp: Do better initialization and cleanup of
4098 downloader and state variables to prevent issues when seeking.
4100 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4102 * mms-downloader.cpp: Write: Don't use math when not necessary to
4103 avoid overflows, and if we end up freeing the buffer set the size
4106 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4108 * mms-downloader.cpp: Use thread-safe tick call from media thread.
4110 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4112 * mms-downloader.cpp: Don't leak the uri.
4114 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4116 * downloader.h: Make OpenInitialize public so that the
4117 MmsDownloader can reinitialize it when sending new requests.
4119 2009-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
4121 * audio.cpp: Play 24 bit audio unconditionally.
4123 2009-07-01 Chris Toshok <toshok@ximian.com>
4125 * Makefile.am (INCLUDES): turns out we need to include ../plugin
4126 here to deal with type-generated/type.h/etc.
4128 * type.h.in: fix annoying indent problem.
4130 * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
4131 value.h, type.h: regen
4133 2009-07-01 Larry Ewing <lewing@novell.com>
4135 * textblock.cpp (ArrangeOverride): take alignment into account
4136 when computing our size.
4138 2009-07-01 Jeffrey Stedfast <fejj@novell.com>
4140 * textblock.cpp (ArrangeOverride): Set the available width on the
4141 layout so that it can properly align the text for center/right
4144 2009-07-01 Jackson Harper <jackson@ximian.com>
4146 * xaml.cpp: Need to set the binding source when we are validating
4149 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4151 * mediaelement.cpp: SetMarkerTimeout: when unreffing self
4152 use a delayed timeout, since we can be the last ref, this
4153 ensures the stack is unwound first.
4155 2009-06-30 Larry Ewing <lewing@novell.com>
4157 * border.cpp (Render): get CornerRound rendering closer to the sl
4160 2009-06-30 Chris Toshok <toshok@ximian.com>
4162 * clock.h|cpp: Seeking doesn't start the clock. And we have to
4163 support UpdateFromParentTime even while paused, since we can seek
4164 while paused. Fixes 392 (along with actually fixing the test..)
4166 2009-06-30 Chris Toshok <toshok@ximian.com>
4168 * clock.h|cpp: fix Seek and SeekAlignedToLastTick. fixed DRT
4171 2009-06-30 Jeffrey Stedfast <fejj@novell.com>
4173 * fontmanager.cpp (style_diff): Improved a bit so that we never
4174 return G_MAXINT if any font by the same name is found, no matter
4175 what style differences there are.
4177 2009-06-30 Jackson Harper <jackson@ximian.com>
4179 * deepzoomimagetilesource.cpp: Parsers need to be freed.
4181 2009-06-30 Alan McGovern <amcgovern@novell.com>
4183 * popup.cpp: According to the docs, a popup which is GC'ed
4184 should be closed. Ensure that this happens.
4186 2009-06-30 Alan McGovern <amcgovern@novell.com>
4188 * popup.cpp: If the child is set after the popup is opened,
4189 make sure it is shown. Ensure that we now only emit the
4190 Opened/Closed events when the popup IsOpen state changes.
4191 Allows 503 to progress further.
4193 2009-06-30 Jackson Harper <jackson@ximian.com>
4195 * xaml.cpp|h: Add a flag for template validation
4196 - Implement template validation and propogate errors up
4197 * cbinding.cpp: regen
4199 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
4201 * multiscaleimage.cpp: drop a debug block that was misinterpreted by
4202 the preprocessor. fir x drt 265.
4204 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
4206 * multiscaleimage.cpp: download the first num_dl (6) levels while the
4209 2009-06-29 Alan McGovern <amcgovern@novell.com>
4211 * control.cpp: Unregress drt 911, EnabledChanged events fire
4212 at the correct time again.
4214 2009-06-29 Jeffrey Stedfast <fejj@novell.com>
4216 * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
4217 of the GlyphMetrics fields.
4219 * layout.cpp: Updated to keep track of the previous GlyphInfo
4220 rather than the previous GlyphInfo's index.
4222 * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
4223 (TextFont::Kerning): Modified to take GlyphInfo arguments rather
4224 than face indexes since they are worthless w/o knowing which font
4225 face the indexes of each are for.
4227 2009-06-29 Alan McGovern <amcgovern@novell.com>
4229 * control.cpp: Propagate the IsEnabled changes down the visual
4230 tree in OnPropertyChanged, not in SetValue.
4232 2009-06-29 Jackson Harper <jackson@ximian.com>
4234 * xaml.cpp: Store enums as INTs.
4236 2009-06-28 Chris Toshok <toshok@ximian.com>
4238 * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
4239 Clock::Active) to (state != Clock::Stopped) to tell whether or not
4240 we've started (since we can start directly in the filling state.)
4242 Also remove all the idle_hint stuff, since it's no longer used.
4244 * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
4245 why this method is needed at all, but at the very lease we need to
4246 stop calling ClockGroup::UpdateFromParentTime, since this method
4247 very nearly duplicates that one (and we're therefore looping over
4248 the child clocks twice).
4250 2009-06-28 Chris Toshok <toshok@ximian.com>
4252 * color.cpp (named_colors): update these so that text-colors.xaml
4255 2009-06-28 Larry Ewing <lewing@novell.com>
4257 * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
4259 2009-06-27 Jeffrey Stedfast <fejj@novell.com>
4261 * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
4262 changes, the layout *always* gets dirty. We also always need to
4265 * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
4266 calculate/update the font extents. Only use the extents of the
4267 first face - this fixes a bunch of MS DRTs.
4268 (TextFont::.ctor): Call UpdateFaceExtents().
4269 (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
4270 a number of regressions (like MS DRT #43).
4272 2009-06-27 Chris Toshok <toshok@ximian.com>
4274 * grid.cpp (Grid::OnCollectionItemChanged): don't
4275 InvalidateMeasure() when the grid's actualwidth or row's
4276 actualheight is set. this gets us into an infinite loop.
4278 2009-06-26 Chris Toshok <toshok@ximian.com>
4280 * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
4281 (initialize_enums): and add it to the hashtable.
4283 * grid.h|cpp: make ColumnDefinition.ActualWidth and
4284 RowDefinition.ActualHeight dependencyproperties to make the plugin
4285 binding easier. get rid of each class's "actual" field.
4287 2009-06-25 Chris Toshok <toshok@ximian.com>
4289 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4290 object we're looking the event up on, and a flag as to whether or
4291 not to allow desktop-specific events. and just look up the event
4292 from the type system instead of having the hardcoded list.
4294 2009-06-25 Chris Toshok <toshok@ximian.com>
4296 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4297 object we're looking the event up on, and a flag as to whether or
4298 not to allow desktop-specific events. and just look up the event
4299 from the type system instead of having the hardcoded list.
4301 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
4303 * fonts.cpp (LoadPortableUserInterface): Only set that we've
4304 loaded PUI, not each individual fallback face. The other faces may
4305 match user-specified faces, but there may also be a font source
4306 that it is loading them from (which may differ from the locally
4309 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
4311 * runtime.cpp: Don't need to call font_init() or font_shutdown()
4314 * deployment.cpp: Create a new FontManager per Deployment and
4315 provide an access method to get at it.
4317 * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
4320 * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
4321 inheritance, these no longer exist.
4323 * fonts.cpp|h: New source files with the higher-level abstraction
4324 for font loading, glyph manipulation, etc.
4326 * fontmanager.cpp|h: New source files containing a FontManager
4327 class which handles caching of font faces and indexing of font
4328 resources. Serves as platform-dependent font loading layer.
4330 * font.cpp|h: Removed.
4332 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
4334 * uri.cpp (ToString): Respct the UriHideQuery flag.
4336 2009-06-26 Larry Ewing <lewing@novell.com>
4338 * border.h: change the default value.
4340 * cornerradius.h: reorder the bottom* arguments.
4342 2009-06-26 Alan McGovern <amcgovern@novell.com>
4345 * popup.cpp: Handle popup hittesting when its closed in a way
4348 2009-06-26 Alan McGovern <amcgovern@novell.com>
4350 * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
4351 IsOpen state so that hittesting works correctly.
4353 2009-06-25 Chris Toshok <toshok@ximian.com>
4355 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
4356 object we're looking the event up on, and a flag as to whether or
4357 not to allow desktop-specific events. and just look up the event
4358 from the type system instead of having the hardcoded list.
4360 2009-06-25 Larry Ewing <lewing@novell.com>
4362 * grid.cpp, grid.h (PostRender): move the grid lines from Render to
4363 PostRender so that the lines are on top of the children (which
4364 appears to be the sl behavior). Fixes at least 317 and 446.
4366 2009-06-25 Sebastien Pouliot <sebastien@ximian.com>
4368 * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
4369 Fix two unnumbered DRT tests.
4371 2009-06-25 Chris Toshok <toshok@ximian.com>
4373 * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
4374 generate ArgumentExceptions here if start/length are out of range.
4375 This could, in the future, be entirely handled by the setter
4376 methods but for now we don't pass a MoonError to them.
4378 * xaml.h|cpp (xaml_set_property_from_str): this method takes an
4379 additional MoonError parameter so we can communicate back if there
4380 was a problem. Also, call SetValueWithError.
4382 * cbinding.h|cpp: regen.
4384 2009-06-25 Chris Toshok <toshok@ximian.com>
4386 * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
4387 can tell in AddedToCollection and RemovedFromCollection if we got
4388 there from using ResourceDictionary's string-based api or
4389 Collection's object-based api. Take care of adding/removing the
4390 key for the object in those methods if we didn't come from the RD
4393 * type.cpp (Type): quiet valgrind down by using "delete []"
4394 instead of "delete" to free up the interfaces array.
4396 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4398 * mediaplayer.cpp: Improve debug output.
4400 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4402 * pipeline.h: Added a ProgressEventArgs class.
4406 * type-generated.cpp: Regenerated.
4408 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4410 * audio.cpp|h: Add support for having different input (from the
4411 codec) and output (to the device) formats. This is required for
4412 pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
4413 bit. Also add support for multi channel audio.
4416 * audio-pulse.cpp: Add support for multi channel and 24 bit audio
4417 and update according to audio API changes.
4419 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4421 * audio-alsa.cpp: Fix debug output by not duplicating declarations.
4423 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4425 * audio.cpp|h: Add support for dumping raw audio data to a file.
4427 2009-06-25 Alan McGovern <amcgovern@novell.com>
4429 * dependencyproperty.g.cpp: Regen
4431 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
4435 * file-downloader.h:
4436 * internal-downloader.h: Add a SetFilename abstract method to
4437 InternalDownloader, provide implementations in FileDownloader
4438 and MmsDownloader and call the abstract method in the downloader
4439 instead of blindly casting an InternalDownloader to a FileDownloader
4440 when it might be an MmsDownloader.
4442 2009-06-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
4444 * pipeline.cpp|h: AudioStream: add possibility of having different
4445 input and output formats.
4447 * cbinding.cpp|h: Regenerated.
4449 2009-06-24 Chris Toshok <toshok@ximian.com>
4451 * xaml.cpp (matrix_from_str): handle "Identity" here.
4452 (value_from_str_with_parser): you can also create TransformGroups
4453 directly using the matrix syntax. Also, add support for parsing
4454 FontWeight/FontStyle/FontWeight structs here since we can't just
4455 rely on the enum_* stuff alone to do it.
4457 * value.h.in, value.cpp: add support for
4458 FontWeight/FontStyle/FontWeight structs.
4460 * textblock.cpp (Inline::UpdateFontDescription): track the
4462 (TextBlock::Layout): same.
4464 * textbox.cpp (TextBoxBase::Initialize): same.
4465 (TextBoxBase::OnPropertyChanged): same.
4467 * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
4468 structs now for these.
4470 * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
4471 struct types for properties instead of our internal enums.
4473 * Makefile.am (libmoon_include_headers): add fontstretch.h
4474 fontstyle.h, and fontweight.h
4476 * type-generated.cpp: regen.
4478 * cbinding.h|cppp: regen.
4480 * dependencyproperty.g.cpp: regen.
4484 2009-06-24 Larry Ewing <lewing@novell.com>
4486 * panel.cpp (Render): add layout clipping to panel rendering.
4488 2009-06-24 Larry Ewing <lewing@novell.com>
4490 * grid.h: stop drawing the gridlines by default. See comment for
4493 2009-06-24 Alan McGovern <amcgovern@novell.com>
4496 * runtime.cpp: Focus changed events should be emitted at the
4497 start and end of any user initiated event.
4498 can_raise_focus_changed is no longer necessary.
4500 2009-06-23 Larry Ewing <lewing@novell.com>
4502 * frameworkelement.cpp (UpdateLayout): reorder the way we process
4503 the lyout queues. Fixes ms 409.
4505 2009-06-23 Jackson Harper <jackson@ximian.com>
4507 * xaml.cpp: Handle empty buffers
4509 2009-06-23 Jackson Harper <jackson@ximian.com>
4511 * xaml.cpp: ContentControl can not have string content set this
4512 way, if the content object is a string it needs to be set with
4515 2009-06-23 Jackson Harper <jackson@ximian.com>
4517 * xaml.cpp: Another stab at not skipping empty attributes. Fixed
4518 all the unit test regression this caused last night.
4520 2009-06-23 Alan McGovern <amcgovern@novell.com>
4522 * grid.cpp: A dash length of 4 seems to be more correct.
4524 2009-06-23 Alan McGovern <amcgovern@novell.com>
4527 * grid.cpp: Implement Grid.ShowGridlines
4529 2009-06-22 Jackson Harper <jackson@ximian.com>
4531 * xaml.cpp: Pass the full prop name to managed
4532 - If managed fails to set the property, delete it so unmanaged can
4535 2009-06-22 Larry Ewing <lewing@novell.com>
4537 * provider.cpp: make UIElement::UseLayoutRounding inherited, this
4538 doesn't make it pass 2019 but it does a lot more.
4540 * shape.cpp: mirror the silverlight logic for canvas children with
4541 only one of w/h set. Fixes ms test 23.
4543 2009-06-18 Larry Ewing <lewing@novell.com>
4545 * shape.cpp: try to get the shape flags right once again trap
4546 explicit small values properly. Add Clipping logic to clip shapes
4547 to the fe values when explicitly set.
4549 * frameworkelement.cpp: look at stretch even when we have no
4552 2009-06-19 Jackson Harper <jackson@ximian.com>
4554 * xaml.cpp|h: We now have a managed version of AddChild so remove
4555 all the AddToContainer junk and use the managed AddChild instead.
4556 - Add MoonError to all the callbacks. Not handling the errors yet,
4557 but at least they are there now.
4559 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
4561 * xaml.cpp: Add comment about absolute/relative paths
4564 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
4566 * multiscaleimage.cpp: When an image has been opened,
4567 invalidate everything.
4569 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
4571 * multiscaleimage.cpp|h: Emit MotionFinished after
4572 SetViewportWidth/SetViewportOrigin has been called.
4574 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
4576 * multiscaleimage.cpp|h:
4577 * deepzoomimagetilesource.cpp|h: Raise error events.
4579 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
4581 * multiscaleimage.cpp|h: Add support for methods exposed to JS.
4583 * cbinding.h: Regenerated.
4585 2009-06-18 Sebastien Pouliot <sebastien@ximian.com>
4587 * textblock.cpp: Avoid crash when using FontSource
4589 2009-06-18 Alan McGovern <amcgovern@novell.com>
4593 * control.cpp: When the visual parent changes on a Control, it
4594 needs to search up the visual tree to find out the Enabled
4595 state of the first Control it finds. When raising the
4596 IsEnabledChanged events, the control must emit its event
4597 before controls in its subtree emit their events. Fixes drt
4600 2009-06-17 Jeffrey Stedfast <fejj@novell.com>
4602 * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
4603 for single-line entry controls (e.g. PasswordBox), don't allow
4606 2009-06-17 Alan McGovern <amcgovern@novell.com>
4608 * uielement.cpp: Changing UIElement::Visibility should also
4609 invalidate the parents measure. This allows DRT 2050 to
4610 complete without timing out.
4612 2009-06-17 Alan McGovern <amcgovern@novell.com>
4614 * uielement.cpp: Changing UIElement.Visibility should result
4615 in the measure being invalidated.
4617 2009-06-17 Alan McGovern <amcgovern@novell.com>
4619 * font.cpp: When the font cache is destroyed, set it to NULL
4620 so that if a Font is destroyed later it does not try to
4622 Null check the the FontFace cache before using it.
4623 If the FT_Face stream is null already, don't try to destroy
4626 2009-06-17 Alan McGovern <amcgovern@novell.com>
4628 * runtime.cpp: A subset of keypresses are allowed to bubble up
4629 when in fullscreen mode. Fixes drt 175.
4631 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4633 * uri.cpp: Add a null check to prevent a crash.
4635 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4637 * uri.cpp: Flag a lot more characters as url unsafe, and
4638 fix printf specifiers for url encoded characters to not
4639 include extra 'ff' sequences for every encoded character.
4641 This fixes parts of MS DRT #641.
4643 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4645 * downloader.cpp|h: Add an Open overload which takes an Uri
4646 instead of a string.
4648 * deepzoomimagetilesource.cpp:
4649 * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
4651 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4653 * playlist.cpp: When we stop, emit the StopEvent.
4655 * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
4657 2009-06-16 Chris Toshok <toshok@ximian.com>
4659 * xaml.cpp (XamlElementInfoStaticResource,
4660 XamlElementInstanceStaticResource): remove these classes.
4661 (begin_buffering_element_names): remove this unused variable.
4662 (XamlParserInfo::LookupNamedResource): remove.
4663 (DefaultNamespace::FindElement): remove the
4664 XamlElementInfoStaticResource case, and just let the managed
4665 loader create the StaticResource element itself.
4666 (is_static_resource_element): remove.
4667 (XamlElementInstanceNative::SetProperty): defer to the loader if
4668 either the property or the value RequiresManagedSet.
4669 (dependency_object_set_property): defer to the loader if the value
4671 (dependency_object_set_attributes): remove all processing of
4672 markup extensions from unmanaged code.
4673 (xaml_markup_parse_argument): remove.
4674 (xaml_markup_extension_type): remove.
4675 (handle_markup_in_managed): remove.
4676 (handle_xaml_markup_extension): remove.
4678 * panel.h|cpp (Panel::Panel): just set our subtree object here.
4679 (Panel::GetSubtreeObject): remove.
4681 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
4682 don't notify listeners when creating an auto-created value.
4684 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
4685 only call the property's change callback if we're notifying
4688 2009-06-17 Andreia Gaita <avidigal@novell.com>
4690 * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
4692 2009-06-17 Andreia Gaita <avidigal@novell.com>
4694 * xaml.cpp: fix typo
4696 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4698 * pipeline.cpp: Remove spurious printfs.
4700 2009-06-16 Andreia Gaita <avidigal@novell.com>
4702 * deployment.[h|cpp]: Try to dispose types only if there are no
4703 objects pending destruction. If there are, dispose only after
4704 they are all cleared (on DrainUnrefs). This makes sure no properties
4705 are destroyed while objects are still pending.
4706 Added isDead flag, used when doing object tracking to protect against
4707 trying to access type fields when the types have been destroyed
4708 already (when doing ref logging and the final leak report).
4709 Type destruction is slightly delayed when doing object tracking
4710 to allow for the report (otherwise we wouldn't have any type names
4711 on it, and that would be sad)
4713 * type.cpp: fake-clear the properties list by setting it's count to 0
4714 so access by id fails (in case someone wants to access the property
4715 while we're disposing everything).
4716 Delete all the registered types and kill the properties list when
4717 destroying. By this point all properties and objects should be
4719 * type.h.in: added dispose flag.
4720 * type.h: regenerated
4722 2009-06-16 Andreia Gaita <avidigal@novell.com>
4724 * uielement.cpp: release all refs on dispose
4726 2009-06-16 Andreia Gaita <avidigal@novell.com>
4728 * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
4730 2009-06-16 Jeffrey Stedfast <fejj@novell.com>
4732 * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
4734 2009-06-16 Larry Ewing <lewing@novell.com>
4736 * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
4737 when properties change in preparation for fixing the autocreated
4738 property notification stuff
4740 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4742 * multiscaleimage.cpp: Add a call to print_stack_trace, looks
4743 like abort () doesn't cause a stack trace.
4745 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4747 * mediaplayer.cpp: Remove circular dependency between MediaPlayer
4748 and MediaElement, clear out the element in Dispose and add a null
4749 check before accessing the element. Fixes crash in MS DRT #238.
4751 2009-06-15 Andreia Gaita <avidigal@novell.com>
4753 * frameworkelement.cpp: delete UIElement nodes when we're done
4756 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
4758 * textblock.cpp (SetTextInternal): Get rid of some duplicated
4761 2009-06-15 Alan McGovern <amcgovern@novell.com>
4764 * frameworkelement.h:
4765 * frameworkelement.cpp: Give an initial implementation of
4766 FindElementInHostCoordinates (UIElement, Rect) which treats
4767 the rect as a series of points and checks each one until a
4768 hit is found. Allows drt 280 to
4770 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
4772 * dependencyobject.cpp (Initialize): Initialize is_hydrated to
4775 2009-06-15 Andreia Gaita <avidigal@novell.com>
4777 * type.[h|cpp]: Dispose method added, to help separate between clearing
4778 all the DPs and actually deleting the types. For now, just clears the
4779 DPs and doesn't touch the type list.
4780 * deployment.cpp: (Dispose) types are disposed here, for now.
4782 2009-06-15 Andreia Gaita <avidigal@novell.com>
4784 * dependencyproperty.g.cpp: regenerated
4786 2009-06-15 Jackson Harper <jackson@ximian.com>
4788 * xaml.cpp: Reorder errors.
4790 2009-06-15 Andreia Gaita <avidigal@novell.com>
4792 * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
4793 inside SetParts, and since we don't store it anywhere else, drop a
4796 2009-06-15 Andreia Gaita <avidigal@novell.com>
4798 * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
4799 it removes itself from the property list and gets deleted as soon as
4800 possible, otherwise it will not only leak, but blow up once we start
4802 Floating status is gone.
4804 2009-06-15 Andreia Gaita <avidigal@novell.com>
4806 * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
4807 and some extra debugging output for refcounting.
4810 2009-06-15 Alan McGovern <amcgovern@novell.com>
4812 * frameworkelement.cpp: Objects can be hit as long as their
4813 height as greater than zero and the point is in the fill or
4816 2009-06-15 Alan McGovern <amcgovern@novell.com>
4818 * frameworkelement.cpp: Back that change out as it causes some
4819 regressions in the moon-unit tests.
4821 2009-06-15 Alan McGovern <amcgovern@novell.com>
4823 * frameworkelement.cpp: We can hit an element in both stroke
4826 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4828 * playlist.cpp|h: When a media reports that it has been opened
4829 successfully, check if we're the current element, and if not,
4830 don't to anything more until we are the current element. This
4831 fixes an issue with server side playlists where they would
4832 only play the first entry.
4834 * pipeline.cpp|h: Move code out of header.
4836 * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
4839 2009-06-15 Alan McGovern <amcgovern@novell.com>
4841 * frameworkelement.cpp: We're hittesting the clip, we use
4842 user-space coordinates, so apply the identity matrix to get
4845 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4847 * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
4849 * cbinding.cpp|h: Regenerated.
4851 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4853 * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
4854 to the enum->str conversion table.
4856 2009-06-15 Alan McGovern <amcgovern@novell.com>
4858 * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
4859 it's attached to otherwise it can access the element after
4860 the element has been destroyed. Stops 238 crashing.
4862 2009-06-14 Andreia Gaita <avidigal@novell.com>
4864 * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since
4865 there are certain refcounted objects that aren't child classes of
4867 Wrap null objects but don't try to unref them.
4870 2009-06-14 Andreia Gaita <avidigal@novell.com>
4872 * debug.[h|cpp]: add max frame arg for finer control when getting
4875 2009-06-12 Jackson Harper <jackson@ximian.com>
4877 * xaml.cpp|h: import_xmlns now validates the namespace so we can
4878 raise an error if it is invalid.
4880 2009-06-12 Jackson Harper <jackson@ximian.com>
4882 * xaml.cpp: Don't allow dtds.
4884 2009-06-12 Jackson Harper <jackson@ximian.com>
4886 * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
4888 2009-06-12 Jackson Harper <jackson@ximian.com>
4890 * xaml.cpp: Use the value attribute parsing for enum types, this
4891 allows them to have x:Key and x:Name attributes.
4893 2009-06-12 Sebastien Pouliot <sebastien@ximian.com>
4895 * dependencyproperty.g.cpp: Regenerated
4896 * deployment.h: Update ExternalCallersFromCrossDomainProperty
4897 generator-related properties and add unmanaged accessors
4898 * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
4899 dropped after SL2 beta2
4900 * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
4901 * validators.cpp|h: Add new CrossDomainValidator that ensure we
4902 can set only once Deployment::ExternalCallersFromCrossDomainProperty
4904 2009-06-11 Jackson Harper <jackson@ximian.com>
4906 * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
4907 - Don't try to set managed properties in
4908 dependency_object_add_child.
4909 - Make sure we only create managed property elements for managed
4910 items, even if they are DOBs, otherwise UserControl.Resources gets
4911 a native property info.
4913 2009-06-11 Alan McGovern <amcgovern@novell.com>
4916 * runtime.cpp: The uielements involved in GotFocus/LostFocus
4917 events need to be stored in a queue so that focusing
4918 multiple elements in one tick works correctly.
4920 2009-06-11 Alan McGovern <amcgovern@novell.com>
4924 * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
4926 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
4928 * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
4930 * security.c: Fix signed/unsigned mismatch warning.
4932 * error.cpp: Fix warning about not initialize in correct order.
4934 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
4936 * pipeline.cpp: Fix warning/typo in printf.
4938 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
4940 * pipeline.cpp: MarkerStream: if there is no callback, store
4941 the markers in a list instead of just dropping them. Fixes an
4942 issue with our #150 where we'd lose markers since the stream
4943 had processed them before getting a callback.
4945 * mediaelement.cpp: Check if a marker stream has stored markers
4946 (which would have been added before the calback was set).
4948 2009-06-10 Larry Ewing <lewing@novell.com>
4950 * frameworkelement.cpp (Arrange): measure containers if they
4951 haven't been at least for now.
4953 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
4955 * mediaelement.cpp: When we get a stream as the source, set download
4956 progress immediately to 1.0. Also emit DownloadProgressChanged just
4957 after opening the file (to ensure that we emit DownloadProgressChanged
4958 at least once). This makes MS DRT #420 not time out.
4960 2009-06-10 Larry Ewing <lewing@novell.com>
4962 * frameworkelement.cpp (UpdateLayout): if we find a unloaded
4963 element while walking the tree emit loaded on it now.
4965 2009-06-10 Larry Ewing <lewing@novell.com>
4967 * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
4968 place it was supposed to be emitted.
4970 2009-06-10 Jeffrey Stedfast <fejj@novell.com>
4972 * layout.cpp (Layout): Don't apply font height to the line unless
4973 text has been rendered on that line using that font.
4975 2009-06-10 Jackson Harper <jackson@ximian.com>
4977 * xaml.cpp|h: Add another param to LookupObject to specify whether
4978 we are looking up a property. We can't rely on the '.' being in
4979 the name because x:Class names can have namespaces.
4980 - Force USERCONTROL to be looked up in managed so we can
4983 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
4985 * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
4986 parent entries/playlists too. Also propagate the BufferUnderflow
4989 * pipeline.cpp: Change logic when filling the buffer to request
4990 a frame from the least-buffered stream. This solves an issue with
4991 live streams, we might end up playing audio only when the video
4992 buffer was empty and the audio buffer never full.
4994 * mediaplayer.cpp|h: When determining duration of an entry, check
4995 the entry's parents too for duration. We also need to set
4996 first_live_pts when rendering. This makes MS DRT #129
4997 not time out. Add a BufferUnderflow to inform listeners of any
5000 * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
5001 playback and update states accordingly. Remove UpdateProgress,
5004 * type-generated.cpp: Regenerated.
5006 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5008 * mediaplayer.cpp: use the correct max value for guint64.
5010 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5012 * mediaplayer.cpp|h: Make flags a thread-safe variable, since
5013 we might write to it from an audio thread.
5015 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5017 * playlist.cpp: When checking if an entry has duration, check
5018 the right entry. Fixes a possible crash.
5020 2009-06-10 Alan McGovern <amcgovern@novell.com>
5022 * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
5023 event too. Allows drt 293 to complete.
5025 2009-06-10 Alan McGovern <amcgovern@novell.com>
5027 * uri.cpp: Uris starting with "\\" need to be recognised as
5030 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5032 * pipeline-asf.cpp: Remove dead code.
5034 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5036 * runtime.cpp: g_warning -> printf to ease breaking on
5039 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5041 * dependencyobject.h: Fix IdMask.
5043 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5045 * pipeline.h|cpp: Rework some of the buffer filling algorithm:
5046 we now never have more than one frame pending (to know which
5047 stream a response comes from - if frame parameter to
5048 ReportGetFrameCompleted is null, we need to mark the corresponding
5049 stream as ended. Also split the 'stream ended' concept in two:
5050 input ended (the demuxer won't give us more data) and output
5051 ended (the decoder won't give us more data). This fixed
5055 * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
5056 need to try again later.
5058 * mediaelement.cpp: CheckMarkers: subtract one to not include
5059 both ends of the range, if the marker matches exactly the end
5060 of a range it will get emitted twice otherwise.
5063 * audio.cpp: Updated according to IMediaStream changes.
5065 2009-06-09 Jeffrey Stedfast <fejj@novell.com>
5067 * value.cpp (operator==): Fix a crash if comparing a null
5070 * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
5071 the control is loaded.
5072 (EmitTextChangedAsync): Same.
5074 2009-06-09 Alan McGovern <amcgovern@novell.com>
5076 * runtime.cpp: The first mouse click will always Focus on the
5077 'default' control. After that we follow the normal focusing
5078 rules and focus on the first eligible control which the
5079 mouse has clicked on.
5081 2009-06-08 Jackson Harper <jackson@ximian.com>
5083 * xaml.cpp: Add TimeSpan to the primitive types.
5085 2009-06-08 Chris Toshok <toshok@ximian.com>
5087 * runtime.h (class Surface): add IsZombie.
5089 2009-06-08 Jackson Harper <jackson@ximian.com>
5091 * error.cpp|h: Add method and fields for line/char positions.
5092 * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
5093 them to get propogated to managed and fixes some of the unit tests.
5095 2009-06-08 Jackson Harper <jackson@ximian.com>
5097 * xaml.cpp|h: Pass the property xmlns and the element xmlns into
5098 managed when setting properties.
5100 2009-06-08 Alan McGovern <amcgovern@novell.com>
5102 * runtime.cpp: Un-regress drt 783. We need to raise our cached
5103 focus changed event, then process the focus change itself,
5104 then raise the events for the new change.
5106 2009-06-08 Alan McGovern <amcgovern@novell.com>
5109 * runtime.cpp: If Control.Focus is called from inside a
5110 GotFocus handler, the focus change occurs immediately and
5111 the new GotFocus event is raised as soon as the current
5112 handler is finished.
5114 2009-06-08 Jackson Harper <jackson@ximian.com>
5116 * xaml.cpp: Bail out after we hit the first attribute parsing
5119 2009-06-08 Jackson Harper <jackson@ximian.com>
5121 * xaml.cpp: We need to convert path geometry strings from managed.
5123 2009-06-08 Jackson Harper <jackson@ximian.com>
5125 * xaml.cpp: Little more cleanup now that we don't have to reparse
5126 attributes for x:Class.
5128 2009-06-05 Chris Toshok <toshok@ximian.com>
5130 * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
5131 element when we aren't hydrating is illegal. this has the
5132 pleasant side effect of removing the need to reparse attributes,
5133 so axe that code as well.
5135 2009-06-05 Chris Toshok <toshok@ximian.com>
5137 * textbox.cpp (TextBoxView::Blink): don't set deployments using
5138 the pattern Deployment::SetCurrent (GetDeployment()), as
5139 GetDeployment() issues a warning if the object's deployment
5140 doesn't match the current one. use
5141 DependencyObject::SetCurrentDeployment(true) instead.
5143 2009-06-04 Chris Toshok <toshok@ximian.com>
5145 * runtime.cpp (Surface::EmitError): stop unreffing the args after
5146 the Emit call. Emit unrefs them for us.
5148 2009-06-05 Jeffrey Stedfast <fejj@novell.com>
5150 * layout.cpp (layout_word_wrap): Stop processing when we come to
5151 open-punctuation if it isn't the first char in the word as this is
5152 a good break opportunity. Fixes the last remaining issue in
5155 2009-06-04 Jackson Harper <jackson@ximian.com>
5157 * xaml.cpp: Track the owner type of properties so we know whether
5158 or not to go into managed when we are dealing with an attached
5161 2009-06-04 Jeffrey Stedfast <fejj@novell.com>
5163 * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
5164 font face that fontconfig can find for the requested language.
5165 (FontFace::LoadFontFace): Get the lang string and pass it along.
5166 (FontFace::Init): initialize a default font hash table for
5167 non-latin languages.
5168 (FontFace::Shutdown): destroy aformentioned table.
5169 (FontFace::LoadDefaultFaceForLang): New helper method to load the
5170 default font face for a given language code.
5171 (FontFace::GetDefault): If the language in the Fc pattern is
5172 'special', use LoadDefaultFaceForLang().
5173 (TextFontDescription::.ctor): Initialize language.
5174 (TextFontDescription::.dtor): Free language.
5175 (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
5177 (TextFontDescription::UnsetFields): Unset the language field.
5178 (TextFontDescription::Merge): Merge the language field.
5179 (TextFontDescription::GetLanguage): New method to get the language.
5180 (TextFontDescription::SetLanguage): New method to set the language.
5181 (TextFontDescription::ToString): Modified a bit.
5183 * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
5185 (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
5186 TextFontDescription.
5188 2009-06-04 Jackson Harper <jackson@ximian.com>
5190 * xaml.cpp: The managed property could be either the property or
5193 2009-06-04 Larry Ewing <lewing@novell.com>
5195 * canvas.cpp (OnCollectionItemChanged): call
5196 InvalidateSubtreePaint on items when their position in the canvas
5197 changes to make sure we clear the old region. Fixes a couple of
5198 the inkpresenter tests.
5200 2009-06-04 Larry Ewing <lewing@novell.com>
5202 * shape.cpp (ComputeStretchBounds): reject negative width/height
5203 settings. Fixes test-shape-negative.xaml
5205 2009-06-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
5207 * multiscaleimage.cpp: Add a debugging abort to try to find the
5210 2009-06-04 Alan McGovern <amcgovern@novell.com>
5213 * type-generated.cpp: Actually add IsEnabledChangedEvent
5215 2009-06-04 Alan McGovern <amcgovern@novell.com>
5217 * control.h: Add IsEnabledChangedEvent to native
5219 * type-generated.cpp: regen
5221 2009-06-04 Stephane Delcroix <sdelcroix@novell.com>
5223 * multiscaleimage.cpp: qtree_insert () takes no value. returns
5224 the newly created QTreeNode. qtree_insert_at () renamed to
5225 qtree_insert_with_value ().
5227 2009-06-03 Alan McGovern <amcgovern@novell.com>
5232 * uielement.cpp|h: Calling Control.Focus () results in a recursive
5233 check to find a focusable element. A mouse click does a non-recursive
5234 check on the elements which were 'hit'. Fixes two DRTs.
5236 2009-06-03 Jackson Harper <jackson@ximian.com>
5238 * xaml.cpp: Update some error messages.
5239 - Pass the current namespace in when creating property infos in
5241 * frameworkelement.h: ActualWidth and ActualHeight are readonly
5243 * dependencyproperty.g.cpp: regen
5245 2009-06-03 Jeffrey Stedfast <fejj@novell.com>
5247 * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
5248 bit more than FT_Get_Char_index().
5250 * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
5251 trailing lwsp towards line width, even if underlined.
5252 (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
5253 we are the last glyph cluster on a line.
5254 (GenerateGlyphCluster): Keep track of underline width (calculated
5255 using width up to/including last non-lwsp char).
5256 (word_type_changed): Consider numerics as part of the containing
5259 2009-06-03 Jackson Harper <jackson@ximian.com>
5261 * xaml.cpp|h: We need to look for managed properties on native
5263 - Set the element info for properties to the type of the property.
5264 - Add the ability for properties to force their set to be in
5265 managed even if they come from a native type.
5267 2009-06-03 Alan McGovern <amcgovern@novell.com>
5269 * uielement.cpp: Calculate the Transform between two UIElements
5272 2009-06-03 Alan McGovern <amcgovern@novell.com>
5274 * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
5275 we need to populate M11/M12/M21 etc with the correct values.
5277 2009-06-02 Chris Toshok <toshok@ximian.com>
5279 * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
5280 Type::INVALID as its Kind. This is another facet to the "we need
5281 to register enum types" work that will need to be done. The
5282 GetKind() method needs to eventually return a property Kind, but
5283 until then we'll just check for Type::INVALID.
5285 2009-06-02 Sebastien Pouliot <sebastien@ximian.com>
5287 * security.c: Use the PREVIEW_VERSION for the environment variable
5288 used to turn off security (coreclr and verifier)
5290 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
5292 * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
5293 the run->SetAutogenerated() logic a while back which is causing
5296 * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
5297 longer supports this wrapping model.
5299 2009-06-02 Larry Ewing <lewing@novell.com>
5301 * uielement.cpp (DoArrange): don't poke at unset values. Fixes
5304 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
5306 * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
5309 2009-06-02 Alan McGovern <amcgovern@novell.com>
5311 * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
5312 reverse logical order.
5315 * uielement.cpp|h: Make Focus a virtual method on UIElement.
5317 * src/runtime.cpp: When the surface receives a mouse down we need to
5318 focus the first control added to the root element if the user has not
5319 clicked on a control or focused one using Control.Focus (). Then any
5320 pending Focus events are raised before the mouse event is processed.
5322 * src/window-gtk.cpp: Always pass a right mouse button event into the
5323 Surface so that we can fire any pending Focus events to match the
5324 behaviour of Silverlight.
5326 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5328 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5329 since g_ascii_strtoull isn't available in sled.
5331 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5333 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
5334 since g_ascii_strtoull isn't available in sled.
5336 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5341 * type-generated.cpp: Regenerated.
5343 * downloader.h: Removed streaming_features, not used here anymore.
5349 * pipeline-asf.cpp|h:
5350 * mms-downloader.cpp|h: Implement support for server side playlists.
5352 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5354 * pipeline.cpp: Check queued_requests for null after locking too.
5356 2009-06-02 Alan McGovern <amcgovern@novell.com>
5358 * runtime.cpp|h: Focus changed events are emitted synchronously right
5359 before a MouseLeftButtonDown or MouseRightButtonDown event.
5361 2009-06-01 Chris Toshok <toshok@ximian.com>
5363 * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
5364 here too so xaml.cpp knows if the type is creatable.
5366 * type.h, cbinding.cpp|h: regen
5368 2009-06-01 Chris Toshok <toshok@ximian.com>
5370 * xaml.cpp (dependency_object_add_child): only do this check for
5371 non-Type::MANAGED children.
5373 2009-06-01 Chris Toshok <toshok@ximian.com>
5375 * grid.cpp|h: the row/columndefinitioncollections do not permit
5376 definitions to be inserted more than once.
5378 * type.h.in (class Type): add IsCtorVisible method and ctor arg.
5380 * type.h, type-generated.cpp: regen.
5382 * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
5383 the instance if the ctor is visible.
5384 (dependency_object_add_child): if the ctor for the child isn't
5385 visible, error out even if it's the same type/kind as the
5388 2009-06-01 Jeffrey Stedfast <fejj@novell.com>
5390 * deployment.cpp (Dispose): Properly chain up to
5391 DependencyObject::Dispose().
5393 * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
5395 * brush.cpp (ImageBrush::Dispose): Chain up to
5396 TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
5397 crash in GlyphsManagedDRT
5399 * dependencyobject.cpp (WildcardListener): Uh, this needs to
5400 subclass Listener or we can't go around casting it to a Listener.
5401 (CallbackListener): Same.
5403 2009-06-01 Chris Toshok <toshok@ximian.com>
5405 * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
5406 end_idx == 0) return early.
5408 * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
5409 the toplevel object as hydrated if parser_info->hydrating == true.
5410 this fixes some managed parsing stuff since XamlReader.Load was
5411 using the same codepath (just passing NULL into
5412 XamlReader::HydrateFromString.)
5414 2009-05-29 Jeffrey Stedfast <fejj@novell.com>
5416 * application.cpp (GetResourceAsPath): Fixed extra
5417 XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
5420 2009-05-29 Alan McGovern <amcgovern@novell.com>
5422 * control.cpp: When Control.Focus () is called, if the control itself
5423 is not focusable, we need to check it's visual children. The call will
5424 complete successfully if any of the children are focusable, and that
5425 child will become the focused element.
5427 2009-05-29 Alan McGovern <amcgovern@novell.com>
5429 * control.cpp|h: If a control becomes disabled, it loses mouse capture
5430 and cannot regain it later. If CaptureMouse is called on a disabled
5431 control, the mouse is successfully captured and then immediately
5432 released which fires the LostMouseCapture event.
5434 * runtime.cpp|h: If control A captures the mouse, control B can't steal
5435 the capture or release the capture. Add an explicit ReleaseMouseCapture
5436 function to accomodate this behaviour.
5438 * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
5439 function which signifies whether or not the current UIElement can keep the
5442 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
5444 * textbox.h (class PasswordBox): Marked PasswordProperty as
5445 AlwaysChange so that setting this property (even to the same
5446 value) will force a PasswordChanged event to be emitted.
5447 (class TextBox): Marked SelectedTextProperty as AlwaysChange to
5448 fix moon-unit test: SetIdenticalSelectedText()
5450 * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
5451 printfs for utf8->ucs4 conversion errors.
5453 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
5455 * textbox.h (class TextBox): Added the AlwaysChange metadata to
5456 SelectionStart/Length properties.
5458 * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
5459 to asynchronously emit SelectionChanged events.
5460 (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
5461 (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
5462 (TextBox::EmitSelectionChanged): Simply emit the event now, don't
5463 bother updating state which is now handled elsewhere.
5464 (TextBox::EmitTextChanged): Same.
5465 (TextBox::OnPropertyChanged): When clamping the SelectionLength
5466 value due to a SelectionState property change, block events - we
5467 should only emit a single SelectionChanged event. Also modified to
5468 avoid emitting a TextBoxModelChanged event if the values didn't
5469 actually change. Same for SelectionLength changes.
5471 2009-05-28 Chris Toshok <toshok@ximian.com>
5473 * value.h.in, value.cpp: add a copy assignment operator.
5477 2009-05-28 Alan McGovern <amcgovern@novell.com>
5479 * control.cpp: When changing Control.IsEnabled, create the
5482 2009-05-28 Alan McGovern <amcgovern@novell.com>
5484 * animation.cpp: Fix a double free caused by the line
5485 converted = Value (*value);
5487 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
5489 * pipeline-ui.cpp: Protect against a null surface.
5491 * mediaelement.cpp: Get the surface from the deployment (which should
5492 always have a surface) instead of the media element's surface
5493 (which is not guaranteed to be set always).
5495 2009-05-28 Alan McGovern <amcgovern@novell.com>
5497 * control.cpp|h: Control.IsEnabled propagates to its children
5498 when the control is Loaded.
5500 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
5504 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
5506 * mms-downloader.cpp: Custom headers must be requested before
5507 opening the downloader.
5509 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
5511 * multiscaleimage.h|cpp: replace the hash cache on uri by
5512 a set of qtree, one per subimage. This should speed stuffs
5513 a lot, as uri crating/parsing/hashing was taking up to 20%
5516 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
5518 * multiscalesubimage.h: GetId (). Get subimage id, used as
5521 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
5523 * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
5524 qtree_insert, etc. The Q(uad)Tree data structure is a tree with
5525 4 child nodes, matching the tree-ish pyramid of MSI tiles.
5527 2009-05-28 Andreia Gaita <avidigal@novel.com>
5529 * timeline.cpp: Stop the clock when you call Stop.
5531 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
5533 * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
5534 argument which defaults to true. If not set, we avoid calling
5535 SyncText() even if emit has the TEXT_CHANGED bit set.
5536 (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
5537 false if the value was just set to null.
5539 2009-05-27 Alan McGovern <amcgovern@novell.com>
5542 * control.cpp: Implement correct propagation of
5543 Control.IsEnabled. Children of disabled controls are
5544 disabled. When their parent is re-enabled, they go back to
5545 their previous state.
5547 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
5549 Fixes to make sure that an TextChanged and SelectionChanged events
5550 are emitted after each and every change to the Text/Selection
5553 * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
5554 batch operation. Prevents SyncAndEmit() from doing anything until
5555 all nested batch operations are completed.
5556 (TextBoxBase::BatchPop): Call at the end of each
5558 (TextBoxBase::*): Instead of using inkeypress, use the more
5559 generic BatchPush()/Pop().
5560 (TextBox::OnPropertyChanged): Call SyncAndEmit() after
5561 Text/Selection changes.
5562 (PasswordBox::OnPropertyChanged): Same.
5564 2009-05-27 Geoff Norton <gnorton@novell.com>
5566 * runtime.cpp|h: Support the splash progress/completed events.
5568 * type-generated.h: Regen
5570 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
5572 * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
5573 if the TextBox is loaded and unset the emit state.
5574 (TextBox::EmitTextChanged): Same.
5576 2009-05-27 Geoff Norton <gnorton@novell.com>
5578 * deployment.cpp|h: Allow reinitializing the appdomain if our
5579 Source has changed, or we're switching from the splash screen to
5582 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
5585 * textblock.cpp: Fix warnings.
5587 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
5590 * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
5592 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
5598 * mms-downloader.cpp:
5599 * internal-downloader.h:
5600 * file-downloader.h:
5601 * file-downloader.cpp:
5602 * pipeline-asf.cpp: Updated according to downloader API changes.
5605 * downloader.cpp: Add support for retrieving response headers
5606 and disable caching. Initialize the downloader interface methods
5607 to their default/dummy methods statically.
5611 * type-generated.cpp:
5613 * cbinding.cpp: Regenerated.
5615 2009-05-27 Alan McGovern <amcgovern@novell.com>
5617 * resources.cpp: Wait til AddedToCollection returns success
5618 before adding the item to the hashtable.
5620 2009-05-27 Alan McGovern <amcgovern@novell.com>
5622 * resources.cpp: Propagate the error (if there is one) from
5623 Collection::AddWithError. If there is an error, clear the item
5624 from the hashtable before returning.
5626 2009-05-27 Alan McGovern <amcgovern@novell.com>
5630 * dependencyproperty.g.cpp: Control.Enabled needs to be
5631 created in native code as it's required for hittesting. A
5632 disabled control and its visual children do not receive
5633 mouse events and are not visible to
5634 VisualTreeHelper.FindElementInHostCoordinates.
5636 2009-05-26 Jeffrey Stedfast <fejj@novell.com>
5638 * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
5639 on the StyleSimulations value.
5640 (Layout): No longer need to pass along StyleSimulations to
5643 * font.cpp (style_weights): Added more style weight name mappings.
5644 (style_slants): Same.
5645 (FontFace::IsItalic): New method to query the font face to see if
5646 it is italic or not.
5647 (FontFace::IsBold): Same idea.
5648 (TextFont::TextFont): Now takes a TextFontDescription so that we
5649 can initialize the new 'simulate' member variable which tells us
5650 if we have to simulate bold or italics due to not finding a
5652 (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
5653 argument. Instead, it now uses the 'simulate' member variable to
5654 pass to FontFace::LoadGlyph().
5655 (TextFontDescription::CreatePattern): Always add Weight and Slant
5656 to the pattern now, even if it is the default font
5657 family. Silverlight 2.0 no longer restricts bold/italics to
5660 2009-05-26 Chris Toshok <toshok@ximian.com>
5662 * xaml.cpp (XamlElementInstance::SetName): if it's a
5663 dependencyobject, add it to the container here.
5664 (XamlElementInstance::SetKey): same.
5665 (end_element_handler): only do the AddToParentContainer call here
5666 if the element is not a dependencyobject.
5668 2009-05-25 Jeffrey Stedfast <fejj@novell.com>
5670 * glyphs.cpp: Changed 'style' to be unsigned.
5672 2009-05-25 Andreia Gaita <avidigal@novel.com>
5674 * timeline.h|cpp (DispatcherTimer): reset the clock properly when
5675 restarting a dispatcher timer. also, rename Run to Restart.
5676 note: if a timer is not stopped or started during it's tick event,
5677 the time spent on the tick is counted for the next tick on the
5680 2009-05-25 Chris Toshok <toshok@ximian.com>
5682 * runtime.h|cpp (Surface::EmitError): add an overload so
5683 Application.cs can cause an error to be emitted on the surface.
5685 * cbinding.h|cpp: regen.
5687 2009-05-25 Andreia Gaita <avidigal@novel.com>
5689 * border.cpp (OnPropertyChanged): Invalidate when background is
5692 2009-05-25 Chris Toshok <toshok@ximian.com>
5694 * uielement.cpp (UIElement::GetTransformToUIElementWithError):
5695 this method fails incorrectly when you call it on the toplevel
5696 element of a surface.
5698 2009-05-25 Chris Toshok <toshok@ximian.com>
5700 * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
5701 for separate resource dictionary name registration. this isn't
5702 exactly right, since the name *should* be unregistered.
5704 2009-05-25 Chris Toshok <toshok@ximian.com>
5706 * validators.cpp (Validators::TemplateValidator): this is causing
5707 DRT 438 to throw an exception and subsequently timeout. its
5708 removal doesn't seem to break anything else, so ifdef it out with
5711 2009-05-25 Alan McGovern <amcgovern@novell.com>
5716 * dependencyobject.cpp
5717 * dependencyproperty.cpp
5718 * dependencyproperty.g.cpp
5719 * dependencyproperty.h
5720 * uielement.h: There are two types of DependencyProperty.
5721 Core properties and custom properties. Custom properties
5722 do not set the parent on a DO. This makes the old
5723 'SetsParent' property redundant, so remove it.
5725 2009-05-22 Chris Toshok <toshok@ximian.com>
5727 * xaml.cpp (XamlElementInstance::SetName): don't call
5728 AddToContainer here. in case the element is a value type, and
5729 we're adding it to a RD on a managed type (like StackPanel), the
5730 managed xaml loader will marshal the value type to C# and we'll
5731 lose any further updates to the value typed object by the parser.
5732 That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
5733 ManagedXamlLoader will see a color with #00000000 as its value, as
5734 the content hasn't been parsed by the time we create the managed
5736 (XamlElementInstance::SetKey): same.
5737 (end_element_handler): call AddToParentContainer here instead.
5739 2009-05-22 Chris Toshok <toshok@ximian.com>
5741 * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
5742 were missing the case where HydratedFromXaml elements weren't
5743 updating their parent namescope on name changes, only their
5744 private ones. Adding the parent namescope fix fixes FaceMonkey's
5747 2009-05-22 Jackson Harper <jackson@ximian.com>
5749 * xaml.h|cpp: New callback for registering elements in
5750 containers, we need to do this earlier on in the parse than
5751 setproperty because other elements could reference these elements
5752 before they've been set.
5754 2009-05-21 Alan McGovern <amcgovern@novell.com>
5757 * src/cbinding.h: regen
5759 * dependencyproperty.c:
5760 * dependencyproperty.h: We can either register a 'core' property or a
5761 'custom' property from managed code. Core properties are part of the
5762 framework itself, custom properties are user-created. Custom properties
5763 don't set the parent or register names in namescopes.
5765 2009-05-21 Stephane Delcroix <sdelcroix@novell.com>
5767 * deepzoomimagetilesource.h:
5768 * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
5769 without listening to the event, if a tilesource is ready to be
5771 * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
5772 size from a subimage source.
5774 2009-05-21 Larry Ewing <lewing@novell.com>
5776 * multiscaleimage.cpp (RenderCollection): reoorder the max level
5777 test so that we only call get_tile_func once in that case. Speeds
5778 up hardrock and the moment.
5780 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
5782 * debug.h: Added LOG_ASF.
5784 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
5786 * runtime.h: Don't use 64 bit constants for the runtime debug enum.
5788 2009-05-21 Alan McGovern <amcgovern@novell.com>
5792 * src/dependencyproperty.g.cpp: regen
5794 * dependencyobject.cpp:
5795 * dependencyproperty.cpp:
5796 * dependencyproperty.h:
5797 * uielement.h: Add the ability to set a DP as non-parenting and
5798 apply it to FrameworkElement::TagProperty
5800 2009-05-20 Larry Ewing <lewing@novell.com>
5802 * multiscaleimage.cpp (RenderCollection): fix bug introduced in
5803 earlier tile size fix. Fixes covertocover.
5805 2009-05-20 Larry Ewing <lewing@novell.com>
5808 * bitmapsource.cpp: when creating a cached surface use the group
5809 target type not the overall target.
5811 2009-05-20 Larry Ewing <lewing@novell.com>
5813 * frameworkelement.cpp (ComputeActualSize): avoid making a
5814 IsLayoutContainer call here.
5816 2009-05-20 Stephane Delcroix <sdelcroix@novell.com>
5818 * multiscaleimage.cpp: support different tile sizes for the collection
5819 and the individual images. Fixes "the moment" 2D.
5821 2009-05-20 Larry Ewing <lewing@novell.com>
5823 * xaml.cpp: update the parser error numbers and strings to match 2.0.
5825 2009-05-20 Larry Ewing <lewing@novell.com>
5827 * multiscaleimage.cpp: small change to avoid getting the property
5830 2009-05-20 Alan McGovern <amcgovern@novell.com>
5835 * type-generated.cpp: Register 'float' as a known type
5837 2009-05-20 Chris Toshok <toshok@ximian.com>
5839 * type.h.in: a few changes. We no longer pass the kind name to
5840 the ctor, since nothing ever uses it, and the type name is enough.
5841 add both an interface array and array count to the Type ctor, as
5842 well as a is_interface bool. Lastly, add IsAssignableFrom
5845 * dependencyobject.cpp (DependencyObject::IsValueValid): switch
5846 from using a direct comparison on Kinds to using
5847 Type::IsAssignableFrom. this makes interfaces work.
5849 * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
5851 * animation.cpp (AnimationClock::HookupStorage): instead of
5852 comparing kinds, use Type::IsAssignableFrom to see if we can
5853 animate the property using a particular timeline type.
5854 (DoubleAnimation::GetCurrentValue,
5855 DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
5856 ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
5857 PointAnimation::GetTargetValue): add code to deal with the start
5858 value not being the same type as the animation uses (this can
5859 happen if we're animating an interface property like
5860 IComparable.) The start values in that case are 0.0, Point(0.0),
5861 and Color(0,0,0,0), respectively.
5863 2009-05-19 Larry Ewing <lewing@novell.com>
5865 * collection.cpp: avoid some GetDeployment calls in looping cases.
5867 2009-05-19 Larry Ewing <lewing@novell.com>
5869 * frameworkelement.cpp (UpdateLayout): clear the needs flags when
5870 we restart in case they we're properly cleared before.
5872 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5874 * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
5875 function pointers to call whenever the corresponding virtual method
5878 * enums.h: Move enums from the pipeline here (makes it easier to
5879 create c bindings for methods taking enums)
5883 * pipeline-ffmpeg.cpp: Update accccording to enum changes.
5885 * codec-version.h.in: Bump ABI version.
5889 * type-generated.cpp: Regenerated.
5891 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5897 * pipeline-ffmpeg.cpp:
5898 * pipeline.cpp|h: Add accessors for fields in VideoStream,
5899 AudioStream and MediaFrame.
5900 * cbinding.cpp|h: Regenerated.
5902 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
5904 * cbinding.cpp|h: Regenerated.
5906 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5908 * security.h: Include <mono/metadata/assembly.h>.
5909 Fixes a warning (and the build with MD).
5911 2009-05-19 Alan McGovern <amcgovern@novell.com>
5913 * animation.cpp: Add some optimisations to ObjectKeyFrames.
5914 Don't call back into managed when the value is null or when
5915 the the value is already of the exact right kind. This will
5916 need to be reviewed once unmanaged code understands
5917 interfaces so we can fastpath interfaces too.
5919 2009-05-18 Larry Ewing <lewing@novell.com>
5923 * frameworkelement.cpp: for the time being use the needs* flags on
5924 surface to skip the UpdateLayout logic when the tree is clean.
5925 Optimize a couple of the property reads inside the deep walk.
5927 * provider.cpp (GetPropertyValue): rework some more of the checks
5928 to remove some other remaining unneeded checks.
5930 2009-05-18 Chris Toshok <toshok@ximian.com>
5932 * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
5935 2009-05-18 Larry Ewing <lewing@novell.com>
5937 * bitmapsource.cpp (GetSurface): use the content type of the image
5938 when creating the native surface.
5940 2009-05-18 Larry Ewing <lewing@novell.com>
5942 * provider.cpp (GetPropertyValue): reorder the framework element
5943 property lookup to avoid an extra type inquiry in a potentially
5946 2009-05-18 Larry Ewing <lewing@novell.com>
5948 * xaml.cpp (dependency_object_set_attributes): move the types
5949 lookup outside the loop.
5951 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
5954 * type.h: Regenerated.
5957 * dependencyobject.h:
5958 * dependencyproperty.h:
5961 * frameworkelement.h:
5964 * type.h: Sprinkle CBindingPrequisite around. Also use ints
5965 instead of Type::Kind values in function pointers.
5967 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
5969 * window-gtk.h: Add a GetNativeWidget which returns a void
5970 pointer instead of GtkWidget* so that we don't need to include
5971 gtk for the c bindings.
5973 2009-05-18 Alan McGovern <amcgovern@novell.com>
5975 * contentcontrol.cpp: For contentcontrols, the applied
5976 template is only cleared if the old or new content is a
5977 UIElement (frameworkelement?). The fallback 'template' of a
5978 Grid + TextBlock is also reused every time.
5980 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
5982 * utils.h: Use c++-style structs to please the generator.
5984 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
5986 * window-gtk.h: Add a GetNativeWidget which returns a void
5987 pointer instead of GtkWidget* so that we don't need to include
5988 gtk for the c bindings.
5989 * cbinding.h|cpp: Updated.
5991 2009-05-16 Chris Toshok <toshok@ximian.com>
5993 * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
5994 be g_strstrip'ed, but we can't do it until right before we use it,
5997 2009-05-16 Chris Toshok <toshok@ximian.com>
5999 * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
6000 XamlElementInfo::IsCDataVerbatim): new methods to set and get a
6001 flag telling the cdata_handler to not collapse/remove
6002 whitespace. <clr:String> requires this.
6003 (PrimitiveNamespace::FindElement): for the "String" case, call
6004 XamlElementInfo::SetIsCDataVerbatim(true).
6005 (char_data_handler): if the current element IsCDataVerbatim, just
6006 append the input string and return.
6008 2009-05-16 Alan McGovern <amcgovern@novell.com>
6010 * security.c: Bump the security env var to _04
6012 2009-05-16 Alan McGovern <amcgovern@novell.com>
6020 * dependencyproperty.g.cpp: Add type converting to
6021 ObjectKeyFrame. The conversion is done during the Resolve
6022 phase. If the type conversion can't be completed an
6023 exception is thrown.
6025 2009-05-15 Chris Toshok <toshok@ximian.com>
6027 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
6028 in the hydrated case we still need to register our name.
6029 (DependencyObject::ProviderValueChanged): don't swallow the error
6030 when we SetParent on the new_as_dep.
6031 (DependencyObject::SetParent): if we're adding a Hydrated
6032 element (i.e. one that was loaded using LoadComponent), we need to
6033 register its name into the parent namescope. Also, move the
6034 quickest check to the top so we don't do the family check on every
6035 SetParent call if the before/after parent are the same. Lastly,
6036 we only register names if the current parent is NULL. That is, if
6037 a named brush is a property on an element already, and its name is
6038 registered, we don't register it in the new namescope when it's
6039 set as a property on a second element. Odd but it matches SL
6041 (DependencyObject::FindName): no longer walk up the namescope
6042 hierarchy, and don't look up things in the toplevel's namescope
6045 * dependencyobject.h (class DependencyObject): add
6046 SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
6048 * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
6049 object as being hydrated.
6050 (everywhere): we don't need GetParentNamescope for anything. we
6051 always use the toplevel namescope of the subtree the parser is
6054 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6055 don't pass a null error to ProviderValueChanged.
6057 2009-05-15 Larry Ewing <lewing@novell.com>
6059 * frameworkelement.cpp (UpdateLayout): just warn if the element is
6060 loaded don't skip it for now since it causes regressions in the
6063 2009-05-15 Chris Toshok <toshok@ximian.com>
6065 * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
6066 change that gets automatic storyboards with zero length children
6067 to have a zero length themselves.
6069 2009-05-15 Larry Ewing <lewing@novell.com>
6071 * grid.cpp (OnCollectionItemChanged): invalidate on column
6074 2009-05-15 Larry Ewing <lewing@novell.com>
6076 * debug.h (LOG_LAYOUT): use printf.
6078 * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
6080 * frameworkelement.cpp: reorder the updated_list and clean up some
6083 * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
6084 loaded here since it will break delayed queuing of loaded events
6085 when the tree is modified inside the event handler. Improves
6087 2009-05-15 Jackson Harper <jackson@ximian.com>
6089 * xaml.cpp: Use the property element's type instead of parsing out
6090 the name, this fixes setting propertys of imported managed types.
6092 2009-05-15 Alan McGovern <amcgovern@novell.com>
6095 * dependencyproperty.g.cpp: The Keyframes property of
6096 ObjectAnimationUsingKeyframes needs to be autogenerated.
6098 2009-05-15 Alan McGovern <amcgovern@novell.com>
6100 * type-generated.cpp:
6101 * frameworkelement.h: Properly handle exceptions when updating
6102 the source in a 2 way binding. Raise the
6103 BindingValidationError event in the right place.
6105 2009-05-14 Jackson Harper <jackson@ximian.com>
6107 * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
6109 2009-05-14 Larry Ewing <lewing@novell.com>
6111 * xaml.cpp (lookup_named_item): make this nonrecursive.
6113 2009-05-14 Jeffrey Stedfast <fejj@novell.com>
6115 * frameworkelement.cpp (OnPropertyChanged): Do a
6116 FullInvalidate(true) when the Horizontal or Vertical Alignment
6119 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6121 * dependencyobject.cpp: unref: only try to delete
6122 us if we had a 0 refcount after decrementing refcount.
6123 Also use an atomic fetch when checking if the object
6126 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6128 * dependencyobject.cpp: when printing stack traces
6129 first get all the lines to print, then print them.
6130 This way it's a lot less probable to get other lines
6131 in between when printing stacktraces from multiple threads.
6133 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6135 * dependencyobject.cpp: Print typename for object creation
6136 too, now that we don't have to call a virtual method to
6139 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6141 * timesource.h: G_PRIORITY_IDLE doesn't exist, use
6142 G_PRIORITY_HIGH_IDLE.
6144 2009-05-13 Chris Toshok <toshok@ximian.com>
6146 * xaml.cpp (class XamlContextInternal): allow for a parent context
6147 so that we can track context's (and resources) across multiple
6148 template instantiations.
6149 (create_resource_list): just stuff the FrameworkElement on the
6150 list and leave the GetValue(UIElement::Resources) for when we look
6151 up the actual resource.
6152 (end_element_handler): when creating a new XamlContext pass in our
6153 current XamlContext.
6154 (XamlContextInternal::LookupNamedItem): handle both changes (FWE
6155 in our resources list, and parent context chaining.)
6157 2009-05-13 Jackson Harper <jackson@ximian.com>
6159 * xaml.cpp: We need to dup the top_element since this can be
6162 2009-05-13 Chris Toshok <toshok@ximian.com>
6164 * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
6165 clocks (those with Duration=00:00:00) we weren't emitting
6166 completed (or switching to Fill/Stop).
6168 2009-05-13 Jackson Harper <jackson@ximian.com>
6170 * xaml.h|cpp: use a Value* for top level objects, this lets us get
6171 rid of the gchandle hack in the managed xaml loader for non DOB
6174 2009-05-13 Larry Ewing <lewing@novell.com>
6176 * canvas.cpp: make IsLayoutContainer nonrecursive using
6179 * frameworkelement.cpp:
6180 * uielement.cpp, uielement.h:
6182 * shape.cpp: start reworking the container layout logic to avoid
6185 * collection.cpp: don't ref elements inside DeepTreeWalker use
6186 UnsafeUIElementNode instead.
6188 * dirty.cpp (UpdateLayout): remove some dead code.
6190 2009-05-13 Alan McGovern <amcgovern@novell.com>
6192 * value.cpp: Ensure we don't explode when checking null uris
6194 2009-05-13 Alan McGovern <amcgovern@novell.com>
6196 * validators.cpp: If StyleProperty has a value and it is
6197 'null', that is allowed to be replaced.
6199 2009-05-12 Chris Toshok <toshok@ximian.com>
6201 * timeline.cpp (DispatcherTimer::Start): when resetting the clock
6202 we need to make sure to reset the root parent time, or else the
6203 timer will tick immediately when started (if it's previously hit
6206 2009-05-12 Larry Ewing <lewing@novell.com>
6208 * collection.cpp, collection.h: Add a SkipBranch method to avoid
6209 computing walking into the tree when we can.
6211 * frameworkelement.cpp (UpdateLayout): Use the new skip branch
6212 logic in deeptreewalker to avoid invisible elements.
6214 2009-05-12 Larry Ewing <lewing@novell.com>
6216 * frameworkelement.cpp (UpdateLayout): revert the visibility change
6219 2009-05-12 Larry Ewing <lewing@novell.com>
6221 * frameworkelement.cpp (ComputeBounds): make sure the bounds are
6222 the size of the full element, and skip elements based on the
6223 actual visibility setting not the computed one.
6225 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
6227 * textbox.cpp (InvalidateCursor): New helper method which applies
6228 the absolute transform to the cursor before invalidating the
6230 (ShowCursor): Use InvalidateCursor().
6232 (UpdateCursor): Here too.
6234 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
6236 * textbox.cpp (OnKeyDown): Need to set the handled flag on the
6237 routed event args in the case where the key event is handled by
6239 (OnKeyUp): Set the handled flag in both cases here.
6241 2009-05-11 Alan McGovern <amcgovern@novell.com>
6245 * contentcontrol.cpp: Recommit r133738 as it's not causing the
6248 2009-05-09 Andreia Gaita <avidigal@novell.com>
6250 * uielement.h: Add GenerateJSBinding annotation to
6251 CaptureMouse, ReleaseMouseCapture and
6252 GetTransformToUIElementWithError (TransformToVisual)
6254 2009-05-09 Chris Toshok <toshok@ximian.com>
6256 * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
6257 this check so we're buildable on SLED10.
6259 2009-05-08 Jeffrey Stedfast <fejj@novell.com>
6261 * layout.cpp (layout_word_wrap): If we can't find a suitable place
6262 to wrap in the first time through the loop, make sure to respect
6263 the 'force' state the second time through.
6265 * application.cpp (GetResourceAsPath): Updated.
6267 * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
6268 to specify whether the filename should be lowercased as it is
6270 (ExtractAll): The 'canon' argument has been renamed to 'lower'
6271 which more accurately reflects its purpose. Pass this on to
6272 CanonicalizeFilename().
6274 2009-05-08 Alan McGovern <amcgovern@novell.com>
6278 * contentcontrol.cpp: Revert the changes in r133738 until I
6279 can figure out why the x86 bot doesn't like them. It's
6280 causing the extended controls tests to time out.
6282 2009-05-07 Alan McGovern <amcgovern@novell.com>
6286 * contentcontrol.cpp: If the content property changes, the
6287 Template is cleared if it has already been applied.
6289 2009-05-07 Andreia Gaita <avidigal@novell.com>
6291 * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
6292 the to_element is the top level element.
6294 2009-05-06 Chris Toshok <toshok@ximian.com>
6296 * xaml.cpp (dependency_object_set_attributes): we can't assume
6297 that a NULL value for @v means it hasn't been set, since {x:Null}
6298 could have been specified. we need another flag to make it work.
6300 2009-05-06 Jeffrey Stedfast <fejj@novell.com>
6302 * textbox.cpp (OnPropertyChanged): Guard against calling
6303 ResetIMContext in the middle of some keyboard input.
6305 2009-05-05 Chris Toshok <toshok@ximian.com>
6307 * collection.cpp (Collection::InsertWithError): we need to make a
6308 further copy because the caller could remove the element in a
6309 handler, which causes us to delete the value (values aren't ref
6312 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
6314 * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
6315 false since we're not rendering the preedit strings ourselves.
6316 (TextBoxBase::SetSurface): Update the GtkIMContext's client
6318 (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
6319 where the cursor is at.
6321 2009-05-05 Alan McGovern <amcgovern@novell.com>
6323 * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
6324 elements to be added to ResourceDictionarys in managed land.
6326 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
6328 * layout.cpp (Select): Fixed some selection logic.
6330 * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
6331 and hook up some callbacks. Also init need_im_reset to false.
6332 (TextBoxBase::~TextBoxBase): Kill the IMContext.
6333 (TextBoxBase::OnKeyDown): Filter the event key through the
6334 IMContext. If it handles the key, don't do anything more.
6335 (TextBoxBase::DeleteSurrounding): New callback method for
6337 (TextBoxBase::RetrieveSurrounding): Same.
6338 (TextBoxBase::Commit): New IMContext callback method to commit the
6339 input-method chars into the TextBox.
6340 (TextBoxBase::ResetIMContext): New helper method to reset the
6342 (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
6343 (TextBoxBase::OnFocusIn): Same.
6344 (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
6345 changes, update the GtkIMContext state accordingly. Same with the
6346 various Selection states and Text property.
6348 * eventargs.cpp (GetEvent): New method to get access to the
6349 original GdkEventKey event for use with GtkIMContext.
6351 2009-05-05 Alan McGovern <amcgovern@novell.com>
6355 * dependencyproperty.g.cpp: Back out the default value fix
6356 until the parser can be updated to handle this.
6358 2009-05-05 Alan McGovern <amcgovern@novell.com>
6362 * dependencyproperty.g.cpp: PathGeometry.Figures and
6363 ObjectAnimationUsingKeyframes.KeyFrames both need to be
6364 autogenerated. This allows them to pass their respective
6365 DefaultValues tests (when those tests are run).
6367 2009-05-05 Alan McGovern <amcgovern@novell.com>
6369 * template.h: Remove the forward decls for TemplateBinding and
6370 XamlTemplateBinding as they don't exist in unmanaged anymore
6372 2009-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
6374 * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
6376 2009-05-04 Geoff Norton <gnorton@novell.com>
6378 * codec-version.h.in: Bump
6379 * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
6381 2009-05-04 Jeffrey Stedfast <fejj@novell.com>
6383 * debug.cpp (Frame::ToString): fixed compile warning.
6385 * uielement.cpp (UpdateLayout): Need to return a bool here, we
6388 * textbox.cpp (Blink): Set the deployment.
6390 2009-05-03 Chris Toshok <toshok@ximian.com>
6392 * everywhere (NotifyListenersOfPropertyChange): add a MoonError
6395 * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
6396 can hook up TemplateBindings in managed code. Also, change all
6397 the loader callback types to take a loader pointer so we can get
6400 * template.h|.cpp: remove all the lists of bindings, the
6401 two different template binding types (XamlTemplateBinding and
6402 TemplateBinding) and their respective List::Node containers. all
6403 this is handled in managed land now, where it belongs.
6405 * dependencyproperty.h|.cpp: move
6406 PropertyChangedEventArgs to dependencyproperty.h, and unify the
6407 two types for property change handlers into simply
6408 PropertyChangeHandler.
6410 * dependencyobject.h: remove the PropertyChangedEventArgs struct
6411 from here, it now lives in dependencyproperty.h
6413 * dependencyobject.cpp (class CallbackListener): pass a MoonError
6415 (DependencyObject::ProviderValueChanged): reuse the
6416 PropertyChangedEventArgs since property change callbacks take them
6417 now instead of splitting up the old_value/new_value/property.
6419 * control.cpp (Control::Control, Control::~Control,
6420 Control::ApplyTemplate): remove all reference to the list of
6423 * control.h (class Control): remove the list of bindings.
6425 * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
6428 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
6430 * runtime.h (InMainThread): check main_thread_inited.
6432 * runtime.cpp: All flags variables are now 32bit. Split _EX flags
6433 into a second debug_flags_ex. Also added a new bool var to keep
6434 track of whether or not main_thread has been initialized since we
6435 can't necessary compare against NULL.
6439 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
6441 * debug.cpp: #include <unistd.h>
6443 * *.h: Don't #include stdint.h or unistd.h (only cpp files should
6446 2009-05-02 Jeffrey Stedfast <fejj@novell.com>
6453 * value.h[.in]: Don't include stdint.h
6455 2009-05-01 Jackson Harper <jackson@ximian.com>
6457 * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
6460 2009-05-01 Larry Ewing <lewing@novell.com>
6462 * collection.cpp: rework the sorting invalidation logic so that we
6463 don't do it quite as often.
6465 2009-05-01 Larry Ewing <lewing@novell.com>
6468 * collection.cpp: cache the deployment more and add a
6469 VisualTreeWalker interface to help with that.
6471 2009-05-01 Larry Ewing <lewing@novell.com>
6475 * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
6476 add a static version that handles looking up the deploy for us.
6480 * value.cpp: Make it possible to use a cached deployment when
6481 retriving values using the ::As* methods and calling
6482 Types::IsSubclassOrSuperclassOf.
6484 * style.cpp: when sealing the style use the cached deployment logic.
6486 2009-05-01 Larry Ewing <lewing@novell.com>
6488 * dependencyobject.h:
6489 * xaml.cpp: use types more directly in a few more places to reduce
6490 calls to Deployment::GetCurrent even more.
6492 2009-05-01 Jackson Harper <jackson@ximian.com>
6495 * dependencyobject.cpp|h: Move the name validation check to a
6496 validator (phase one of moving NameProperty to frameworkelement).
6497 * dependencyproperty.g.cpp: regen
6499 2009-05-01 Jackson Harper <jackson@ximian.com>
6502 * value.h.in: Sync with their .h's
6504 2009-04-30 Jackson Harper <jackson@ximian.com>
6506 * xaml.cpp: Use the type system for detecting if we should be in
6507 buffering mode, anything that is a FrameworkTemplate
6508 should be buffered. This fixes custom types that inherit from
6509 DataTemplate not getting buffered properly.
6511 2009-04-30 Jackson Harper <jackson@ximian.com>
6513 * xaml.cpp: We need to pass the object to GetPropertyName because
6514 non DOB objects can have content properties now.
6516 2009-04-30 Jackson Harper <jackson@ximian.com>
6518 * xaml.cpp: Don't require a content property name when we are
6519 trying to set a managed content property. This could be the
6520 content of a managed collection.
6522 2009-04-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
6524 * bitmapimage.cpp: Make sure we clean up any previous
6525 downloaders when we create new ones.
6527 2009-04-29 Larry Ewing <lewing@novell.com>
6529 * frameworkelement.cpp:
6530 * uielement.cpp (DoMeasure): reorder some calls to improve speed
6531 until the new logic lands.
6533 2009-04-29 Larry Ewing <lewing@novell.com>
6535 * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
6536 reduce Deployment::GetCurrent calls.
6539 * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
6542 2009-04-29 Larry Ewing <lewing@novell.com>
6545 * dependencyobject.cpp: reuse types to reduce calls to
6546 Deployment::GetCurrent ().
6548 2009-04-29 Alan McGovern <alan.mcgovern@gmail.com>
6550 * popup.cpp: Forgot to call the base Dispose method.
6552 2009-04-29 Geoff Norton <gnorton@novell.com>
6554 * debug.cpp: Not everyone in the world is 32-bit intel.
6556 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
6558 * textblock.cpp (SetTextInternal): Protect everything from
6559 reentrancy and never replace the autocreated InlineCollection with
6560 a newly allocated one. Instead, Clear() the old one and add the
6562 (OnCollectionChanged): If !setvalue, then it means we are updating
6563 stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
6565 2009-04-29 Andreia Gaita <avidigal@novell.com>
6567 * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
6568 parseable stacktraces for later visualization
6570 2009-04-29 Andreia Gaita <avidigal@novell.com>
6572 * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
6573 calls in a nice way, for later parsing and visualization.
6575 2009-04-29 Geoff Norton <gnorton@novell.com>
6577 * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
6578 nicely crashes on a incomplete .so (thanks). As such we're going to
6579 sha1 the expected binary before blindly installing it to gatekeep
6582 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
6584 Fixes some cursor position/selection bugs
6586 * layout.cpp (TextLayoutLine): Initialize a new member variable
6588 (Layout): Update line->count (needed for the reworking of
6589 GetCursor) and line->length (which was the case of the bugs)
6590 variables as we go. Switch to doing this for run->length too.
6591 (GetCursor): Reworked a bit to use character indexes to help us
6592 find the correct cursor position rather than using byte offsets
6593 which were more awkward.
6595 2009-04-29 Alan McGovern <amcgovern@novell.com>
6598 * popup.cpp: Remove the attached layer correctly when the
6599 surface is being nulled on a Popup.
6601 2009-04-29 Geoff Norton <gnorton@novell.com>
6604 * provider.cpp: GetIterator returns a ref'd iter, we need to delete
6605 it when we're done to clean it up.
6606 * dependencyproperty.g.cpp: You raise me up.
6607 * deployment.cpp|h: Deployment has a cyclic reference to things
6608 stored in it (AssemblyParts, NameScope), we need to break this cycle
6609 in our disposer so they can be properly cleand up.
6610 * xaml.cpp: If we create a new collection, and set the collection as
6611 some objects value, it will have a refcount of 2. We need to unref
6612 the collection once we've handed it off.
6614 2009-04-28 Geoff Norton <gnorton@novell.com>
6616 * popup.cpp: We cannot access this local value here since its been
6617 cleared in our dispose call.
6619 2009-04-28 Geoff Norton <gnorton@novell.com>
6621 * deployment.cpp: Now that we properly shut down the clocks and
6622 media threads, we can finalize the domain here instead of pumping
6625 2009-04-28 Chris Toshok <toshok@ximian.com>
6627 * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
6628 address of a temporary.
6630 2009-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
6633 * audio.cpp: When looping over playing nodes, don't include
6634 nodes in the Waiting state.
6636 * audio-alsa.cpp: when Played, update the poll list. The state
6637 might not actually have changed if only the Waiting flag was
6640 2009-04-28 Larry Ewing <lewing@novell.com>
6647 * frameworkelement.h:
6648 * frameworkelement.cpp: add FrameworkProvider for actual*
6649 values. Rework layout using the actual* values and add a first
6650 pass at looping layout.
6653 * collection.h: Add a deep tree walker that allows you to walk the
6654 entire tree without recursing.
6661 * canvas.cpp: rework layout logic for the new providers and handle
6662 more of the corner cases.
6665 * textblock.cpp: Remove the old Actual* provider since we use the
6666 generic one now. Go a bit crazy with Invalidations until they can
6669 * eventargs.cpp: stop using IsAnythingDirty.
6671 2009-04-28 Larry Ewing <lewing@novell.com>
6673 * dependencyobject.cpp:
6678 * timesource.h: rework the priority of our event queue so that
6679 we end up being more responsive to input and give the browser a
6680 chance to do things like repaint.
6682 2009-04-28 Jackson Harper <jackson@ximian.com>
6684 * xaml.cpp: Don't allow x:Class on non top level elements.
6686 2009-04-28 Jackson Harper <jackson@ximian.com>
6688 * dependencyproperty.cpp: When resolving property paths if we
6689 don't have enough info to lookup the correct managed type we just
6690 verify that the current lookup object has the correct type name,
6691 excluding namespace.
6693 2009-04-28 Alan McGovern <amcgovern@novell.com>
6698 * contentcontrol.cpp: Add the ability to stop ContentControl
6699 from automatically setting the LogicalParent when a
6700 FrameworkElement is added as the Content.
6702 2009-04-27 Jackson Harper <jackson@ximian.com>
6704 * value.cpp: property path's have expanded paths that need to be
6705 copied, freed, ect now.
6706 * propertypath.h: Add an expanded path to the property path, this
6707 is a path with managed types marked with namespaces expanded into
6708 full names. So 'moon:MyType' becomes something like
6709 'MoonNamespace.MyType'.
6710 * dependencyproperty.cpp: If an expanded path is available use
6711 that for property path parsing. Also added support for the ' mark
6712 for escaping full type names (otherwise full names could not have
6713 '.'s). The ' can only be used in expanded paths.
6714 * xaml.cpp: When parsing property paths expand out managed
6715 namespaces if possible.
6717 2009-04-27 Geoff Norton <gnorton@novell.com>
6719 * value.cpp: Its possible for these pointers to be 0x0 here, so
6720 we need to guard against a invalid dereference causing a SIGSEGV
6721 fixes moon-unit with toggleref on.
6723 2009-04-27 Geoff Norton <gnorton@novell.com>
6725 * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
6727 2009-04-24 Chris Toshok <toshok@ximian.com>
6729 It turns out the granularity of overriding in styles is at the
6730 setter level, not the style level. so if you have a local style
6731 with a setter for Background, it doesn't overwrite the default
6732 style setters for, say, Foreground. We handle this by having two
6733 style providers, with the local style provider overriding the
6734 default style provider.
6736 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
6737 initialize both of the style providers (at both LocalStyle and
6738 DefaultStyle levels.)
6739 (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
6740 style (so that values are converted in managed-land), and seal it
6741 at the local style level.
6742 (FrameworkElement::SetDefaultStyle): same blob here, but seal it
6743 at the default style level.
6745 * dependencyobject.cpp (DependencyObject::Initialize): pass
6746 precedences to the providers in their ctors, and also don't
6747 initialize a style provider here. This saves us from having a
6748 style provider on anything except frameworkelement subclasses.
6750 * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
6751 precedence ctor arg to property value providers.
6753 * provider.h: provider ctors now take both an object and a
6754 precedence level. that way they know what precedence level to
6755 notify changes on (this is mostly for the style provider, but it
6756 moves all the precedence level logic to the spot where we create
6757 the provider, not in the provider code itself.)
6759 * provider.cpp: add all the precedence ctor args.
6760 (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
6761 with the precedence we were initialized with.
6762 (AutoCreatePropertyValueProvider::GetPropertyValue): same.
6764 2009-04-24 Alan McGovern <amcgovern@novell.com>
6766 * runtime.cpp: When a layer is being detached, don't try to
6767 invalidate its bounds if the active window has already been
6768 torn down. Fixes the case where a popup is open while the
6769 window is being torn down.
6771 2009-04-24 Alan McGovern <amcgovern@novell.com>
6774 * popup.cpp: When the popup is detached from the surface, it
6775 should automatically close if it is open.
6777 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
6779 * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
6780 lwsp after going beyond the width constraint. Fixes the
6781 tests in the far right in MS DRT 206.
6783 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
6785 * font.cpp (GetGlyphInfo): Don't special-case
6786 ZeroWidthNonBreakingSpace anymore. Rely on the font for this
6787 glyph. That seems to be what SL2 does now...
6789 * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
6790 implemenetd a forced-wrap if we can't find a suitable place to
6793 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
6795 * layout.cpp (layout_word_wrap): Don't treat special numeric
6796 punctuation as the start of a numeric word until we see what lays
6799 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
6801 * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
6802 anymore, that was a 1.0-thing and can no longer be used. Also
6803 added support for non-breaking-glue classes as well as rules for
6804 breaking on combining-marks, open-punctuation, contingents,
6805 quotations, prefixes, and words starting with an infix.
6807 2009-04-23 Chris Toshok <toshok@ximian.com>
6809 * animation.cpp|.h, clock.cpp|.h: remove
6810 OnSurfaceAttach/OnSurfaceDetach. They're no longer used.
6812 2009-04-23 Chris Toshok <toshok@ximian.com>
6814 * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
6815 clock state and use that to tell whether to update the child
6816 clocks on this tick. Clock::UpdateFromParentTime will change it
6817 out from under us, and child clocks won't get updated the last
6818 time when we switch to Filling or Stopped.
6820 2009-04-23 Chris Toshok <toshok@ximian.com>
6822 * animation.cpp (Animation::AllocateClock): remove the name
6823 setting from here, since it only works here if the target/property
6824 were set on the animation itself.
6825 (AnimationClock::HookupStorage): and move it here, when we know
6826 both the target and property.
6828 * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
6829 Class::Event instead of instance->Event. also set the name of the
6830 storyboard in debug mode.
6831 (MultiScaleImage::SetViewportOrigin): same.
6832 (motion_finished): make static.
6834 2009-04-23 Chris Toshok <toshok@ximian.com>
6836 * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
6837 clocks (not clockgroups, mind you) if we're active and not paused.
6838 Fixes animations reverting in lutz's deep zoom demo.
6840 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
6842 Lots of fixage for MS DRT #209
6844 * layout.cpp (layout_word_wrap): Fixed for inseparables,
6845 exclamations, ambiguous, and postfix. Also removed the
6846 glyph->index == 0 hack that was there for Silverlight 1.0
6848 2009-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
6850 * dependencyobject.h:
6851 * dependencyobject.cpp: Add a way to mark allow objects to be
6852 deleted on any thread, not just the main thread.
6854 * pipeline.cpp: MediaClosures can be deleted on any thread.
6856 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
6858 * layout.cpp (layout_word_wrap): Add a bit more logic for infix
6859 separators. Finishes off MSDRT 208.
6861 2009-04-22 Chris Toshok <toshok@ximian.com>
6863 * xaml.cpp (value_from_str): permit empty int32's (they're 0).
6864 add comment about empty doubles.
6866 2009-04-22 Chris Toshok <toshok@ximian.com>
6868 * xaml.cpp (dependency_object_add_child): guard against adding an
6869 empty Value to a resource dictionary. this happen when you have
6870 no content on a primitive type (<sys:Bool></sys:Bool>) and
6871 value_from_str can't deal with parsing an empty string.
6872 (value_from_str): for non-object/non-string types, we need to
6873 strip leading/trailing whitespace before attempting to parse. this
6874 allows things like: <sys:Bool> true </sys:Bool>
6875 (class XamlElementInstanceValueType): for empty elements the value
6876 will have never been set. try to set it here using an empty
6879 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
6881 * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
6882 SelectionLength values as they come in. Apparently this is what
6883 Silverlight does too.
6885 2009-04-22 Chris Toshok <toshok@ximian.com>
6887 * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
6888 with true meaning "i need another tick."
6889 (ClockGroup::UpdateFromParentTime): same.
6891 * timeline.cpp (DispatcherTimer::Start): use the timemanager to
6893 (DispatcherTimer::Run): use the root_clock's parent clock here to
6894 simplify the code a bit.
6895 (DispatcherTimer::~DispatcherTimer): same.
6897 * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
6898 we don't care about groups, just add it to the deployment's
6901 * timemanager.h|cpp (class RootClockGroup): new class to represent
6902 the root clock group created by a time manager to house all other
6903 clocks in a surface. It has slightly different behavior from a
6904 noprmal clock group, particularly wrt putting the timemanager to
6906 (TimeManager::TimeManager): create a RootClockGroup.
6907 (TimeManager::RemoveTickCall): if we're putting the time manager
6908 to sleep, check to see if this was the last tick call, and clear
6909 the flag (and stop the source if the flags are now empty).
6910 (TimeManager::NeedRedraw): now that clock smoothing isn't used,
6911 source->SetTimerFrequency() can't be called with whatever timeout
6912 we like and have it migrrate back to the user-specified time. so
6913 change 0 to current_time.
6914 (TimeManager::NeedClockTick): same.
6915 (TimeManager::AddTickCall): same.
6916 (TimeManager::SourceTick): remove the #if'ed out version with
6917 clock smoothing, and add back in the stuff to put the time manager
6918 to sleep (currently ifdef'ed out still)
6919 (TimeManager::AddClock): move the logic to delay the root clock
6920 group here out of Storyboard::Begin. This is because we also want
6921 to do this with DispatcherTimers as well. Given that there is no
6922 TimeManager::GetRootClock anymore, this is the only api to add
6925 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
6927 * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
6928 the 'in' ptr to inend.
6930 * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
6932 2009-04-22 Rusty Howell <rhowell@novell.com>
6934 * building libmoonxpi for the FF plugin
6936 2009-04-21 Chris Toshok <toshok@ximian.com>
6939 (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
6940 but hopefully worth the hotspot reduction. do fast checks to see
6941 if we're even dealing with a property that's inheritable first.
6942 cache the Types* pointer instead of indirectly fetching it
6943 repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
6946 2009-04-21 Jeffrey Stedfast <fejj@novell.com>
6948 * glyphs.cpp (Layout): Fixed scaling calculation.
6950 * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
6951 and LayoutWrap. The different word-wrapping behaviors are, as
6952 before, handled in different subroutines but the outer loops are
6955 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
6957 * textblock.cpp (SetTextInternal): Don't break the string into
6958 multiple inlines, Silverlight shoves the entire string into a
6959 single Run no matter what.
6960 (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
6961 character instead of \n to match Silverlight behavior.
6963 * layout.cpp: Fixed various loops and checks to properly handle
6964 any type of unicode line-breaking character.
6966 2009-04-21 Alan McGovern <amcgovern@novell.com>
6968 * collection.h: HitTestCollection should override
6969 RemovedFromCollection the same way it overrides
6970 AddedToCollection so that items added/removed from the
6971 collection are not reparented.
6973 2009-04-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
6975 * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
6977 2009-04-20 Chris Toshok <toshok@ximian.com>
6979 * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
6980 this method. Also, don't multiply to compute localTime only to
6981 turn around and divide to compute normalizedTime. normalizedTime
6982 is always the factor we multiply natural_duration_timespan by.
6984 2009-04-20 Chris Toshok <toshok@ximian.com>
6986 * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
6987 textblock autocreator here, and stop using TextBlock vs. Control
6988 for the font size names, as both textblock and controls have the
6989 varying font size. There's also no reason to make them public
6990 anymore. if you want the font size, just call GetFontSize().
6992 * control.h: FontSize uses an autocreator now, and remove the
6995 * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
6996 of the #define, and while we're at it just replace the other
6997 defines with calls to the getters too.
6999 * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
7000 now), and the #define for font_size.
7002 * dependencyproperty.g.cpp: regen.
7004 2009-04-20 Chris Toshok <toshok@ximian.com>
7006 * security.c (security_enable_coreclr): version the
7007 MOON_DISABLE_SECURITY variable.
7009 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
7011 * textblock.cpp (TextBlock): Removed cached TextFontDescription
7012 since it's only ever used in 1 place and even then it's a corner
7015 2009-04-20 Chris Toshok <toshok@ximian.com>
7017 * timeline.cpp: fix up DispatcherTimers after I broke them by
7018 removing the clock event.
7020 2009-04-19 Chris Toshok <toshok@ximian.com>
7022 * eventargs.h|.cpp: add RenderingEventArgs type.
7024 * timemanager.cpp (TimeManager::SourceTick): the render event
7025 takes a RenderEventArgs, even though the type of the event is
7026 EventHandler. Goes a long way toward fixing DRT #394 and fixes
7029 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
7032 2009-04-19 Chris Toshok <toshok@ximian.com>
7034 * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
7035 default for the various shapes (Fill if a rectangle or ellipse,
7036 None for all other types). Fixes part of DRT #508.
7037 (Rectangle::Rectangle): don't set the default value as a local
7039 (Ellipse::Ellipse): same.
7041 2009-04-19 Jeffrey Stedfast <fejj@novell.com>
7043 * textblock.cpp (DefaultFontSize): New function to get the default
7044 font size for a TextBlock (or Inline) based on the Silverlight
7045 context (XAP vs XAML).
7047 2009-04-19 Chris Toshok <toshok@ximian.com>
7049 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7050 inlines inherit their Language from the textblock, and textblocks
7051 inherit it from frameworkelements. part of fix for drt #952.
7053 2009-04-18 Chris Toshok <toshok@ximian.com>
7055 * clock.h|.cpp: move to the holy grail of a functional clock
7056 setup. this removes Clock::Tick and related additive machinery
7057 that introduces errors into various calculations. instead we use
7058 the fact that a child's time can be expressed as a function of its
7059 parent's time. more calculation per-frame, perhaps, but less
7060 problems wrt inflection points like autoreverse/repeat points.
7061 This removes *tons* of difficult to read and impossible to
7062 understand code, and brings clocks and clockgroups a lot closer.
7063 Docs coming soon to a source file near you.
7065 * timeline.h|.cpp: various clock-related changes. 2 notables are
7066 the fact that all Timelines have a completed event now instead of
7067 just storyboards (because Clocks are also emitting completed now,
7068 not just ClockGroups), and DispatcherTimers now subclass from
7069 Timeline instead of TimelineGroup. We also use a virtual method
7070 instead of an event handler for ticking DispatcherTimers.
7072 * animation.h|.cpp: more clock fallout. Also, rewrite
7073 HookupAnimationsRecurse so that we propagate the current
7074 target/property as parameters instead of requiring a search back
7075 up the tree at ever level.
7077 * timemanager.cpp: more clock rewrite stuff. Set the surface
7078 clockgroup's duration to forever instead of automatic, and switch
7079 from ->Tick to ->UpdateFromParentTime.
7081 * multiscaleimage.cpp: track changes to storyboard api (basically
7082 i removed the non-WithError methods.. maybe i should put them
7085 * cbinding.h|.cpp, type-generated.cpp: regen.
7087 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
7089 * glyphs.cpp (Layout): Pass our StyleSimulations along to
7090 GetGlyphInfo() so that we can simulate Bold or Italics as the user
7093 * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
7094 argument (which defaults to None). Adjust the glyph for Bold
7095 and/or Italics if requested.
7096 (TextFont::GetGlyphInfo): Now takes a StyleSimulations
7097 argument (which defaults to None). When looking up the glyph in
7098 the cache, make sure that the simulations also match. When loading
7099 a new glyph, pass along the StyleSimulations.
7101 2009-04-17 Larry Ewing <lewing@novell.com>
7103 * runtime.cpp (Surface): remove references to removed variable.
7105 2009-04-17 Chris Toshok <toshok@ximian.com>
7107 * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
7108 getter/setter here, and move XapLocation from surface to here.
7110 * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
7112 * downloader.cpp: use Deployment::GetXapLocation
7114 * cbinding.h|chinding.cpp: regen.
7116 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
7118 * font.h: Changed the glyph cache size to be #defined rather than
7119 hard-coded everywhere.
7121 2009-04-17 Jackson Harper <jackson@ximian.com>
7123 * xaml.cpp: When we are setting the Name property use the same
7124 trick we are using for setting the x:Name property. Grabbing the
7125 parent element and making sure we get registered in that
7126 namescope. This isn't perfect, but should fix 95% of the managed
7129 2009-04-17 Alan McGovern <amcgovern@novell.com>
7132 * type-generated.cpp: Correctly mark Popup.Child as its
7135 2009-04-17 Geoff Norton <gnorton@novell.com>
7137 * media.cpp: Ensure that we invalidate the image if the
7138 BitmapImage has already been parsed (like from a SetSource call)
7140 2009-04-17 Geoff Norton <gnorton@novell.com>
7142 * error.cpp: Image errors use the code 4001, fixes #97
7144 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
7146 * glyphs.cpp (Layout): Don't bail if we have something other than
7147 StyleSimulationsNone.
7149 * enums.h (enum StyleSimulations): Added Bold, Italic, and
7152 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
7154 * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
7155 already unref them upon destruction.
7157 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
7159 * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
7160 of our inlines' fonts have changed - if they all override the font
7161 family, then there's no need to redraw.
7163 2009-04-16 Jackson Harper <jackson@ximian.com>
7165 * dependencyobject.cpp: Unregister the old name when we set an
7168 2009-04-16 Sebastien Pouliot <sebastien@ximian.com>
7170 * openfile.cpp|h: Add a dialog requester to increase isolated
7171 storage quota. Add function to recursively compute the total size
7172 of a directory, which is used to check quota in IS.
7174 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
7176 * deployment.cpp: mono_gc_invoke_finalizers may cause the
7177 current appdomain to change, so restore it afterwards. Fixes
7178 a rare, random crash upon shutdown.
7180 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7182 * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
7183 invalidating the TextBoxBase, we need to emit an event to let the
7184 TextBoxView know our font has changed.
7185 (TextBoxView::OnModelChanged): Reset state on the layout when the
7186 font changes (since it has no way of knowing that the font has
7189 * textblock.cpp (Inline::UpdateFontDescription): Return true if
7190 the font has changed or false otherwise.
7191 (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
7192 return true and reset the state on the TextLayout.
7194 * font.cpp (TextFontDescription::Set*): Return true if the font
7195 has changed or false otherwise.
7197 * layout.cpp (TextLayout::ResetState): New method to reset the
7198 state of a TextLayout. Normally the state only gets reset if a
7199 layout property chanegs, but sometimes it is necessary to notify
7200 the TextLayout engine of a state change in one of the
7201 TextLayoutAttributes.
7203 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7205 * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
7206 xap resource, download it from the web.
7208 * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
7209 resource, download it from the web.
7211 2009-04-15 Larry Ewing <lewing@novell.com>
7213 * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
7216 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7218 * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
7219 glib until 2.10, so so guard to allow building on systems with
7220 older versions of glib. Also merged BREAK_NEXT_LINE and
7221 BREAK_UNKNOWN into the BREAK_AFTER group.
7223 2009-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
7225 * runtime.cpp: Don't support versions of the type "1.0..0".
7226 Fixes a test case in MS DRT #21.
7228 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
7230 * downloader.cpp (Downloader::Open): fix the argument passed to
7233 2009-04-15 Alan McGovern <amcgovern@novell.com>
7235 * utils.cpp: We need to increment the pointer otherwise we
7238 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
7240 * downloader.cpp (Downloader::Open): make the relative uris relative to
7242 (check_redirection_policy, Downloader::Write): don't use
7243 uri->originalString, but uri->ToString ()
7245 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
7247 * runtime.h|cpp (Surface): xap_location, Get() and Set()
7249 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
7251 * layout.cpp (layout_word_wrap): Fixed word-break logic for
7252 ambiguous break-types. Fixes second column of text in test #208.
7254 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
7256 * layout.cpp (layout_word_wrap): Fixed word-breaking around a
7257 BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
7259 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
7261 * deepzoomimagetilesource.h: expose IsDownloaded()
7262 * multiscaleimage.cpp: download the tile source for the subimage before
7263 downloading the un-shared tiles.
7265 2009-04-14 Andreia Gaita <avidigal@novell.com>
7267 * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
7268 indicates frame could not be decoded. fixes uninitialized buffer
7269 size leading to huge memory allocation and abort. kudos to
7270 Alp Toker for spotting this.
7272 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
7274 * layout.cpp (layout_word_wrap): Added support for Hangul and
7275 ideographic word breaking. Improves test #208 quite a bit.
7277 2009-04-14 Larry Ewing <lewing@novell.com>
7280 * control.cpp (InsideObject): always return fals controls don't
7281 handle the testing. Fixes MSI navigation in
7282 http://playboy.covertocover.com/
7285 * panel.cpp: remove HitTest stubs.
7287 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
7289 * layout.cpp (layout_word_wrap): Added logic to for breaking after
7290 more break-types including BREAK_AFTER, BREAK_HYPHEN, and
7291 BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
7292 behavior on test #206.
7294 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
7296 * layout.cpp (utf8_strlen): Removed, this has never been sued.
7297 (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
7298 no longer has this wrapping bug.
7299 (layout_word_wrap): Don't need to check if we're at the last word
7300 in the textblock because Silverlight 2.0 fixed this bug.
7301 (FindLastWord): Removed, no longer needed.
7303 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7306 * playlist.cpp: Don't try to open the media if an error has
7309 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7313 * mediaelement.cpp: Check for markers with a timeout instead
7314 of after rendering a frame, this way markers also work with
7317 2009-04-14 Jackson Harper <jackson@ximian.com>
7319 * dependencyobject.cpp|h: Add a return value for SetName with
7320 namescope, returns false if there is an error.
7321 * xaml.cpp: Check the return value of SetName
7323 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
7325 * uri.cpp (Combine): strip leading ../ as we're already cutting the
7326 filename off the base uri
7328 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7346 * timemanager.cpp: Added @GeneratePInvoke to all methods used
7347 in managed code. For C++ methods also generate the
7348 corresponding C method.
7351 * cbinding.cpp: Regenerated.
7353 2009-04-13 Jeffrey Stedfast <fejj@novell.com>
7355 * textblock.cpp (SetFontResource): If we cannot get the resource
7356 from within the xap, then we need to spawn a downloader to fetch
7359 2009-04-13 Geoff Norton <gnorton@novell.com>
7361 * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
7364 2009-04-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
7368 2009-04-12 Jeffrey Stedfast <fejj@novell.com>
7370 * debug.cpp (hexdump_addr): New function to help toshok print a
7371 hexdump of memory from gdb.
7373 * textbox.cpp (TextBoxBase::SetFontResource): Set the font
7374 filename/guid based on the resource provided.
7375 (TextBoxBase::OnPropertyChanged): If a font resource is named in
7376 the FontFamily property, then call SetFontResource() with the
7377 provided resource name.
7378 (TextBox::ClearFontSource): Clear the FontSourceProperty.
7379 (PasswordBox::ClearFontSource): Same.
7381 2009-04-11 Chris Toshok <toshok@ximian.com>
7383 * provider.h|.cpp, dependencyobject.cpp: get rid of
7384 PropertyPrecedence_Animation and the associated provider. in SL,
7385 animations are considered local values (and a choir of angels was
7386 heard moaning as they fell on their swords).
7388 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
7390 * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
7391 FT_Streams and setup their own FT_Open_Args instead. This solves
7392 the crasher problems in the silverlight2 test harness.
7394 * textblock.cpp (Inline::SetFontResource): New method to update
7395 our FontFilenameProperty and FontGUIDProperties.
7396 (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
7397 that reference a resource.
7398 (Inline::UpdateFontDescription): Parse out the family name from
7399 the FontFamily::Source.
7401 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
7403 * textblock.cpp (TextBlock::SetFontResource): Renamed from
7404 SetFontSource() to be more accurate.
7406 * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
7407 fail. This is probably what was causing the crash on
7410 * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
7411 than a string and returns a bool argument hinting at whether we
7413 (OnPropertyChanged): Only fall back on creating a downloader for
7414 the font if the uri is not a resource.
7416 2009-04-11 Jackson Harper <jackson@ximian.com>
7418 * xaml.cpp: If we are hydrating we don't need the extra ref.
7420 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
7422 * uri.cpp (ToString): Made to accept const Uri*
7424 * textblock.cpp (SetFontSource): Parse the resource string into a
7425 Uri and pass that along to GetResourceAsPath().
7427 * glyphs.cpp (SetFontResource): Parse the resource string into a
7428 Uri and pass that along to GetResourceAsPath().
7430 * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
7433 * application.cpp (GetResource): Oops, this really does need a Uri
7435 (GetResourceAsPath): Use a Uri here too, and convert any ';' into
7438 2009-04-10 Jackson Harper <jackson@ximian.com>
7440 * xaml.cpp: Let the XamlElementInstances cleanup their Values.
7442 2009-04-10 Chris Toshok <toshok@ximian.com>
7444 * timemanager.cpp (TimeManager::SourceTick): just for kicks
7445 completely rip out the clock smoothing code, and also emit all
7446 tick calls (don't worry about how much time we're taking in them).
7447 Lastly, emit tick calls *before* rendering. we need to do this or
7448 else the Loaded event won't be posted before we draw (when we
7449 delay the loaded event, that is.) which leads to a great many
7450 VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
7451 flag for the initial children z-sorting.
7453 * collection.cpp (VisualTreeWalker::Step): add a special case for
7454 collection::count == index == 1, which is what we end up with on
7455 uielement's with a subobject. it won't be a collection child of a
7456 panel, so it'll never be z-sorted, but since it's only 1 element
7457 it doesn't need to be anyway.
7459 * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
7460 to Panel. Also, move the ZIndex OnCollectionItemChanged code into
7463 * panel.h|.cpp: remove a couple of unused
7464 decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
7467 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
7469 * font.cpp (OpenFaceByIndex): New helper function split out from
7470 FontFace::LoadFontFace() which performs the FT_Open_Face() and
7471 family name matching.
7472 (OpenFaceByFamily): If we don't have an index, this function opens
7473 all faces in the file and finds a matching font face based on
7475 (LoadFontFace): Use our new helper functions.
7477 * textblock.cpp (SetFontSource): On fail, set the font filename to
7478 NULL and call UpdateFontDescriptions() no matter what.
7480 * font.cpp (UnsetFields): Allow unsetting of the font index.
7481 (Merge): Merge the index separately.
7482 (SetIndex): Set/unset the FontMaskIndex bit.
7484 * glyphs.cpp (SetFontResource): New internal method to set a font
7486 (OnPropertyChanged): Handle non-absolute Uris as resource streams.
7488 2009-04-10 Larry Ewing <lewing@novell.com>
7490 * multiscaleimage.cpp: add a translucency check before calling
7491 cairo_paint_with_alpha.
7493 2009-04-10 Jeffrey Stedfast <fejj@novell.com>a
7495 * textblock.cpp (SetFontSource): New method for setting a font
7496 source via a resource name.
7497 (OnPropertyChanged): When the FontFamily changes, parse out the
7498 resource name (if it exists) and set that as our font source.
7500 * bitmapimage.cpp (UriSourceChanged): Updated.
7502 * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
7504 * application.cpp (GetResourceAsPath): New helper method to get a
7505 specified resource as a filesystem path.
7506 (GetResource): Now takes a resource name rather than a Uri.
7508 * utils.cpp (CanonicalizeFilename): New function to canonicalize a
7510 (ExtractAll): New helper function to extract all files from a zip
7511 archive into a specified directory.
7513 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
7515 * textblock.cpp (CleanupDownloader): New helper method.
7516 (SetFontSource): Use CleanupDownloader() and also clear the
7517 FontSourceProperty since this will override that source.
7518 (OnPropertyChanged): Parse the FontFamily name.
7519 (DownloaderComplete): Use SetValue() correctly.
7521 * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
7524 2009-04-10 Sebastien Pouliot <sebastien@ximian.com>
7526 * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
7527 all coreclr-related code from being compiled.
7529 2009-04-09 Chris Toshok <toshok@ximian.com>
7531 * uielement.cpp (UIElement::WalkTreeForLoaded): be more
7532 descriptive with the "attempting to use a null application" thing.
7534 * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
7535 that were missing. we need to make this less fragile, and have it
7536 use the event strings in type-generated.cpp.
7537 (end_element_handler): add more text to the line about attempting
7538 to use a null application, so we can differentiate it from the
7541 * timeline.h (class Timeline): BeginTime has, in fact, a default
7544 * dependencyproperty.g.cpp: regen.
7546 2009-04-09 Jeffrey Stedfast <fejj@novell.com>
7548 * textblock.h, textbox.h: Added FontSourceProperty.
7550 * value.cpp|h: Added FontSource support.
7552 * fontsource.h: Added.
7554 2009-04-09 Sebastien Pouliot <sebastien@ximian.com>
7556 * cbinding.cpp|h: regenerated
7557 * openfile.cpp|h: Add save_file_dialog_show to implement
7558 SaveFileDialog (SL3) and refactor the filter code to be shared.
7559 * runtime.cpp|h: Rename can_full_screen to user_initiated_event
7560 since we need it for SaveFileDialog (and elsewhere too). Rename
7561 setter and add a getter with a c binding.
7563 2009-04-09 Jackson Harper <jackson@ximian.com>
7565 * xaml.cpp|h: We need to create Value*'s from strings/files now
7566 instead of just creating dependencyobjects, it's legal to create a
7567 managed object from xaml that isn't a DOB.
7568 - Add a couple utility methods for creating just DOBs from
7570 * cbinding.cpp: regen
7573 * runtime.cpp: Updated method names
7575 2009-04-08 Geoff Norton <gnorton@novell.com>
7577 * downloader.cpp: Ensure that when someone subscribes to NotifySize
7578 they actually will get notified of the size.
7580 2009-04-08 Geoff Norton <gnorton@novell.com>
7582 * glyphs.cpp: Ensure we dont pass an unitialized pointer to
7583 TextFontDescription::SetFilename
7585 2009-04-08 Andreia Gaita <avidigal@novell.com>
7587 * dependencyobject.cpp: enable toggleref
7588 conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
7590 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
7592 * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
7593 isn't a .odttf file.
7595 2009-04-08 Geoff Norton <gnorton@novell.com>
7597 * pipeline.cpp: Ensure we dont try to decode if our stream has been
7600 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
7602 * downloader.cpp (validate_policy): Don't delete source here, we
7605 * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
7606 the file extension is .odttf. Also no need to stat() anymore.
7608 * textblock.cpp (DownloaderComplete): Same.
7610 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
7612 * provider.cpp (InheritedPropertyValueProvider): We need to
7613 inherit FontGUIDProperty for Inlines as well.
7615 * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
7616 deobfuscation features.
7618 * glyphs.cpp (DownloaderCompleted): Don't need to call
7619 downloader_deobfuscate_font() anymore. We only need to get the
7620 GUID to set on the FontDescription.
7622 * textblock.cpp (DownloaderCompleted): Same.
7624 * font.cpp: Implemented our own FT_Stream that can handle reading
7625 obfuscated fonts directly without the need to rewrite the file
7627 (TextFontDescription): Now has a GUID property for Glyphs and
7630 * downloader.cpp: Fixed to autogenerate the accessors and changed
7631 the UriProperty type to a Uri to be consistent with other classes.
7632 (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
7634 2009-04-08 Geoff Norton <gnorton@novell.com>
7636 * deployment.cpp: Ensure that we restore to the current MonoDomain
7637 after creating a new deployment.
7639 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
7641 * multiscaleimage.h|cpp: Set IsDownloading property according to the
7642 status of the downloaders
7644 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
7646 * multiscaleimage.cpp (MultiScaleImage::RenderSingle,
7647 MultiScaleImage::RenderCollection): do not start any new download if
7648 AllowDownlodingProperty is false.
7650 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
7652 * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
7654 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
7656 * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
7659 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
7661 * multiscaleimage.cpp: some additional debug info printing the state of
7664 2009-04-07 Chris Toshok <toshok@ximian.com>
7666 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7667 almost had it that last time. In the case where the parent has
7668 that property, use GetValue on it instead of ReadLocalValue, which
7669 won't pick up styles.
7671 2009-04-07 Chris Toshok <toshok@ximian.com>
7673 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7674 rewrite this substantially to make it work correctly and be more
7675 efficient. we no longer look up the hierarchy for properties
7676 which aren't inheritable, and we only loop up the visual tree, not
7677 the logical one (since that has issues when it comes to
7679 (get_parent): nuke, it was a broken way to deal with parents.
7681 2009-04-07 Chris Toshok <toshok@ximian.com>
7683 * uielement.h|.cpp (class UIElement): scrap that ill-advised
7684 AutoCreator crap. it's much simpler. the default is actually
7685 NULL, and the managed layer does the stupid mapping from NULL to
7686 new MatrixTransform.
7688 2009-04-07 Chris Toshok <toshok@ximian.com>
7690 * uielement.h|.cpp (class UIElement): use an AutoCreator for
7691 RenderTransformProperty.
7693 * dependencyproperty.g.cpp: regen.
7695 2009-04-07 Larry Ewing <lewing@novell.com>
7697 * grid.cpp (MeasureOverride): use the star fraction of the
7698 available size when measuring.
7700 * border.cpp: restrict the return value to available size.
7702 2009-04-07 Geoff Norton <gnorton@novell.com>
7704 * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
7705 to the media thread from any thread. Fixes seeking on SmoothHD
7708 2009-04-07 Geoff Norton <gnorton@novell.com>
7710 * bitmapimage.cpp|h: Ensure we stop getting events from any
7711 active downloaders once we're disposed.
7712 * brush.cpp|h: Ensure we stop getting events from any
7713 active BitmapImages once we're disposed.
7715 2009-04-07 Jeffrey Stedfast <fejj@novell.com>
7717 * glyphs.cpp (CleanupDownloader): New helper method.
7718 (DownloadFont): Don't delete the uri after we're done, we do not
7720 (OnPropertyChanged): Use Uri::IsNullOrEmpty().
7722 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
7724 * runtime.cpp: layers is an EventObject, unref instead of
7727 * collection.h: Have a protected dtor so that nobody can
7728 delete this class directly ever again.
7730 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
7732 * runtime.cpp: Add a few null checks.
7734 2009-04-07 Stephane Delcroix <sdelcroix@novell.com>
7736 * application.cpp: uri->ToString() allocates memory, free it after
7739 2009-04-06 Chris Toshok <toshok@ximian.com>
7741 * runtime.cpp|.h (Surface::Attach): split this method effectively
7742 in half: stuff we do before the loaded events are fired, and stuff
7743 we do after. The second half is in Surface::ToplevelLoaded. This
7744 fixes playboy.covertocover.com coming up, as the alert that
7745 vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
7746 to screw with our async events.
7748 2009-04-06 Chris Toshok <toshok@ximian.com>
7750 * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
7751 flesh this method out some. I don't like the walks we have to do
7752 here. Also, rename this to *WithError so we can report the error
7753 back to managed land from here instead of doing it in C#.
7755 * cbinding.cpp|.h: regen.
7757 2009-04-06 Chris Toshok <toshok@ximian.com>
7759 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
7760 in case we didn't notify listeners, output the moon error if there
7763 2009-04-06 Chris Toshok <toshok@ximian.com>
7765 * xaml.cpp (value_from_str): quiet spew (which in this case
7766 indicates an error when there isn't one.)
7768 2009-04-06 Chris Toshok <toshok@ximian.com>
7770 * brush.h: include imagesource.h, not bitmapimage.h
7772 * brush.cpp: include bitmapimage.h here.
7774 2009-04-06 Geoff Norton <gnorton@novell.com>
7776 * bitmapimage.cpp: Stop leaking the resource here.
7778 2009-04-06 Geoff Norton <gnorton@novell.com>
7780 * codec-version.h.in: Bump
7782 2009-04-06 Geoff Norton <gnorton@novell.com>
7784 * application.cpp: We want ToString here, not just the path of the
7786 * bitmapimage.cpp|h: We need to do this async, since the events
7787 might be registered in managed code before a yield.
7789 2009-04-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
7791 * security.c: Add jtr.dll to the list of platform assemblies,
7792 it's an assembly used by managed tests which contains unsafe
7793 code and pinvoke methods.
7795 2009-04-06 Stephane Delcroix <sdelcroix@novell.com>
7797 * multiscaleimage.h: ad the 3.0 DPs and property accessors
7799 2009-04-05 Chris Toshok <toshok@ximian.com>
7801 * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
7802 managed subclasses can register a delegate.
7804 * cbinding.cpp|.h: regen.
7806 2009-04-04 Geoff Norton <gnorton@novell.com>
7808 * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
7810 2009-04-04 Geoff Norton <gnorton@novell.com>
7812 * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
7814 2009-04-04 Geoff Norton <gnorton@novell.com>
7816 * media.h: Removed unused define
7817 * mediaplayer.cpp|h: We need to support RGBA video formats now, so
7818 lets track what the decoder is giving us (pass-thru is the only decoder
7819 which will provide RGBA from MSS, we still pass around yuv and rgb
7820 internally). If the format is RGBA we have to incur a one-frame penalty
7821 to recreate our cairo surfaces.
7822 * pipeline.cpp|h: Support RGBA pixel formats. Don't support RGB from
7823 MediaStreamSource. Mark the pass-thru frames as decoded.
7825 2009-04-04 Chris Toshok <toshok@ximian.com>
7827 * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
7829 * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
7830 cbinding.h|.cpp: regen.
7832 2009-04-03 Chris Toshok <toshok@ximian.com>
7834 * animation.h: add EasingFunctionProperty to
7835 Color/Double/PointAnimation.
7837 * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
7838 easing function, apply it to progress.
7839 (ColorAnimation::GetCurrentValue): if there's an easing function,
7840 apply it to progress.
7841 (PointAnimation::GetCurrentValue): if there's an easing function,
7842 apply it to progress.
7844 * easing.h, easing.cpp: implementations of all the easing
7845 functions. still missing are BounceEase and ElasticEase.
7847 * enums.h, enums.cpp (enum EasingMode): new enum.
7849 * Makefile.am: add easing.h/easing.cpp
7851 * type.h, type-generated.cpp, cbinding.h|.cpp,
7852 dependencyproperty.g.cpp, value.h: regen.
7854 2009-04-03 Geoff Norton <gnorton@novell.com>
7856 * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
7857 which renders garbage on the screen on amd64.
7859 2009-04-03 Aaron Bockover <abockover@novell.com>
7863 * dependencyproperty.g.cpp:
7864 * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
7865 by Moonlight.Gtk.XamlHost
7867 2009-04-03 Larry Ewing <lewing@novell.com>
7870 * popup.cpp: Make sure that we hide any active layers when Child
7871 changes and that we show any new ones. Fixes part of
7872 PopupExample2. Give IsOpen a default value.
7876 2009-04-03 Chris Toshok <toshok@ximian.com>
7878 * animation.h: remove a couple of ancient (and unused) method and
7879 function declarations, and re-order
7880 public/private/protected (seriously, this makes my eyes bleed.)
7881 Also move the "internal classes" to the end.
7883 2009-04-03 Chris Toshok <toshok@ximian.com>
7885 * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
7886 since that's for compatability with 1.0, which we no longer are.
7888 2009-04-03 Alan McGovern <amcgovern@novell.com>
7890 * textbox.h: TextBox does validation in both the getter and
7891 setter of its TextProperty, so we have to manually implement
7894 2009-04-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
7896 * security.c: Include "config.h" to get
7897 MONO_ENABLE_CORECLR_SECURITY.
7899 2009-04-02 Aaron Bockover <abockover@novell.com>
7901 Do not build code that requires Mono 2.5 or better in the case where
7902 we want Moonlight to run only in an embedded desktop app scenario; in
7903 this case, CoreCLR security and non-default app domains are not needed
7905 * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
7906 is not defined, this function is now a noop
7908 * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
7909 not implement app domain loading/unloading; factor out all common init
7910 code that was duplicated in both ctors into InnerConstructor
7912 * deployment.h: Define InnerConstructor
7914 2009-04-02 Larry Ewing <lewing@novell.com>
7917 * uielement.cpp: move the bulk of the paint ftb logic from surface
7918 to here since we will be using this in more places. Make some of
7919 the ftb logic protected now.
7922 * writeablebitmap.h:
7923 * writeablebitmap.cpp: Land Geoff's initial Render implementation
7928 2009-04-02 Larry Ewing <lewing@novell.com>
7932 * runtime.cpp: Treat full_screen_message as another layer. Make
7933 sure that we mark layers as loaded. Popups should render now.
7935 2009-04-02 Alan McGovern <amcgovern@novell.com>
7937 * runtime.cpp: the real toplevel element must always be at
7938 position 0 in the layers list. Fixes the situation where we
7939 open a popup before setting attaching the surface.
7941 2009-04-02 Stephane Delcroix <sdelcroix@novell.com>
7943 * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
7944 linear animation, animate for 4 secs instead of .4, use steep spline
7945 to start fast finish smoothly. For botn panning and zooming.
7947 2009-04-02 Alan McGovern <amcgovern@novell.com>
7951 * dependencyproperty.g.cpp: The Child property has similar
7952 validation to a ContentControl. Fixes three tests.
7954 2009-04-02 Alan McGovern <amcgovern@novell.com>
7963 * dependencyproperty.g.cpp: Popups are treated as top level
7964 elements which are rendered on top of all other elements. To
7965 handle this a list of all toplevel elements (layers) is kept
7966 in the surface. Mouse events are captured within a toplevel
7967 element and not visible to other toplevel elements.
7969 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
7971 * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
7972 not to the center of the control
7974 2009-04-01 Andreia Gaita <avidigal@novell.com>
7976 * window-gtk.cpp: Only connect the scroll-event signal if we're
7977 not running on the desktop (otherwise, gecko won't get the
7980 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
7982 * uri.h: no longer expose GetOriginalString(), it leads to buggy
7985 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
7989 * deepzoomimagetilesource.cpp: g_free the memory allocated by
7992 2009-04-01 Chris Toshok <toshok@ximian.com>
7994 * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
7995 the (desktop extension -ized) button check here. this wouldn't be
7996 necessary if the plugin could insert its signal handler before the
7997 window's, but alas, gtk...
7999 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8001 * application.cpp (GetResource): use the uri path, not
8004 2009-04-01 Jeffrey Stedfast <fejj@novell.com>
8006 * expression.cpp|h: Removed from the build.
8007 not running on the desktop (otherwise, gecko won't get the
8010 2009-04-01 Chris Toshok <toshok@ximian.com>
8012 * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
8013 extensions are turned on, allow button 3 (right mouse).
8014 (Surface::HandleUIButtonPress): same.
8016 * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
8017 non-button 1 presses here.
8019 2009-04-01 Chris Toshok <toshok@ximian.com>
8021 * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
8022 sign here so we have the same behavior that lutz's demo expects
8025 2009-04-01 Geoff Norton <gnorton@novell.com>
8027 * uri.cpp|h: Add IsNullOrEmpty
8028 * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
8030 2009-04-01 Geoff Norton <gnorton@novell.com>
8032 * bitmapimage.cpp: Ensure we deregister the events too.
8034 2009-04-01 Geoff Norton <gnorton@novell.com>
8036 * bitmapimage.cpp: If the UriSource is changed, then we should abort
8037 and clean up any existing downloaders.
8039 2009-04-01 Geoff Norton <gnorton@novell.com>
8041 * brush.cpp: ImageSource is a nullable property so we need to new
8042 one up here if we dont have one already.
8044 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8046 * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
8047 and creating cairo surfaces.
8049 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8051 * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
8054 2009-04-01 Chris Toshok <toshok@ximian.com>
8056 * uielement.h (class UIElement): add
8057 MouseRightButton{Down,Up}Event and MouseWheelEvent.
8059 * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
8061 (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
8063 * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
8065 * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
8067 (MoonWindowGtk::EnableEvents): connect the scroll-event.
8068 (MoonWindowGtk::InitializeCommon): if desktop extensions are
8069 enabled, add GDK_SCROLL_MASK.
8071 * xaml.cpp (xaml_is_valid_event_name): if we're running with
8072 desktop extensions, expose the right button events and mouse
8075 * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
8077 2009-03-31 Jeffrey Stedfast <fejj@novell.com>
8079 * enums.h: Well what do ya know... TextWrapping enum wasn't the
8080 same as the TextWrapping.cs enum, this is likely the case of some
8081 text layout wonkyness.
8083 * textblock.cpp (TextBlock::MeasureOverride): Set the
8084 ActualWidth/Height DP values here after calling Layout(), this
8085 seems to be what Silverlight does (can't be set in FWE::Measure()
8086 because it doesn't have the actual extents, it just has the
8087 desiredSize). Also don't reset dirty back to true after laying out
8089 (TextBlock::Layout): Restructured slightly.
8091 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8093 * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
8094 originalstrings aren't updated on Uri::Combine ().
8096 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8098 * bitmapimage.h: Set a DefaultValue for ProgressProperty
8100 2009-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
8102 * src.mdp: Updated some project files.
8104 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8106 * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages
8109 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8111 * multiscaleimage.h|.cpp: remove the AddTickCall workaround for
8112 the race while emitting ImageOpenSucceded. Test if the source is
8113 a deepzoom before casting (avoid g_warnings on the console). Change a
8116 2009-03-30 Chris Toshok <toshok@ximian.com>
8118 * timemanager.cpp|.h: split this out from clock.cpp|.h
8120 * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
8121 libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
8122 timeline.cpp, uielement.cpp: track the above change.
8124 * Makefile.am: add timemanager.cpp|.h
8126 * cbinding.h, type-generated.cpp: regen
8128 2009-03-30 Geoff Norton <gnorton@novell.com>
8130 * bitmapsource.cpp: When caching a native surface ensure we dont
8131 destroy it on every GetSurface pass, but we do clean it up in
8134 2009-03-30 Chris Toshok <toshok@ximian.com>
8136 * application.h, border.h, contentcontrol.h, control.h,
8137 cornerradius.h, deployment.h, expression.h, frameworkelement.h,
8138 grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
8139 transform.h, type.h, usercontrol.h: remove @SilverlightVersion
8140 metadata attributes.
8143 2009-03-30 Chris Toshok <toshok@ximian.com>
8145 * downloader.h: add pinvokes for a few of the downloader_* C
8148 * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
8149 AddTickCall, and remove the manual implementation.
8151 * dependencyobject.h (class EventObject): add a PInvoke for
8152 event_object_get_surface.
8154 * cbinding.h, cbinding.cpp: regen
8156 2009-03-30 Sebastien Pouliot <sebastien@ximian.com>
8158 * security.c: Ensure mono_assembly_setrootdir is always called
8159 while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
8160 variable and the availability of a platform directory.
8162 2009-03-30 Geoff Norton <gnorton@novell.com>
8164 * brush.h: Brush.ImageSource is stupid, and of course not consistent
8166 * bitmapimage.cpp: Nuke some debug spew.
8167 * dependencyproperty.g.cpp: Funky cold medina.
8169 2009-03-30 Larry Ewing <lewing@novell.com>
8171 * brush.cpp (OnPropertyChanged): check for the right property and
8172 fixup a harmless typo.
8174 * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
8176 2009-03-30 Jeffrey Stedfast <fejj@novell.com>
8178 * font.cpp (FontFace::GetExtents): Instead of calculating our
8179 ascent/descent and height values from 2 different ways, calculate
8180 ascent/descent the same way we calculated height. This seems to
8181 give slightly more accurate results (previous logic rounded up to
8182 the nearest whole pixel for ascent/descent).
8184 2009-03-30 Geoff Norton <gnorton@novell.com>
8186 * media.h: Hide some API that never should have been public.
8187 * media.cpp: ImageBrush no longer uses a image internally.
8188 * bitmapimage.cpp|h: Part name is a const char * since we dup
8190 * brush.cpp|h: Migrate away from using a Image internally
8191 and consume the new BitmapImage API.
8193 2009-03-30 Geoff Norton <gnorton@novell.com>
8195 * bitmapimage.cpp: Ensure we fall back to downloading if we
8196 cannot find the image as a resource.
8198 2009-03-30 Chris Toshok <toshok@ximian.com>
8200 * deployment.h|.cpp: combing the desktop and browser cases (the
8201 desktop case coming from jeff's patch) into one method, where the
8202 different root_domain behavior is determined by the boolean
8205 * runtime.cpp (runtime_init): pass an initial boolean to
8206 Deployment::Initialize to tell whether or not we should create the
8207 root domain (i.e. whether or not we should initialize mono.)
8208 (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
8210 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
8212 * security.c: Revert latest fix, the buildbots aren't ready
8215 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
8217 * security.c: Always call mono_assembly_setrootdir, even if
8218 CoreCLR is disabled. This should fix buildbots where
8219 mono/mcs and moonlight are installed into different
8222 2009-03-30 Geoff Norton <gnorton@novell.com>
8224 * media.cpp: Stop leaking a cairo pattern in Image::Render
8226 2009-03-30 Stephane Delcroix <sdelcroix@novell.com>
8228 * deepzoomimagetilesource.cpp: revert latest change, don't advance
8229 twice. Fixes collections.
8231 2009-03-29 Chris Toshok <toshok@ximian.com>
8233 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8234 add a sanity check here to make sure the autocreated value is of a
8237 * animation.h|.cpp: remove the /*Timeline*/ comments from
8238 everywhere -- stop pretending the type names are the same as WPF.
8240 2009-03-29 Geoff Norton <gnorton@novell.com>
8242 * media.cpp: Ensure that the ImageSource we get is a BitmapImage
8243 before treating it as such.
8245 2009-03-29 Geoff Norton <gnorton@novell.com>
8247 * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
8248 writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
8249 imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
8250 Update the image based source to have a properly implemented
8251 BitmapImage. I've also moved all this code to the SL3 API which
8252 injects a BitmapSource in between ImageSource and BitmapImage,
8253 and adds support for WriteableBitmap.
8255 Basically now all the cairo logic lives in ImageSource and
8256 BitmapSource. All the pixbuf loader logics and downloader logic
8257 is isolated in BitmapImage.
8259 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
8260 type.h, value.h: Regenerate
8262 2009-03-29 Chris Toshok <toshok@ximian.com>
8264 * provider.h, provider.cpp, dependencyproperty.h: change
8265 AutoCreator signature to take the DependencyObject as the first
8268 2009-03-29 Chris Toshok <toshok@ximian.com>
8270 * dependencyproperty.h|.cpp: rework the autocreate functionality.
8271 instead of a boolean flag, we pass a function pointer. We keep
8272 IsAutoCreated() around (just func != NULL) and add
8273 GetAutoCreator() so the AutoCreateProvider can call the method
8274 when it needs a value.
8276 Also, remove the empty ctor since it doesn't initialize any
8277 fields (and it also isn't called.)
8279 * provider.h (class AutoCreators): new class, containing the
8280 default autocreator which just calls type->CreateInstance().
8282 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8283 call the property's AutoCreator function if there is one.
8284 (AutoCreators::default_autocreator): new function for the default
8285 case. basically some code that was ripped out of
8288 * dependencyproperty.g.cpp: regen.
8290 2009-03-29 Chris Toshok <toshok@ximian.com>
8292 * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
8293 tree in OnLoaded, don't do anything at all if we're already
8296 2009-03-29 Chris Toshok <toshok@ximian.com>
8298 * eventargs.h: consistenfy everything, and make
8299 CollectionChangedEventArgs fields private, not public. add
8302 * dependencyobject.h (PropertyChangedEventArgs): make
8303 old_value/new_value private and add accessors.
8305 * *.cpp|.h: track the above changes.
8307 2009-03-29 Chris Toshok <toshok@ximian.com>
8309 * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
8311 * dependencyobject.cpp:, provider.cpp: track above change.
8313 2009-03-28 Sebastien Pouliot <sebastien@ximian.com>
8315 * deployment.cpp|h (Initialize): If a platform directory is
8316 specified then we initialize the CoreCLR security model.
8317 * runtime.cpp|h: Initialize the runtime using the plugin
8318 directory (when applicable, i.e. browser mode).
8319 * security.c|h: New. Handle the CoreCLR security model
8320 initialization and platform code detection.
8321 * Makefile.am: Add security.[c|h] to the build
8323 2009-03-28 Jeffrey Stedfast <fejj@novell.com>
8325 * frameworkelement.cpp (OnPropertyChanged): Instead of setting
8326 ActualWidth/Height to 0 in the non-LayoutContainer case, use
8327 ClearValue() those properties instead. Fixes some TextBlock cases.
8329 * textblock.cpp (GetSize): Check isnan() rather than 0.
8330 (Render): The dirty flag should never be set at this point, so
8331 don't bother with it. Set TextLayout's AvailableWidth to our
8333 (ArrangeOverride): Don't set dirty back to true after we've
8334 arranged, this is why dirty was true in ::Render()
8336 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
8338 * textblock.cpp (Layout): Fixed the special-case logic. If no text
8339 has ever been set, then the extents should be 0,0. However, if
8340 they have ever been set but the text is currently empty, then use
8341 the font height as the ActualHeight value. Use a state variable to
8342 check if the text has ever been set rather than trying to check
8343 other things which are not reliable.
8345 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
8347 * size.h (Size::GrowBy): If the width or height are infinite going
8348 in, then leave them infinite going out.
8350 * textblock.cpp (TextBlock::GetSize): New method to get the
8352 (TextBlock::Render): Use GetSize() instead of GetRenderSize().
8353 (class TextBlockDynamicPropertyValueProvider): Same.
8355 2009-03-27 Chris Toshok <toshok@ximian.com>
8357 * uielement.h (class UIElement): add LostMouseCaptureEvent.
8359 * type-generated.cpp: regen.
8361 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8363 * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
8364 subimage collection items changed.
8366 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8368 * multiscalesubimage.h|.cpp:
8369 * multiscaleimage.cpp: remove the link to msi parents and don't try to
8370 Invalidate from subimage.
8372 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8374 * collection.cpp: do not use generated cbinding in
8375 MultiScaleSubImageZIndexComparer.
8377 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8379 * multiscalesubimage.h: set a default ZIndex value
8381 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
8383 * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
8384 update the TextLayout's text and attributes.
8385 (TextBlock::OnPropertyChanged): If the Text or Inlines properties
8386 change, immediately call UpdateLayoutAttributes().
8387 (TextBlock::Layout): No longer sets up the TextLayout's attributes
8388 as this is already done. Also no longer takes a cairo_t argument
8389 since it's never used, instead it now takes a Size constraint
8391 (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
8392 (TextBlock::MeasureOverride): Rewritten / simplified.
8393 (TextBlock::ArrangeOverride): Same.
8394 (class TextBlockDynamicPropertyValueProvider): Updated.
8395 (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
8396 on the Inline that changed.
8397 (TextBlock::UpdateFontDescriptions): New method to update the font
8398 descriptions on all inlines.
8399 (TextBlock::OnPropertyChanged): Update the font descriptions on
8400 all inlines whenever a font property changes.
8401 (TextBlock::SetFontSource): Call UpdateFontDescriptions().
8402 (TextBlock::DownloaderComplete): Same.
8404 * textbox.cpp (TextBoxView::Render): Set the layout's
8405 AvailableWidth to the render size width.
8406 (TextBoxView::Layout): Don't worry about constraint.width being
8407 INFINITY anymore, TextLayout() now handles INFINITY.
8409 * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
8410 and max width/height constraints, use NAN and
8411 INFINITY (respectively). This will prevent TextBox/Block from
8412 having to use hacks if their width/height constraints are
8414 (TextLayout::HorizontalAlignment): Since MaxWidth might be
8415 INFINITY, we need to base this on a new property called
8416 AvailableWidth, which is the width available for rendering (where
8417 MaxWidth is only used for wrapping).
8419 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
8421 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8422 After finding the baseUri's filename, advance beyond the / before
8423 passing it to uri->Combine().
8425 * uri.cpp (Uri::Combine): If the uri has no path and the
8426 relative_path does not begin with a /, don't prepend one.
8428 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
8430 General cleanup of the TextBoxBase abstraction.
8432 * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
8434 (PasswordBox::SyncDisplayText): Generate a masked password string
8435 using the specified PasswordChar.
8436 (PasswordBox::SyncText): Call SyncDisplayText ().
8437 (PasswordBox::OnPropertyChanged): When the PasswordProperty
8438 changes, call SyncDisplayText().
8439 (PasswordBox::GetDisplayText): Override TextBoxBase's to return
8440 our masked password string.
8441 (PasswordBox::ctor): Initialize display text
8442 (PasswordBox::dtor): Delete display text.
8443 (TextBox::GetDisplayText): Simply return GetText ()
8445 2009-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
8447 * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
8450 2009-03-27 Jackson Harper <jackson@ximian.com>
8452 * xaml.cpp: Despite the docs saying differently
8453 (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
8454 sys:Boolean is also legal. (I wonder what else is).
8456 2009-03-27 Jackson Harper <jackson@ximian.com>
8458 * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
8460 - When we are populating the context resource dictionaries we need
8461 to include elements that are resource dictionaries not just
8462 elements have have dictionaries. This fixes elements looking up
8463 items in their top level RD (like in generic xaml).
8465 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8467 * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
8468 '/', are relative uris.
8470 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8472 * multiscaleimage.cpp: if a tile is already being downloaded, don't
8473 start a 2nd downloader for the same uri.
8475 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8477 * deepzoomimagetilesource.cpp: Uris composed of a single file name
8478 are fine too. don't discriminate !
8480 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8482 * uri.cpp: fix Combine when the original path is a single file,
8483 without a leading '/'
8485 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8487 * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
8488 the overloaded ctor now that we have a proper Uri struct
8490 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8492 * uri.h, uri.cpp: add Combine (const Uri*).
8494 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
8496 * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
8498 2009-03-26 Chris Toshok <toshok@ximian.com>
8500 * deployment.h|.cpp: be a little more fragile (and a lot less
8501 evil) about the way we're exposing Mono types in our headers.
8502 just put a typedef for MonoDomain in deployment.h instead of
8503 including appdomain.h. Include appdomain.h from deployment.cpp.
8505 2009-03-26 Chris Toshok <toshok@ximian.com>
8507 * uielement.h|.cpp (class UIElement): add the ability to do
8508 instant and delayed emission of Loaded events.
8509 (UIElement::PostSubtreeLoad): perhaps poorly named, but the
8510 @load_list is a list of UIElement which will be walked in order in
8511 a tick call, emitting OnLoaded on all of them.
8512 (UIElement::EmitSyncLoaded): walk the same list as would be passed
8513 to PostSubtreeLoad, emitting it now.
8514 (UIElement::WalkTreeForLoaded): this does a post-order tree walk
8515 building up the list which is passed to PostSubtreeLoad or
8516 EmitSubtreeLoad. The out bool parameter tells us whether we
8517 should delay the emission or not. Currently the only thing that
8518 delays emission is a control with a style applied (even a default
8519 style.) We also set a PENDING_LOADED flag on all elements during
8521 (UIElement::OnLoaded): no longer walk the tree here. only emit
8522 Loaded on this one element. Clear the PENDING_LOADED flag while
8524 (UIElement::ElementAdded): complicate matters slightly here so
8525 that it follows the following two rules:
8527 1) if @this is loaded, walk the tree and either emit or post the
8528 load based on what the out param tells us to do.
8530 2) if @this is pending_loaded, walk the tree and always post.
8532 * frameworkelement.h (class FrameworkElement): unfortunately we
8533 need access to "default_style_applied" from UIElement.
8535 * control.h|.cpp: remove OnLoaded implementation from here.
8537 * runtime.cpp (Surface::Attach): move the Loaded handling *after*
8538 the zombie check. not sure why we were ever doing it before. but
8539 most importantly, this always Posts the loaded state, it doesn't
8540 emit it synchronously. This allows us to do the changes in
8541 Application.cs/Deployment.cs that are needed to get ncaa working.
8543 2009-03-26 Chris Toshok <toshok@ximian.com>
8545 * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
8546 out the code that allows other events to be used. Maybe in SL3
8549 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
8551 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8552 from a new TextBoxBase class which handles almost all of the logic
8555 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8557 * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
8559 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
8561 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
8562 from a new TextBoxBase class which handles almost all of the logic
8565 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
8567 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
8568 Use the new Uri::Combine() method.
8570 * uri.cpp (Uri::Combine): New method to combine a relative path to
8573 2009-03-26 Chris Toshok <toshok@ximian.com>
8575 * animation.cpp, clock.cpp: move some class-static fields around
8576 so they make more sense.
8578 2009-03-26 Chris Toshok <toshok@ximian.com>
8580 * clock.h: move enum FillBehavior...
8582 * enums.h: ... to here.
8584 2009-03-26 Chris Toshok <toshok@ximian.com>
8586 * animation2.h: nuke, moving everything into animation.h.
8588 * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
8589 the timesource/timeline stuff into separate files to reduce
8590 clock.cpp's size/complexity a bit.
8592 * mediaplayer.cpp, mediaelement.cpp, media.cpp,
8593 mms-downloader.cpp: track new locations of things (that were moved
8594 out of clock.h|.cpp)
8596 * cbinding.h, cbinding.cpp, type-generate.cpp,
8597 dependencyproperty.g.cpp: regen.
8599 * Makefile.am: add/remove files.
8601 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8603 * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
8604 with an aspect_ratio < 1.0 (portrait images).
8606 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8608 * multiscaleimage.h|.cpp: replace the single downloader code by
8609 a list of downloader, speed up downloading a lot. (Set --arbitrary--
8610 to 6 dlders for now)
8612 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8614 * multiscaleimage.h|.cpp: Download directly from Render*
8616 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8618 * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
8619 as cache key, use the new get_image_uri_func everywhere.
8621 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
8624 * deepzoomimagetilesource.h|.cpp: change the signature of
8625 get_image_uri_func. It returns a bool indicating success, the Uri is
8626 now a method arg, and no longer returned as a string pointer. Fixes
8627 some random crashes with managed tilesoources.
8629 2009-03-25 Chris Toshok <toshok@ximian.com>
8631 * uri.h (struct Uri): add accessor methods for all of the fields.
8632 The fields are still public for now, since a few places (e.g.,
8633 plugin-debug, playlist), make direct modifications.
8635 * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
8636 glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
8637 accessors when getting values.
8639 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
8641 * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
8644 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
8646 * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
8647 argument to enums_int_to_str() anymore.
8649 * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
8650 no longer exists, don't bother checking it. If the target is other
8651 than the Loaded event, we need to treat the whole thing as
8652 Silverlight2 anyway.
8654 * runtime.cpp (Surface::Surface): No longer takes a silverlight2
8655 argument or keeps such a flag.
8656 (Surface::EmitEventOnList): Don't need to care about the
8658 (Surface::HandleUIKeyPress): Same.
8659 (Surface::HandleUIKeyRelease): Here too.
8661 * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
8662 (enums_int_to_str): Same.
8664 * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
8666 (value_from_str): Same.
8667 (convert_value_type): Same.
8668 (xaml_set_property_from_str): Same.
8670 2009-03-25 Geoff Norton <gnorton@novell.com>
8677 * frameworkelement.cpp:
8678 * frameworkelement.h:
8679 * type-generated.cpp:
8682 * xaml.cpp: Bindings live 100% in managed land now
8684 2009-03-25 Alan McGovern <amcgovern@novell.com>
8686 * animation.cpp: Revert the changes in r130133 as they
8687 resulted in double frees of the Value *.
8689 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
8691 * value.cpp (Value::FreeValue): Don't dereference uri if it is
8694 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
8696 * multiscaleimage.cpp: emit ViewportChanged
8698 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
8700 * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
8702 2009-03-25 Jackson Harper <jackson@ximian.com>
8704 * xaml.cpp: Can put this back now that bindings are convertering
8705 strings properly. Don't try to create a value object if we are
8706 just going into managed anyways.
8708 2009-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
8711 * runtime.cpp: Move IsVersionSupported implementation here,
8712 add GetBackgroundColor and sprinkle generator annotations.
8715 * cbinding.cpp: Regenerated.
8717 2009-03-25 Alan McGovern <amcgovern@novell.com>
8719 * uri.cpp: Scheme was being used uninitialised if the if
8720 (!*start) check succeeded.
8722 2009-03-24 Chris Toshok <toshok@ximian.com>
8724 * playlist.cpp (PlaylistParser::OnASXStartElement): use
8726 (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
8728 * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
8729 *scheme)" so we can stop twiddling internals.
8731 2009-03-24 Chris Toshok <toshok@ximian.com>
8733 * downloader.cpp: s/protocol/scheme for Uris
8735 * playlist.cpp: s/protocol/scheme for Uris
8737 * uri.h, uri.cpp: s/protocol/scheme for Uris.
8739 2009-03-24 Chris Toshok <toshok@ximian.com>
8741 * uri.cpp: do as much as we can to get isAbsolute set correctly.
8743 2009-03-25 Andreia Gaita <avidigal@novell.com>
8745 * clock.h: remove unused timeline field
8747 2009-03-25 Andreia Gaita <avidigal@novell.com>
8749 * clock.cpp: Refresh the clock's duration, it might have changed
8752 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
8754 * value.cpp (Value::Value): If the input value has a NULL uri,
8755 don't call Uri::Copy(), simply set the new uri to NULL too.
8757 * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
8758 members in the 'to' argument. This should never happen anymore,
8759 but if it does, don't allow 'to' to have invalid pointers.
8761 2009-03-24 Jackson Harper <jackson@ximian.com>
8763 * xaml.cpp: Need to make this a little smarter, revert for now
8764 because it breaks hardrock.
8766 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
8768 * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
8769 actual_height extents if the text is "".
8771 * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
8772 set NULL text on the layout so that we won't crash inside
8773 TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
8775 2009-03-24 Jackson Harper <jackson@ximian.com>
8777 * xaml.cpp: Don't attempt to convert values if we are going to
8778 managed anyways. This prevents things that can be created easily
8779 from strings being created from expressions.
8781 2009-03-24 Jackson Harper <jackson@ximian.com>
8784 * animation.cpp: Use an OBJECT for the Value property.
8785 * dependencyproperty.g.cpp: Regen
8787 2009-03-24 Stephane Delcroix <sdelcroix@novell.com>
8789 * uri.h|uri.cpp: new Equals () methods, so we can use its generated
8790 cbinding as GCompareFunc.
8792 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
8794 * pipeline.cpp: Fix breakage.
8796 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
8799 * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
8800 gives ready-to-present data. Make it handle pcm, rgb, rgba
8805 * type-generated.cpp: Regenerated.
8807 2009-03-23 Stephane Delcroix <sdelcroix@novell.com>
8809 * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
8810 changes to keep working
8812 2009-03-23 Jeffrey Stedfast <fejj@novell.com>
8814 * uri.cpp (Uri::operator==): If all the != compares pass, return
8815 true. Don't let control reach the end of a non-void function!
8817 * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
8818 position changed event.
8820 2009-03-23 Chris Toshok <toshok@ximian.com>
8822 * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
8823 due to vertigo doing some weird stuff that I don't fully
8824 understand :) but in the interest of not requiring every usage to
8825 include a null check, init originalString to g_strdup("") here.
8827 2009-03-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
8829 * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
8832 2009-03-23 Chris Toshok <toshok@ximian.com>
8834 * uri.cpp (Uri::Copy): return immediately if @from == null.
8836 2009-03-21 Chris Toshok <toshok@ximian.com>
8838 * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
8839 to Application:GetResource.
8841 * application.[h,cpp] (Application::GetResource): this takes a Uri
8842 instead of a string now.
8844 2009-03-21 Chris Toshok <toshok@ximian.com>
8846 * uri.[h,cpp]: a few changes:
8847 1. Add "bool isAbsolute" and "char* originalString" fields.
8848 2. Remove Clone and add a static Copy method which Value can use
8849 to copy all the internal fields.
8851 4. make it a struct so we'll only box when explicitly asked to in
8853 5. add an operator== so we can do non-reference comparisons in
8856 * dependencyobject.h,
8857 dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
8860 * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
8862 * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
8864 * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
8867 * media.cpp: source->GetUriSource() returns a Uri*
8869 * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
8871 * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
8874 * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
8875 the Value ctor does that for us.
8877 * xaml.cpp (value_from_str): add Type::URI case, and rework the
8878 Type::BITMAPIMAGE case to use a Uri object.
8880 * validators.[h,cpp]: rename NonNullStringValidator to
8881 NonNullValidator. All uses before didn't depend on the
8882 "string"-ness of the value, and we can make use of it for the Uri
8885 * value.h.in, value.cpp: add Uri support, and remove
8888 * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
8891 * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
8893 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
8895 * textbox.cpp (TextBoxView::UpdateText): Split out from
8896 TextBoxView::Layout(). Sets the text on the layout engine.
8897 (TextBoxView::Layout): Moved most of the logic into UpdateText()
8898 and the rest into Render(). We now just set the MaxWidth and lay
8900 (TextBoxView::Render): If dirty, after calling Layout(), call
8901 UpdateCursor(false) and clear the dirty flag.
8902 (TextBoxView::OnModelChanged): If the text changes, update it
8903 immediately on our layout context by calling UpdateText().
8904 (TextBoxView::SetTextBox): Call UpdateText() here as well and make
8905 it more robust against a NULL textbox argument.
8907 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
8909 * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
8910 context argument since it never actually uses it anyway.
8911 (TextBoxView::MeasureOverride): Don't create a temporary cairo
8912 context since it never gets used.
8913 (TextBoxView::ArrangeOverride): Same.
8915 2009-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
8919 * pipeline-asf.cpp: Re-implement fallback to http when mms
8922 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
8924 * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
8927 2009-03-20 Jackson Harper <jackson@ximian.com>
8929 * xaml.cpp: Make sure we go to managed when using property element
8930 syntax for setting properties of managed kinds.
8932 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
8934 * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
8935 larger than the current ActualWidth (and no wrapping has been
8936 done), then no need to re-layout. This should help improve
8937 performance of many cases of TextBox/Block MeasureOverride() and
8939 (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
8940 set is_wrapped to true.
8941 (TextLayout::LayoutWrap): Same.
8942 (TextLayout::Layout): Reset is_wrapped to false before laying out
8945 2009-03-19 Larry Ewing <lewing@novell.com>
8947 * multiscaleimage.cpp (RenderSingle): move the clipping to the
8948 outer loop here too.
8950 2009-03-19 Larry Ewing <lewing@novell.com>
8952 * multiscaleimage.cpp (RenderCollection): rework the collection
8953 rendering slightly by moving the subimages out of the loop.
8955 2009-03-18 Chris Toshok <toshok@ximian.com>
8957 * dependencyobject.cpp (unregister_depobj_names): another side of
8958 the TagProperty coin. don't unregister names from it, since we
8959 aren't registering names from it.
8960 (DependencyObject::SetParent): remove the USERCONTROL extra
8961 registration from here. it's not necessary now that jackson has
8962 fixed where we register the names.
8964 * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
8965 freeze the default value if the property is not custom.
8967 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
8969 Fixes a crash in the Microsoft.SilverlightControls
8970 ControlsExtended unit tests (specifically the DatePickerTest).
8972 * control.h (class Control): Set a DefaultValue for the Foreground
8975 * textblock.h (class TextBlock): Same.
8977 2009-03-18 Jackson Harper <jackson@ximian.com>
8979 * xaml.cpp: When we use x:Name to set an elements name, make sure
8980 that it gets set in the namescope of it's containing element.
8981 * dependencyobject.cpp|h: New method that allows setting objects
8982 name in a different namescope, this will also result in the name
8983 being set in the objects namescope.
8984 - Allow duplicate objects if they are the same object
8985 * namescope.cpp: Allow duplicates if they are the same object.
8987 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
8989 * textbox.cpp (TextBox::Initialize): Don't bother connecting to
8990 MouseEnter/Leave, we don't care.
8991 (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
8992 (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
8993 parent TextBox control.
8994 (TextBoxView::OnMouseLeftButtonUp): Same.
8996 * runtime.cpp (Surface::FocusElement): Don't do all the checks
8997 here, they are now done in Control::Focus().
8998 (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
8999 now expect this to be done in the MouseLeftButtonDown event
9002 * control.cpp (Control::Focus): New method to focus a control.
9004 2009-03-18 Jb Evain <jbevain@novell.com>
9006 * deployment.cpp: add a MOON_PROFILER environment variable
9007 to control profiling of the embedded mono.
9009 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9012 * pipeline.cpp: Remove unused field.
9014 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9016 * pipeline-asf.cpp: Fix visitmix.
9018 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9022 * deployment.cpp: Add signal handlers for crash detection in
9023 libmoon instead of libshocker, this way there's not a race
9024 condition between loading mono and installing a signal
9025 handler in libshocker (the signal handler has to get
9026 installed before loading mono, otherwise we'll crash for
9027 real due to managed exceptions getting caught by the signal
9030 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9032 * pipeline.cpp: More asserts.
9034 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
9036 * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
9039 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
9041 * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
9042 shadow the fname method argument, and don't leak if
9043 finfo.external_fa has the 4th bit set.
9045 2009-03-17 Chris Toshok <toshok@ximian.com>
9047 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9048 don't do the SetParent stuff (even when the value is a
9049 DependencyObject) if the property is UIElement::TagProperty. This
9050 fixes the cyclic tree warning in RichTextBox. Right now it's
9051 hardcoded to check for that property, but we need to move it to
9052 the DP metadata, and do an audit of other "typeof(object)" DP's to
9053 make sure we aren't setting parent where we shouldn't be.
9055 2009-03-17 Stephane Delcroix <sdelcroix@novell.com>
9057 * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
9059 2009-03-16 Jackson Harper <jackson@ximian.com>
9061 * template.cpp: It doesn't really change anything because
9062 templates are never parented, but technically they should be in non
9063 temporary namescopes.
9065 2009-03-16 Jeffrey Stedfast <fejj@novell.com>
9067 * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
9068 go up/down 'n' lines instead of always 1 if n wouldn't overflow.
9070 2009-03-16 Stephane Delcroix <sdelcroix@novell.com>
9072 * multiscaleimage.cpp:
9073 * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
9074 it on VP origin or width changed.
9076 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9078 * multiscaleimage.cpp: fix the clipping issue for collections
9080 2009-03-13 Chris Toshok <toshok@ximian.com>
9082 * type.h, type-generated.cpp: regen.
9084 2009-03-13 Chris Toshok <toshok@ximian.com>
9086 * xaml.cpp (value_from_str): in the int32 and int64 case, we need
9087 to parse until we get an invalid character, and return the value
9088 parsed up to that point. it's only an error if there's no valid
9091 2009-03-13 Chris Toshok <toshok@ximian.com>
9093 * textblock.h (class Inline): inlines don't permit multiple
9094 parents (Fixes RunTest.RunMultipleParents).
9096 2009-03-13 Geoff Norton <gnorton@novell.com>
9098 * xap.cpp: Zip files can contain directory entires, we shouldn't
9099 try to open them as files.
9101 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9104 * control.cpp: Added a null check to prevent crashes.
9106 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9109 * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
9110 and clean up upon shutdown.
9113 * pipeline.cpp: Remove a broken attempt to ensure that we
9114 don't leave Media threads running after having shut down.
9116 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9118 * playlist.cpp: Dispose: fix a typo - dispose the media not
9121 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9123 * playlist.cpp: DownloadProgressChangedHandler: Don't do
9124 anything if we've been disposed. Fixes a warning.
9126 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9128 * mediaelement.cpp: Dispose: We need to dispose the media
9131 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9133 * downloader.h: DownloaderResponse: Add virtual ref/unref
9136 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9138 * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
9139 crashes when we can't find a time manager. Also if we can't
9140 remove a timeout, we have to leak ourselves, otherwise the
9141 timeout might get called after we're destroyed.
9143 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9147 * type-generated.cpp: Added Deployment::ShuttingDownEvent.
9148 This will be used by MediaElement to ensure that all media
9149 threads are cleaned up even if the MediaElement itself is
9152 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9154 * multiscaleimage.cpp: no longer use precompiled table for morton
9155 layout, but use short and fast function in place.
9157 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9159 * multiscaleimage.cpp: check for null tiles uri returned by
9162 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9164 * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
9165 having to loop over all the tiles on every tick.
9167 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9169 * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
9170 toplevel element before disposing it, since the SetSurface
9171 will be propagated to all descendants, while Dispose will
9172 detach descendants (preventing subsequent SetSurface calls
9175 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9177 * mediaplayer.cpp: Open: when we add an event handler to the
9178 video stream's FirstFrameEnqueued event, the first frame
9179 might already be in the queue, so just call LoadVideoFrame
9180 once always. Fixes test-canvas-no-size.html.
9182 2009-03-12 Geoff Norton <gnorton@novell.com>
9184 * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
9186 2009-03-12 Geoff Norton <gnorton@novell.com>
9188 * deepzoomimagetilesource.cpp: Ensure we dont override default values
9189 if nothing has been provided in the XML
9191 2009-03-12 Geoff Norton <gnorton@novell.com>
9194 * animation.h: Implement SkipToFill
9196 2009-03-12 Larry Ewing <lewing@novell.com>
9198 * canvas.cpp: don't chain up the FE in the overides that is very
9201 2009-03-12 Chris Toshok <toshok@ximian.com>
9203 * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
9204 text demo when you click on the buttons. we need to be creating
9205 RoutedEventArgs, not EventArgs.
9207 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9209 * codec-version.h.in: Bump.
9211 2009-03-12 Alan McGovern <amcgovern@novell.com>
9213 * dependencyproperty.cpp: 1) Refactor the code so that
9214 open/closing parens are parsed in a separate step to
9215 typename/property name. Then merge the codepaths for the
9216 default and '(' case.
9217 2) Attached properties can only be specified inside parens. So
9218 "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
9219 3) For non-attached properties both "Rectangle.RadiusX" and
9220 "(Rectangle.RadiusX)" are acceptable.
9222 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9224 * pipeline.cpp: Add a null check.
9226 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9228 * audio.cpp: Use media's thread-safe event handling.
9231 * playlist.cpp: PlaylistRoot: keep a reference to our media
9232 player (i.e. don't use MediaElement's media player, it may
9233 change). Use the thread-safe event support in media.
9236 * mediaplayer.cpp: Use media's thread-safe event handling.
9237 Don't tick while waiting for the media to get the first
9238 frame, just attach an event handler to
9239 FirstFrameEnqueuedEvent.
9242 * pipeline.cpp: IMediaObject: Add thread-safe event support.
9243 Media: inherit from IMediaObject to get the thread-safe
9246 * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
9247 ignore ASFReader::Seek's result, handle it correctly.
9248 EnqueueGetFrame: requeue a get frame request if we don't
9249 have enough data yet.
9251 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9253 * pipeline.h: Move IMediaObject above Media so that Media can
9254 inherit from IMediaObject.
9256 2009-03-12 Andreia Gaita <avdigal@novell.com>
9258 * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
9259 started during the tick event; in some cases the time between these
9260 two calls was enough to have an extra tick on the time manager, and
9261 the DispatcherTimer would be advanced again even though it was
9262 stopped, and this would happen after the Completed handler was
9263 removed and before it was added again.
9264 Fixes the RestartTimer2 test and SilverlightChess.
9266 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
9268 * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
9269 brushes here anymore.
9270 (class TextBoxDynamicPropertyValueProvider): Return default
9271 selection brushes if they've been initialized (happens in
9272 TextBoxView::Render).
9273 (TextBoxView::Render): Initialize the selection brushes if they
9274 haven't already been.
9276 2009-03-11 Alan McGovern <amcgovern@novell.com>
9278 * dependencyproperty.cpp: Fix issues in resolve_property_path
9279 with some complex paths. Add two new NUnit tests which
9280 verify the correct properties are animated.
9282 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
9284 * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
9286 * downloader.cpp (downloader_deobfuscate_font): Moved here from
9287 text.cpp and made public.
9289 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
9291 * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
9294 2009-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
9296 * brush.cpp: ImageBrush::image_failed: we need to ref the
9297 eventargs when we do emit chaining.
9299 2009-03-11 Chris Toshok <toshok@ximian.com>
9301 * border.cpp (Border::OnPropertyChanged): Border is ever the red
9302 headed stepchild. It has its own validation wrt SetLogicalParent,
9303 that behaves like the InvalidOperationException case in
9304 FrameworkElement, but throws ArgumentException instead of IOE.
9306 2009-03-11 Chris Toshok <toshok@ximian.com>
9308 * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
9309 Top/Left property changed handling from OnSubPropertyChanged to
9310 here, and remove OnSubPropertyChanged. Basically property changes
9311 on items in collections are never communicated back using
9312 OnSubPropertyChanged. That is reserved for direct children of the
9313 object (fill/stroke brushes, etc.)
9315 * grid.h, grid.cpp: same.
9317 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
9318 remove this use of GetParent (yay!) since we don't implicitly
9319 notify our logical parent if an attached property was changed. we
9320 just notify all listeners.
9322 * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
9323 rename GetParent/SetParent to GetParentClock/SetParentClock.
9325 2009-03-10 Chris Toshok <toshok@ximian.com>
9327 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9328 hook up (and unhook) the collection events if the dob is a
9329 Type::COLLECTION. Remove the stupid parent check that was
9330 breaking everything. Pass in our MoonError parameter to
9331 OnPropertyChanged so we can communicate it back.
9332 (DependencyObject::ClearValue): unhook from the collection events.
9334 * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
9335 these methods are now in FrameworkElement.
9336 (SetParent, GetParent): their replacements. Hopefully these are
9337 not long for this world, and I'm working on getting rid of them.
9338 they are used in very few places now (basically collection.cpp and
9340 (collection_changed, collection_item_changed): two new
9341 EventHandlers so we can make collection stop calling directly into
9343 (OnPropertyChanged): add a MoonError* arg here so we can transmit
9344 errors back from the various OnPropertyChanged overrides.
9347 validators.cpp (Validators::ContentControlContentValidator): add
9348 half of the "multiple parents for .Content" checks here. This
9349 runs before the value is actually set and checks to see if the
9350 logical parent is a Panel subclass. If it is it throws an
9351 ArgumentException instead of an InvalidOperationException (don't
9354 * collection.cpp, collection.h: remove the assumption that we can
9355 just call into our parent to notify of collection/collection item
9356 changes. instead just emit an event.
9358 * eventargs.h: define CollectionItemChangedEventArgs for the new
9359 Collection::ItemChangedEvent.
9362 contentcontrol.cpp (ContentControl::OnPropertyChanged): call
9363 SetLogicalParent on the old/new contents if they're
9364 FrameworkElements, and if either returns an error, return
9367 * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
9371 * frameworkelement.cpp, frameworkelement.h: move
9372 Set/GetLogicalParent here, and make the InvalidOperationException
9373 on multiple parents unconditional.
9375 * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
9376 a FrameworkElement, set its logical parent.
9378 * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
9379 control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
9380 mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
9381 textbox.*, text.*, transform.*, uielement.*: change all the
9382 OnPropertyChanged signatures to include MoonError*
9384 * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
9385 type.h, value.h: regen.
9387 * resources.cpp: s/LogicaParent/Parent.
9389 * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
9390 not really part of this larger change, but needed for the
9391 toggleref stuff. we need to call SetParent on all the
9392 DO-subclassed converted values so they never reference a trashed
9394 (get_parent): add more cases here, none of which I'm sure are
9397 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
9399 * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
9400 (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
9402 (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
9403 so that we don't register event callbacks twice. Doh.
9405 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
9407 * validators.cpp (Validators::PasswordValidator):
9408 Removed. PasswordBox::PasswordProperty is internal, so we map it
9409 to TextBox::TextProperty and manually implement the
9410 getter/setter (which si where we manually throw an
9411 ArgumentNullException if set to null).
9413 * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
9414 Password and Text properties sucks, let's not do it. Instead,
9415 we'll map PasswordProperty to TextProperty on the managed
9416 side. Also need to Invalidate() if PasswordChar changes.
9417 (TextBoxView::Layout): Mask the text with PasswordChars if we are
9418 rendering a PasswordBox's content.
9420 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
9422 * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
9423 Password properties in sync. Don't emit a PasswordChanged event,
9424 that's mapped to TextChanged on the managed side.
9425 (TextBox::OnApplyTemplate): Handle Border and Panel
9426 ContentElements as well.
9428 * textbox.h (class PasswordBox): Get rid of the
9429 PasswordChangedEvent and also some of the properties that it
9430 shares with TextBox.
9432 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
9434 * contentcontrol.cpp (ContentControl::ContentControl): Use the
9435 nice new ManagedTypeInfo ctor.
9437 * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
9439 * textbox.cpp (TextBox::Initialize): New protected method; all of
9440 the old ctor logic was moved here so that PasswordBox could reuse
9442 (TextBox::TextBox): Call Initialize() with out type info.
9443 (PasswordBox::PasswordBox): Call Initialize() with out type info.
9444 (PasswordBox::Cursor*): Override some of TextBox's cursor
9445 navigation because we don't "see" whitespace or lines.
9447 2009-03-10 Larry Ewing <lewing@novell.com>
9449 * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
9450 isn't found in the template.
9452 2009-03-10 Jackson Harper <jackson@ximian.com>
9454 * xaml.cpp: Don't use GetLogicalParent here because the parenting
9455 hasn't been setup yet. Wse the XamlElementInstance tree for
9456 figuring out who our parent is.
9458 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
9460 * brush.cpp: ImageBrush::image_failed: propagate event args.
9462 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
9464 * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
9465 loops into do-while loops so that the line->height and
9466 line->descent get set properly. Needed to fix
9467 TextLayout::GetCursor().
9469 2009-03-10 Jackson Harper <jackson@ximian.com>
9471 * xaml.cpp: Do some basic type conversion for resources, this
9472 allows you to do things like store a font family as
9473 <clr:String>Arial</clr:String>.
9475 2009-03-10 Jackson Harper <jackson@ximian.com>
9478 * value.h.in: Consistentify method name.
9480 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
9482 * uielement.cpp: GetTimeManager: if we don't have a surface,
9483 try to get it from the deployment.
9485 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
9488 * pipeline-nocodec-ui.cpp: Set current deployment in
9491 2009-03-09 Larry Ewing <lewing@novell.com>
9493 * border.cpp (Render): set the fill rule after drawing the clip
9494 geometry since it will set the fill rule for itself.
9496 2009-03-09 Chris Toshok <toshok@ximian.com>
9498 * enums.cpp (cursors_map): add the missing Size* members here.
9500 http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
9501 gallery site to the point where it's displaying a UI.
9503 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
9505 * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
9508 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
9510 * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
9511 and cursor_offset to 0.0. Silverlight doesn't use character column
9512 when moving the cursor up/down, it uses the cursor's x-offset.
9513 (TextBox::CursorDown): Implement using TextLayoutLines.
9514 (TextBox::CursorUp): Same.
9515 (TextBoxView::GetLineFromY): New convenience method.
9516 (TextBoxView::GetLineFromIndex): Another new method.
9518 * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
9520 (TextLayout::GetCursorFromXY): Moved the remaining logic into
9521 TextLayoutLine::GetCursorFromX().
9522 (TextLayout::GetLineFromY): Provide the line index to our caller,
9524 (TextLayout::GetLineFromIndex): New convenience method.
9526 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
9528 * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
9529 cursor == 0 hack anymore.
9531 2009-03-09 Andreia Gaita <avidigal@novell.com>
9533 * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
9536 2009-03-09 Andreia Gaita <avidigal@novell.com>
9538 * dependencyobject.cpp: do the toggleref callbacks so the managed
9539 side can dispose of things properly
9541 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
9543 * layout.cpp (unichar_combining_class): New function to protect
9544 against using Glib's g_unichar_combining_class() if the API isn't
9547 2009-03-09 Jackson Harper <jackson@ximian.com>
9549 * xaml.cpp: Store the top element in the xaml context so we can
9550 still lookup handlers when parsing templates.
9552 2009-03-09 Stephane Delcroix <sdelcroix@novell.com>
9554 * multiscaleimage.cpp: fix the loop ending conditions for images
9555 with extreme aspect ratios.
9557 2009-03-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
9559 * deployment.cpp: Add support for setting the root directory
9562 2009-03-06 Larry Ewing <lewing@novell.com>
9564 * multiscaleimage.cpp (Render): cache the surface type as a
9565 similar surface to the rendering target to speed up rendering a
9568 2009-03-06 Larry Ewing <lewing@novell.com>
9570 * layout.cpp (SetText): handle null text here.
9572 2009-03-06 Geoff Norton <gnorton@novell.com>
9574 * codec-version.h.in: When we change the layout of
9575 dependencyobject, we need to bump the ABI
9577 2009-03-06 Alan McGovern <amcgovern@novell.com>
9583 * animation.cpp: If the PropertyPath supplied to the
9584 TargetPropertyProperty is a DependencyProperty, we need a
9585 special method to retrieve it. Normally PropertyPaths which
9586 are instantiated with a DependencyProperty are returned as
9587 'null' from native. Also add method for getting the manual
9590 2009-03-06 Alan McGovern <amcgovern@novell.com>
9597 * animation.cpp: Revert - I didn't mean to commit that yet.
9600 2009-03-06 Alan McGovern <amcgovern@novell.com>
9602 * propertypath.h: Need to null check the path before passing
9603 to strcmp - It is possible for the path to be null now.
9605 2009-03-06 Andreia Gaita <avidigal@novell.com>
9607 * dependencyobject.[h|cpp]: Add toggleref event registration
9610 * cbinding.[h|cpp]: regen
9612 2009-03-05 Jeffrey Stedfast <fejj@novell.com>
9614 * layout.cpp (FindLastWord): We need to walk backwards, not
9617 2009-03-05 Alan McGovern <amcgovern@novell.com>
9619 * propertypath.h: If we set a propertypath with a
9620 DependencyProperty, set the 'path' string to null. This
9621 avoids extra marshalling when it's not needed.
9623 2009-03-04 Geoff Norton <gnorton@novell.com>
9625 * deployment.cpp: Finalizing the domain destroys all objects
9626 immediately. Its possible that we might end up invoking more
9627 finalizers in the unref drain thta begins after dispose, so
9628 we're going to force a full gc and finalizer run of the collected
9629 objects here and allow ~Deployment to finalize the entire domain.
9631 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
9633 * pipeline.cpp (Media::DisposeObjectInternal): Return
9634 MEDIA_SUCCESS so that control doesn't reach the end of a non-void
9637 * layout.cpp (TextLayout::GetCursorFromXY): Don't use
9638 g_unichar_iszerowidth().
9639 (TextLayout::GetCursor): Same.
9641 2009-03-04 Larry Ewing <lewing@novell.com>
9643 * border.cpp, border.h: clean up the path_only drawing a
9644 little. set CanFindElement more appropriately.
9646 * panel.cpp: undo the path_only logic a bit.
9648 * frameworkelement.cpp: make FindElementInHostCoordinates a little
9651 * uielement.cpp, uielement.h: Make the CanFindElement default be
9652 false, and remove the broken in_stroke check.
9654 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
9656 * multiscaleimage.h|cpp: generate PInvoke for Setters so the
9657 animations are used from managed Set() too
9659 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
9661 * multiscaleimage.h|cpp: pan and zoom animation in
9662 Viewport[Origin|Width] properties Setters
9664 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
9666 * layout.cpp: Disable debug printfs unless layout debugging is
9669 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
9671 Fixes the last failing case in LineBreakBasic1.htm
9673 * layout.cpp (layout_word_wrap): When checking for last_word, use
9674 <= instead of < because inptr, at this point, is at the first byte
9675 *after* the character just gobbled up.
9677 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
9679 Fixes ActualWidth/Height extents for LineBreakBasic1.htm
9681 * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
9682 extents include trailing LWSP if-and-only-if that trailing LWSP is
9684 (TextLayout::LayoutNoWrap): Same.
9685 (TextLayout::LayoutWrap): Same.
9687 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9689 * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
9692 * font.cpp (TextFont::GetGlyphInfo): If unichar is
9693 0xFEFF (zero-width no-break space), then return a global
9694 GlyphInfo. We do this because at least some fonts won't have this
9695 glyph and we don't want to render an empty box (the default
9698 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9700 * layout.cpp (layout_word_wrap): Silverlight ignores breaking
9701 rules for glyphs that the font doesn't contain.
9703 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9705 * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
9706 op.prev up-to-date if we combine chars.
9708 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9710 Fixes a few more cases in LineBreakClasses.htm
9712 * layout.cpp (utf8_find_last_word): If a zero-width space follows
9713 a combining mark, treat the zws as part of a word and not lwsp.
9714 (layout_word_lwsp): Do NOT ignore zero-width characters, let the
9715 font metrics do the talking.
9716 (TextLayout::LayoutNoWrap): Same.
9717 (layout_word_overflow): Same combining-mark fix as above.
9718 (layout_word_wrap): Same. Also changed the way we keep track of
9719 break opportunities. After discoverign that we need to wrap, get
9720 the break-type for the follwoing character before working
9721 backwards. Try to return false if we manage to squeeze the entire
9722 word onto the line anyway.
9724 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9726 Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
9728 * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
9729 (utf8_find_last_word): Use BreakSpace() instead of
9730 g_unichar_isspace() since that's how the rest of our breaking
9732 (FindLastWord): Same.
9733 (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
9735 (LayoutNoWrap): Same.
9737 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
9739 * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
9740 to Wrap here so that we can avoid a re-layout if the old wrapping
9743 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
9745 Fixes some wrapping issues in LineBreakBasic1.htm
9747 * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
9748 variable to keep track of whether or not the layout_word_wrap()
9749 function returned. We want to keep 'linebreak' as a separate
9750 state. If we were told to wrap, but we've reached the end of the
9751 run, postpone wrapping until the next run (which might start with
9754 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
9756 Fixes for AdobeFonts.htm
9758 * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
9759 its own Fill() so that if any glyphs have a tail that descends
9760 below the baseline into the underline, the fill doesn't negate
9761 itself where the paths overlap.
9762 (GenerateGlyphCluster): Use the font->Ascender() to get the
9763 baseline offset from the top. Height() + Descender() isn't quite
9764 right. Should probably fix other places that use that strategy as
9765 well, but one step at a time.
9767 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
9769 * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
9771 (TextBoxView::Render): If the selection has changed, update the
9772 selection on the layout engine.
9773 (append_runs): Removed; no longer needed.
9774 (TextBoxView::Layout): Updated to use the new layout APIs.
9775 (TextBoxView::OnModelChanged): When the selection changes, don't
9776 set dirty to true. Instead, set selection_changed to true.
9777 (TextBoxView::SetTextBox): Set the default text attributes on our
9778 layout with the textbox as the source.
9780 * text.cpp (TextBlock::Layout): Updated to use the new text layout
9783 * layout.cpp: All new layout/rendering engine.
9785 2009-03-04 Geoff Norton <gnorton@novell.com>
9787 * deployment.cpp: When we dispose the domain, we force a full GC
9788 run to happen, otherwise objects could retain a ref to the deployment
9789 causing ~Deployment to never be called.
9791 2009-03-04 Jackson Harper <jackson@ximian.com>
9793 * xaml.cpp|h: Add a new method for grabbing the element_name of a
9794 xaml element instance from managed.
9796 2009-03-04 Alan McGovern <amcgovern@novell.com>
9798 * src.mdp: Add missing files to the MD solution
9800 2009-03-03 Chris Toshok <toshok@ximian.com>
9802 * collection.cpp (DependencyObjectCollection::AddedToCollection):
9803 add a check for PermitsMultipleParents here.
9805 * collection.h (UIElementCollection::AddWithError): remove.
9807 * dependencyobject.h (DependencyObject::PermitsMultipleParents):
9808 return true by default.
9810 * style.h (class Setter): setters don't permit multiple parents.
9812 * uielement.h (class UIElement): neither do uielements.
9814 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9815 change the UIElement test to a PermitsMultipleParents test.
9817 2009-03-03 Chris Toshok <toshok@ximian.com>
9819 * cbinding.h, cbinding.cpp: regen.
9821 * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
9822 the parent of the DO is a collection, throw an exception.
9823 (UIElementCollection::CanAdd): remove.
9824 (DependencyObjectCollection::CanAdd): remove.
9825 (HitTestCollection::CanAdd): remove.
9827 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9828 reinstate the multiple parents warning, but make it a MoonError,
9829 and make it only apply to visual elements (UIElement subclasses,
9832 * dependencyobject.h (GetLogicalParentIncludingCollections): add a
9833 new getter for just the logical_parent field, which is horribly
9835 (GetLogicalParent): add a pinvoke for this.
9837 2009-03-03 Jackson Harper <jackson@ximian.com>
9839 * xaml.cpp|h: SetProperty now takes a Value instead of a
9840 DependencyObject, this allows us to set properties on things like
9843 2009-03-03 Geoff Norton <gnorton@novell.com>
9846 * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
9849 2009-03-03 Alan McGovern <amcgovern@novell.com>
9852 * propertypath.h: Complete the implementation of PropertyPath.
9853 If it is constructed with a DependencyProperty in managed,
9854 propagate this to native.
9856 * dependencyproperty.cpp: If the property path instance was
9857 constructed with a DependencyProperty *, immediately return
9860 2009-03-03 Alan McGovern <amcgovern@novell.com>
9863 * animation.cpp: Implement the required exceptions for managed
9864 code when starting storyboards which are missing properties
9865 or can't find the target element/property.
9867 2009-03-03 Alan McGovern <amcgovern@novell.com>
9869 * src.mdp: Add propertypath.h to the MD solution
9871 2009-03-03 Alan McGovern <amcgovern@novell.com>
9874 * animation.cpp: Storyboards should always use the surface in
9875 the current deployment when starting. They don't have to be
9876 explicitly attached to a surface - SL2 has different
9877 semantics as compared to SL1 which caused some of the 1.0
9878 tests to flag this as a regression.
9880 2009-03-03 Alan McGovern <amcgovern@novell.com>
9884 * animation.cpp: Revert last change. I have the test failing
9887 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
9889 * pipeline-asf.cpp: Add a null check.
9891 2009-03-03 Alan McGovern <amcgovern@novell.com>
9894 * animation.cpp: Storyboards should always use the surface in
9895 the current deployment when starting. They don't have to be
9896 explicitly attached to a surface.
9898 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
9900 * dependencyobject.cpp: EventObject::SetSurface: only warn
9901 about wrong thread if we're actually change something.
9903 * mediaplayer.cpp: Call DisposeObject on the media to dispose
9907 * pipeline.cpp: Add Media::DisposeObject to have objects
9908 disposed on the media thread.
9910 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
9912 * pipeline.cpp: Add a missing base call to Dispose.
9914 2009-03-02 Geoff Norton <gnorton@novell.com>
9916 * pipeline.cpp: SetSource (uri) is not required to be called before
9917 SetSource (Downloader, PartName) from the javascript API.
9919 2009-03-02 Geoff Norton <gnorton@novell.com>
9921 * deployment.cpp: Enable signal chaning
9923 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
9925 * textbox.cpp (TextBox::Paste): New method to paste the
9926 contents. Since pasting text is asyncronous, we have to emit our
9927 own events and can't rely on them happening inside OnKeyDown().
9928 (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
9929 false if updating the layout returns false.
9931 2009-03-01 Andrés G. Aragoneses <aaragoneses@novell.com>
9933 * runtime.cpp: Add an EOL at the end of a printf.
9935 2009-03-01 Jeffrey Stedfast <fejj@novell.com>
9937 * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
9938 don't want to be exporting these symbols.
9940 2009-02-27 Stephane Delcroix <sdelcroix@novell.com>
9942 * multiscaleimage.cpp: use the tiles containing the shared thumbs for
9943 the highest levels of DZ collections. Saves a lot of network traffic.
9945 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
9947 * resources.cpp: Simplify (old glib) Clear and use the "right" macro
9949 2009-02-26 Chris Toshok <toshok@ximian.com>
9951 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9952 more tweaking of inheritance behavior. if the parentProperty
9953 exists, check the local value, and if it exists, return that.
9954 otherwise return return GetValue.
9956 2009-02-26 Chris Toshok <toshok@ximian.com>
9958 * border.cpp (Border::OnPropertyChanged): robustificate this a
9961 2009-02-26 Chris Toshok <toshok@ximian.com>
9963 * cbinding.h, cbinding.cpp: regen.
9965 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
9966 initialize default_style_appled to false.
9967 (FrameworkElement::SetDefaultStyle): new method, so that the
9968 managed code can set the default style without going through the
9969 CLR property wrapper (and the DP system), since (stupidly, imo)
9970 the default style isn't exposed by the Style property.
9971 (FrameworkElement::Measure): I don't like doing this hear, but
9972 according to dave relyea's blog, templates are applied when
9973 Measure is called. we could add an internal measure hook so that
9974 this code could live in control.cpp, but for now this hack will
9977 * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
9978 and add the default_style_applied field.
9980 * control.cpp (Control::OnLoaded): only apply the default style
9981 here if we haven't already (to handle the case where the object is
9982 created programmatically).
9984 * xaml.cpp (end_element_handler): according to the blog post in
9985 the added comment, controls defined in XAML get their default
9986 style applied when the end tag is seen.
9988 2009-02-26 Jeffrey Stedfast <fejj@novell.com>
9990 * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
9992 (TextBuffer::Replace): Don't call Resize() if the replacement text
9993 is shorter than the old subtext because the realloc() would lose
9994 data before we had a chance to shift things into place.
9996 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
9998 * resources.cpp: Fix crash on SLED (old glib) when clearing the
9999 hashtable (somehow this did not crash before)
10001 2009-02-25 Jackson Harper <jackson@ximian.com>
10003 * xaml.cpp: Remove some old code that was preventing non-dob
10004 values from being set to native properties.
10006 2009-02-25 Jeffrey Stedfast <fejj@novell.com>
10008 * textbox.cpp (TextBuffer::Substring): New method to get a
10010 (class TextBoxUndoAction*): New classes to represent different
10011 types of Undo/Redo actions.
10012 (class TextBoxUndoStack): New Undo/Redo stack class.
10013 (TextBox::TextBox): Initialize undo/redo stacks.
10014 (TextBox): Destroy undo/redo stacks.
10015 (TextBox::KeyPressBackSpace): Record an undo action.
10016 (TextBox::KeyPressDelete): Same.
10017 (TextBox::KeyPressUnichar): Here too.
10018 (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
10019 (TextBox::OnPropertyChanged): Record undo actions for setting
10020 SelectedText and Text properties.
10021 (TextBox::Undo): Undo the most recent action.
10022 (TextBox::Redo): Redo the most recent action.
10024 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
10026 * multiscaleimage.h|cpp: return the next tile to download
10027 in RenderSingle, RenderCollection. so the download is triggered
10028 from a single place.
10030 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
10032 * multiscaleimage.h|cpp: split Render in RenderSingle,
10035 2009-02-24 Chris Toshok <toshok@ximian.com>
10037 * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
10038 added to the list during emission, we can end up doing the Finish
10039 decrements when we didn't do the Start increments, leading to a
10040 negative events->emitting count. This causes us to spin in
10041 unref_delayed on shutdown. Fixes bug #479364.
10045 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10047 * codec-version.h.in: Bump abi version.
10050 * mediaplayer.cpp: Handle frames with width/height set, and
10051 change our cairo surface accordingly.
10054 * pipeline.cpp: Add width/height to MediaFrame, to support
10055 frames with different sizes than the initial size specified
10058 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10060 * dependencyobject.cpp: Emit: Add a null check.
10062 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10064 * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
10065 1-pixel-wide line for the cursor... apparently cairo has forsaken
10066 1-pixel-wide lines.
10068 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10070 * layout.cpp (TextLayout::GetCursor): Revert previous round()
10071 change, this isn't the right way to do it.
10073 * textbox.cpp (TextBoxView::BeginCursorBlink): Call
10075 (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
10078 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10080 * multiscaleimage.cpp: remove some debugs, clean the render loops,
10081 cleanly dispose the hashtable and its components
10083 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10085 * layout.cpp (TextLayout::GetCursor): Round the cursor's x
10086 position to the nearest whole number (makes the cursor look
10089 * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
10091 2009-02-23 Chris Toshok <toshok@ximian.com>
10093 * xaml.cpp (value_from_str): handle Type::OBJECT here by just
10094 assuming the value is a string. Fixes Tag.htm.
10096 2009-02-23 Geoff Norton <gnorton@novell.com>
10098 * debug.cpp: Don't go poking around in managed land if we don't have
10101 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10103 * multiscaleimage.cpp: Render () in relative coordinates
10105 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10107 * multiscaleimage.h|cpp: use filename as cache keys
10109 2009-02-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
10112 * pipeline.cpp: Only decode on the media thread.
10114 2009-02-23 Alan McGovern <amcgovern@novell.com>
10117 * dependencyproperty.g.cpp: Tag is a System.Object, not a
10120 2009-02-22 Geoff Norton <gnorton@novell.com>
10122 * pipeline.cpp|h: Add extra_data from managed for AudioStream too
10124 2009-02-22 Geoff Norton <gnorton@novell.com>
10126 * cbinding.cpp|h: Regen
10127 * pipeline.cpp|h: When constructing a new VideoStream pass the
10128 extra_data from managed.
10130 2009-02-22 Geoff Norton <gnorton@novell.com>
10132 * pipeline-asf.cpp:
10133 * pipeline.cpp|h: Add some missing codecs.
10135 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
10137 * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
10138 actual_width, segment->end, etc - even if all we had was
10139 whitespace. Try to keep better track of this state as well.
10140 (TextLayout::GetCursor): The cursor height is actually the same as
10143 * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
10144 (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
10146 (TextBox::OnPropertyChanged): Check for inkeypress so we don't
10147 syncronize things too early (we want to do it in SyncAndEmit() at
10148 the end of OnKeyDown()). Also updated to keep proper emit state.
10149 (TextBox::ClearSelection): Only sync selected text if we aren't in
10151 (TextBox::Select): Same.
10153 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
10155 * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
10156 able to resize or false if we failed.
10157 (TextBuffer::*): If Resize fails, return.
10158 (TextBox::CursorPrevWord): Only nagivate back so long as i >
10159 begin. Prevents us from returning -1 when begin is 0.
10160 (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
10161 total number of bytes left after cutting, we only want to memmove
10162 the bytes after the cut point.
10164 * moon-path.c (moon_path_ensure_space): New function to replace
10165 the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
10166 that callers can tell if they have enough space to add the data
10167 they want. Fixed callers to check the return value and return w/o
10168 adding curves, lines, whatever. While this will mean that
10169 Moonlight won't render the path correctly, at least we won't
10172 2009-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
10174 * mediaplayer.cpp: Open: Show the first frame upon opening a
10177 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
10179 * size.cpp|h: Add FromStr (copied from Point)
10180 * xaml.cpp: Parse Type::SIZE
10182 2009-02-19 Jeffrey Stedfast <fejj@novell.com>
10184 * stylus.h (class StylusPoint): In managed-land, this class is
10185 actually a struct, so until we find a better way, mark property
10186 accessors for pinvoking.
10187 (class StylusPointCollection): Add AddStylusPoints to the list of
10188 methods to create pinvoke stubs for.
10189 (class StylusInfo): Fixed to have a managed class
10190 autogenerated (internal).
10192 * brush.cpp (VideoBrush::SetSource): Implemented.
10194 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
10196 * dependencyobject.cpp|h: The parameter is not needed anymore
10197 since the xaml code was updated to work without using the
10200 2009-02-19 Jackson Harper <jackson@ximian.com>
10202 * xaml.cpp: Implement StaticResource element syntax.
10204 2009-02-18 Jeffrey Stedfast <fejj@novell.com>
10206 * geometry.h (class PathGeometry): Don't autocreate the
10207 FiguresProperty until we can figure out why it breaks the PDC
10210 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10212 * mediaelement.h: We always want OnPropertyChanged for
10213 PositionProperty. Fixes seeking to start/0.
10215 * dependencyproperty.g.cpp: Regenerated.
10217 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10219 * mediaelement.cpp: ctor: Initialize flags correctly.
10221 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10225 * pipeline-asf.cpp:
10226 * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
10227 make sled (glib 2.10) happy.
10229 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10235 * mediaelement.cpp: Initial implementation of
10239 * cbinding.cpp: Regenerated.
10241 2009-02-18 Alan McGovern <amcgovern@novell.com>
10246 * animation.cpp: Storyboards are considered 'children' if they
10247 ever were attached as a child of another timeline. The
10248 current status doesn't appear to matter.
10249 (StoryboardTest.RemoveChildThenStart).
10251 2009-02-18 Stephane Delcroix <sdelcroix@novell.com>
10253 * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
10256 2009-02-17 Chris Toshok <toshok@ximian.com>
10258 * text.cpp (TextBlock::TextBlock): remove this hack.
10260 2009-02-17 Chris Toshok <toshok@ximian.com>
10262 * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
10263 to the SelectedText case, and also don't perform the remaining
10264 operations if g_utf8_to_ucs4_fast fails.
10266 2009-02-17 Jeffrey Stedfast <fejj@novell.com>
10268 * dependencyobject.cpp: Now takes an only_changed argument; if
10269 true, then only return the properties which have been
10270 changed (plus any values which have been auto-created).
10272 * mediaelement.cpp (MediaElement::MediaElement): Set
10273 BufferingTimeProperty and PositionProperty in the ctor, we can't
10274 use DefaultValue nor AutoCreateValue for these since they need to
10275 be returned by ReadLocalValue() immediately after instantiating a
10276 new MediaElement object.
10278 * media.h (class MediaAttribute): Set managed namespaces for
10279 MediaAttribute and MediaAttributeCollection, we have internal
10280 managed implementations of these now.
10282 * text.h (class TextBlock): Changed default LineHeightProperty
10283 value from NaN to 0.0 (docs say NaN is the default, but not
10284 according to the unit tests).
10286 * textbox.h (class TextBox): Changed default TextProperty value
10287 from "" to null (docs say "" is the default, but not according to
10290 * media.cpp (Image::Image): Fix the SourceProperty to be
10293 * shape.cpp (Polygon::Polygon): Don't set a point
10294 collection. We'll make it autocreated instead.
10295 (Polyline::Polyline): Same.
10297 * geometry.h (class PathFigure): Set the default value of
10298 IsFilledProperty to true.
10299 (class PathGeometry): AutoCreate the FiguresProperty.
10300 (class PolyBezierSegment): AutoCreate the PointsProperty.
10301 (class PolyLineSegment): AutoCreate the PointsProperty.
10302 (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
10304 * deployment.h (class AssemblyPart): Set the default value of
10305 AssemblyPart::SourceProperty to "".
10307 * mediaelement.h: Set the default value of CurrentState to Closed.
10309 * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
10310 Markers or Attributes properties, these are autocreated.
10312 2009-02-17 Alan McGovern <amcgovern@novell.com>
10314 * animation.cpp: Missed out on a "!" when changing from
10315 GetIsChild to GetIsRootStoryboard
10317 2009-02-17 Alan McGovern <amcgovern@novell.com>
10320 * cbinding.cpp: Regenerated
10323 * animation.cpp: Add *WithError functions so that storyboards
10324 can throw the right exceptions when they are not the root
10327 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10329 * mediaelement.cpp: Add some null checks.
10331 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10334 * mediaelement.cpp: Move bitfields into our flags field.
10335 Remove allow_downloads and related methods, no longer used.
10337 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10340 * mediaelement.cpp: Remove GetDownloaderPolicy, not used
10343 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10349 * mediaelement.cpp: Make SetSource (Stream) work again.
10351 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10358 * pipeline-ffmpeg.h:
10359 * yuv-converter.cpp:
10360 * pipeline-ffmpeg.cpp: Update according to new pipeline api.
10370 * pipeline-asf.cpp:
10371 * mediaelement.cpp:
10372 * mms-downloader.h:
10373 * mms-downloader.cpp: Rework pipeline to be async to support
10380 * type-generated.cpp:
10381 * dependencyproperty.g.cpp: Regenerated.
10383 * codec-version.h.in: Bump codec abi.
10385 * downloader.cpp: Include uri.h.
10387 * downloader.h: Add accessor for failed_msg.
10390 * enums.cpp: Rename MediaElementState to MediaState.
10392 * mutex.h: Added, a pthread implementation of a mutex allowing
10395 * template.h: Inlcude xaml.h and add a forward declaration of
10398 * window.h: Add a forward declaration of MoonWindow.
10400 * src.mdp: Updated.
10402 * dependencyobject.h:
10403 * dependencyobject.cpp: Added EVENTHANDLER macro. Added
10404 support for emititng events from other than the main thread
10405 (by marshalling the event emission to the main thread).
10407 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10409 * deployment.cpp: Use printf instead of g_warning for a
10410 message which is always printed. Makes it less annoying to
10411 break on g_log while debugging.
10413 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10417 * type-generated.cpp: Regenerate.
10419 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10424 * mediaelement.cpp: Remove MediaErrorEventArgs.
10426 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10428 * debug.h: Added LOG_MP3.
10430 * runtime.cpp: Surface ctor: set the surface of the current
10431 deployment to the ourself.
10433 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10435 * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
10437 * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
10439 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10442 * runtime.cpp: CreateDownloader: take an EventObject instead
10445 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
10448 * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
10450 2009-02-17 Atsushi Enomoto <atsushi@ximian.com>
10452 * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
10453 Fixed type of ArcSegment::Size from Point to Size.
10455 2009-02-16 Jeffrey Stedfast <fejj@novell.com>
10457 * text.h: Default TextBlock font size seems to be 11px in SL2 as
10458 opposed to 14.667 in SL1.
10460 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10464 * mediaelement.cpp: Move image_brush_compute_pattern_matrix
10465 from media.cpp/mediaelement.cpp to brush.h to avoid having
10466 two declarations of the same method.
10468 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10470 * brush.cpp: Include mediaplayer.h here.
10472 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10474 * dependencyobject.cpp: Change our g_error into a g_warning.
10475 Reffing an object with refcount = 0 can actually happen now.
10477 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10479 * dependencyobject.cpp: AddTickCallInternal: if we don't have
10480 a surface, get it from the deployment.
10482 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10484 * dependencyobject.cpp: EventObject. unref and null out the
10485 deployment in the dtor instead of in Dispose.
10487 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10489 * dependencyobject.h:
10490 * dependencyobject.cpp: Add
10491 DependencyObject::RemoveAllHandlers.
10493 2009-02-16 Alan McGovern <amcgovern@novell.com>
10495 * animation.cpp: Remove the calls to ref/unref as they are
10498 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
10500 * libmoon.h: Don't include playlist.h here. Fixes issues with
10501 the plugin when playlist.h includes expat.
10503 2009-02-16 Alan McGovern <amcgovern@novell.com>
10508 * animation.cpp: Implement the managed side of
10509 Storyboard.GetCurrentState ().
10511 2009-02-16 Alan McGovern <amcgovern@novell.com>
10514 * type.h.in: The renaming changes in r126921 break the build
10515 if the generator is run because type.h.in didn't contain the
10516 CopyProperties prototype.
10518 2009-02-16 Geoff Norton <gnorton@novell.com>
10521 * downloader.h: Downloaders created in javascript can suffer the
10522 same shared-cache firefox bug, so we need to expose the buffer
10523 to the image layer in case this is the place.
10525 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
10527 * dependencyobject.cpp (DependencyObject::GetProperties): New
10528 method to get an array of all properties on the object (including
10529 currently attached properties).
10531 * type.cpp (Type::CopyProperties): Renamed from GetProperties()
10532 and changed what it does a bit. Now takes an 'inherited' argument
10533 and returns a GHashTable of properties keyed by GetHashKey().
10535 2009-02-14 Chris Toshok <toshok@ximian.com>
10537 * dependencyobject.h, dependencyobject.cpp: rename
10538 "current_values" as "local_values". current_values now means
10539 "local values + autocreated values". At this point, add
10540 GetCurrentValues which returns a new hashtable containing a union
10541 of both sets, and add FreeCurrentValues to destroy it.
10543 * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
10544 DependencyObject::GetLocalValues instead of GetCurrentValues.
10546 2009-02-13 Chris Toshok <toshok@ximian.com>
10548 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10549 fix a number of logical errors. gets inlines properly inheriting
10552 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
10554 * type.cpp (Type::GetProperties): New method to get an array of
10555 DependencyProperties for a Type.
10557 2009-02-13 Geoff Norton <gnorton@novell.com>
10559 * playlist.cpp: Check these string with g_ascii_str* as well.
10560 Also these should be case-insensitive checks.
10562 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
10564 * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
10565 should be ints, not doubles.
10567 * text.h (class Glyphs): Set the DefaultValues for
10568 UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
10570 * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
10571 SetUriSource("") (it's already the DefaultValue).
10573 2009-02-13 Geoff Norton <gnorton@novell.com>
10575 * media.cpp|h: Ensure we're comparing magics with unsigned values, and
10576 fix a logic bug that prevented us from proplery writing progressive pixbuf
10579 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
10581 * multiscaleimage.h (class MultiScaleImage): Rename the
10582 SubImageCollectionProperty to SubImagesProperty to match
10585 2009-02-13 Geoff Norton <gnorton@novell.com>
10587 * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
10589 * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
10590 does when running in the browser profile.
10592 2009-02-13 Alan McGovern <amcgovern@novell.com>
10594 * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
10595 than casting to a 64bit then 32bit value.
10597 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10599 * multiscaleimage.h|cpp: drop the friend here too
10601 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10603 * tilesource.h: drop the friends
10605 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10607 * Makefile.am: remove deepzoomimagetilesource.h from the
10608 include_headers. no one should code against it.
10610 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10612 * multiscaleimage.cpp:
10613 * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
10615 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10617 * multiscaleimage.cpp: timing macros
10619 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
10621 * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
10622 paint at once to avoid flickering.
10624 2009-02-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10626 * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
10627 a crash when downloading mms streams (due to not having
10630 2009-02-12 Geoff Norton <gnorton@novell.com>
10632 * playlist.cpp: Ensure that we don't poke around in random memory
10633 if we have an invalid entry in our parser.
10635 2009-02-12 Alan McGovern <amcgovern@novell.com>
10637 * value.cpp: Add an assert in case the gchandle value is out
10640 2009-02-12 Alan McGovern <amcgovern@novell.com>
10642 * value.cpp: Fix compile error on x64 when casting a void* to
10645 2009-02-12 Alan McGovern <amcgovern@novell.com>
10647 * value.cpp: Managed objects are stored in native as
10648 GCHandles. Use the mono api to get the target of that
10649 GCHandle so that they can be compared correctly in
10650 value.cpp. Remove hack in ItemCollection.cs which worked
10653 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
10655 * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
10656 public, drop a friend.
10657 * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
10660 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
10662 * deepzoomtilesource.cpp: some g_ascii love
10664 2009-02-11 Chris Toshok <toshok@ximian.com>
10666 * text.h: Inline's fontsize default value is 11. looks like
10667 textblock is the only case where it differs.
10669 2009-02-11 Jeffrey Stedfast <fejj@novell.com>
10671 * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
10673 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
10674 blink timeout from the GtkSettings.
10675 (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
10676 things seem to have been debugged enough now.
10677 (TextBox::CursorLineBegin): New convenience method.
10678 (TextBox::CursorLineEnd): Same.
10679 (TextBox::OnMouseLeftButtonDown): Implemented double and
10680 triple-click. Capture mouse if single-click.
10681 (TextBox::OnMouseLeftButtonUp): Release mouse capture.
10682 (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
10683 beginning of the line.
10685 2009-02-11 Alan McGovern <amcgovern@novell.com>
10702 * mediaelement.cpp:
10703 * multiscaleimage.h:
10704 * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
10705 use the ::Render codepaths instead of it's own custom
10706 codepath. Added an extra parameter to ::Render () to specify
10707 whether or not the paths appended to the cairo_t should be
10708 filled/stroked/clipped. This allows a whole bunch of NUnit
10712 * frameworkelement.cpp: Add an extra parameter to ::Render ()
10713 to specify whether or not the paths appended to the cairo_t
10714 should be filled/stroked/clipped so it can be shared with
10715 the managed hittesting.
10716 Switch FindElementsInHostCoordinates to use the ::Render
10717 codepaths instead of it's own custom codepath. This allows a
10718 whole bunch of NUnit tests to pass.
10720 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
10751 * contentcontrol.h:
10752 * multiscaleimage.h:
10753 * frameworkelement.h:
10754 * dependencyobject.h:
10755 * multiscalesubimage.h:
10756 * dependencyproperty.g.cpp:
10757 * deepzoomimagetilesource.h: Make DP backing fields const.
10759 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
10778 * mediaelement.cpp:
10779 * contentcontrol.cpp:
10780 * dependencyobject.h:
10781 * multiscaleimage.cpp:
10782 * dependencyobject.cpp:
10783 * frameworkelement.cpp:
10784 * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
10785 dp and id fields private and add accessors.
10787 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
10839 * mediaelement.cpp:
10840 * contentcontrol.h:
10841 * multiscaleimage.h:
10842 * contentcontrol.cpp:
10843 * frameworkelement.h:
10844 * dependencyobject.h:
10845 * multiscaleimage.cpp:
10846 * dependencyproperty.h:
10847 * multiscalesubimage.h:
10848 * frameworkelement.cpp:
10849 * dependencyobject.cpp:
10850 * dependencyproperty.cpp:
10851 * dependencyproperty.g.cpp:
10852 * deepzoomimagetilesource.h:
10853 * deepzoomimagetilesource.cpp: Change our static
10854 DependencyProperty backing fields to store an integer id
10855 instead of an instance to a DependencyProperty. This way we
10856 can have true per-deployment dependency properties.
10858 2009-02-11 Alan McGovern <amcgovern@novell.com>
10865 * frameworkelement.cpp: Commit some more updates to the
10866 managed hittesting.
10868 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
10870 * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
10871 xchatitis in TextBox.
10873 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
10875 * fontfamily.h (struct FontFamily): Implemented != operator.
10877 * text.cpp (Inline::Equals): Fixed the fontfamily check.
10879 * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
10881 * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
10882 dispose autocreated values too.
10883 (DependencyObject::RemoveAllListeners): Same here.
10884 (DependencyObject::RegisterAllNamesRootedAt): And here.
10885 (DependencyObject::UnregisterAllNamesRootedAt): Here too.
10887 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
10889 * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
10890 GetSubtreeObject so that we can auto-create our Children property
10891 and set it if it hasn't already been set.
10893 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
10894 We need to clear the LocalProvider value as well, if there is
10895 one. Also, don't allow setting a Value* with a null
10896 DependencyObject if it is an autocreate property.
10897 (DependencyObject::ClearValue): Clear the LocalProvider value too.
10898 (DependencyObject::SetSurface): SetSurface on autocreated values too.
10900 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
10901 Now takes another bool arg to specify whether it is allowed to
10902 autocreate new DP values.
10903 (DependencyProperty::Register): Updated.
10904 (DependencyProperty::RegisterFull): Updated, now also takes an
10907 * provider.cpp (AutoCreatePropertyValueProvider): A new provider
10908 which sits below DefaultValue.
10910 * *.cpp (*::ctor): Remove calls to SetValue()
10912 * *.h: Added AutoCreateValue where appropriate.
10914 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10916 * color.h: fabs is in math.h.
10918 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10921 * list.cpp: Add a simple ArrayList implementation.
10926 * type-generated.cpp:
10927 * dependencyproperty.g.cpp: Regenerated.
10929 * dependencyproperty.h:
10930 * dependencyproperty.cpp: RegisterCustom: removed, no longer
10931 used anywhere. RegisterNull: incorporated into
10932 RegisterFull. Register[Full]: take another Types* argument
10933 so that the registration doesn't have to look it up in the
10934 deployment for every call (this way we can later register
10935 dependency properties in the Types ctor). Also move any
10936 logic from the individial Register overloads to
10937 RegisterFull, this way we don't have different logic
10938 depending on the overload.
10941 * type.h.in: Keep a list of all properties for all types on
10942 the Types* instance, and remove the custom properties (hash
10943 and list) on the Type* instance, keeping only one hash
10944 table for both native and custom properties.
10946 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10953 * file-downloader.h: Only use G_BEGIN/END_DECLS around c
10954 methods (and in files with no c methods remove completely).
10956 2009-02-10 Jackson Harper <jackson@ximian.com>
10958 * xaml.h|cpp: New method for getting the key of an element
10960 - Pass the element instance data for the values to set property
10961 when we have one, otherwise pass NULL.
10963 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10965 * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
10966 process: don't check if DPs have been created before
10969 2009-02-10 Alan McGovern <amcgovern@novell.com>
10971 * border.cpp: Corner rounding is now taken into account when
10972 hittesting a Border
10974 2009-02-10 Fernando Herrera <fherrera@novell.com>
10976 * value.cpp: Fix GetIsNull call casting in the copy
10979 2009-02-09 Chris Toshok <toshok@ximian.com>
10981 * value.cpp: call SetIsNull everywhere so we can always check
10984 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
10989 * frameworkelement.cpp: Three more of the NUnit tests are now
10990 passing for FindElementsInHostCoordinates
10992 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
10999 * frameworkelement.cpp: Commit some more of the hittest code.
11001 2009-02-09 Jeffrey Stedfast <fejj@novell.com>
11003 * type.h.in (class Types): Added a private static field to record
11004 whether or not the static DP's have already been registered.
11006 2009-02-09 Geoff Norton <gnorton@novell.com>
11008 * deployment.cpp: Support enabling coreclr for moonlight so we
11009 can start dogfooding this.
11011 2009-02-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
11013 * deployment.cpp: Remove redundant call to SetObjectType.
11015 2009-02-08 Chris Toshok <toshok@ximian.com>
11017 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11018 add inheritance of FrameworkElement::DataContextProperty.
11020 * frameworkelement.[cpp,h]: remove all the databinding stuff from
11021 here - it's all handled in managed code now.
11023 * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
11025 * cbinding.[cpp,h]: regen.
11027 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
11029 * xaml.cpp: Adjust lookup to find StaticResources defined in
11030 a ResourceDictionary. re-fix parsing of generic.xaml for the
11031 SL toolkit (unit tests)
11033 2009-02-07 Larry Ewing <lewing@novell.com>
11035 * border.cpp (Border::ArrangeOverride):
11036 * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
11039 * grid.cpp (Grid::MeasureOverride): distribute the allocation
11040 across auto dimensions when it makes sense.
11042 2009-02-07 Larry Ewing <lewing@novell.com>
11044 * grid.cpp (Grid::MeasureOverride): don't give our whole
11045 allocation to the first column.
11047 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
11049 * stylus.cpp: Committed a variation of Geoff patch to fix
11050 the crash when running moon-unit
11052 2009-02-07 Geoff Norton <gnorton@novell.com>
11054 * cbinding.cpp|h: Regenerate
11055 * deployment.cpp|h: API cleanup
11056 * downloader.cpp|h: Generate some code that doesn't need to be
11057 hand maintained. Clean up some API to prevent a crash when
11058 unregistering downloaders.
11060 2009-02-07 Geoff Norton <gnorton@novell.com>
11066 * size.h: Account for an epsilon when comparing these structures
11067 to avoid erroneously emitting false results.
11069 2009-02-07 Jeffrey Stedfast <fejj@novell.com>
11071 * text.cpp (TextBlock::GetTextInternal): Now takes an
11072 InlineCollection argument.
11073 (TextBlock::OnPropertyChanged): Pass args->new_value to
11074 GetTextInternal() so that we avoid unnecesary recursion in the
11075 case that we're being called as a result of a GetValue() of the
11077 (TextBlock::OnCollectionChanged): Updated.
11078 (TextBlock::OnCollectionItemChanged): Updated.
11080 2009-02-06 Larry Ewing <lewing@novell.com>
11082 * shape.cpp (Shape::ArrangeOverride): take alignment into account
11083 when Stretch == None.
11085 * media.cpp (Image::ArrangeOverride):
11086 * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
11087 into account when Stretch == None.
11089 * grid.cpp, grid.h: keep track of the automagical w/h make handle
11090 it properly when alignment is not stretch. Fixes leaf control
11091 placement on "the moment".
11093 2009-02-06 Larry Ewing <lewing@novell.com>
11097 * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
11099 * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
11101 * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
11104 2009-02-06 Larry Ewing <lewing@novell.com>
11106 * control.cpp (Control::Control): remove bad setting of
11109 2009-02-06 Jackson Harper <jackson@ximian.com>
11111 * xaml.cpp|h: Add a new method for retrieving the control template
11112 parent of a xaml element instance (called from unmanaged).
11113 - quick hack to force binding expressions to be parsed in managed.
11115 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11117 * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
11118 for *+/- and . to our Key enum needed for the DLR Console app.
11120 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11122 * Reverted previous commit as I goofed the unit test on
11123 Windows. Once I fixed it, the logic I worked so hard to achieve
11126 2009-02-06 Larry Ewing <lewing@novell.com>
11128 * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
11129 we are the toplevel.
11131 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11133 See InkPresenter's ClearValue unit test
11135 1. Calling SetValue() in ctors was gross.
11136 2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
11137 3. it broke things if ClearValue was used and/or if the properties
11140 * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
11141 method to query for a default property value as used by the
11142 PropertyValueProviders.
11143 (DependencyObject::ReadLocalValue): Read the value directly from
11146 * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
11147 Call DependencyObject::GetDefaultValue() to try and get a default
11148 value. If successful, set it on the current_values hash table.
11150 * *.cpp: Fixed all classes that had ctors that called SetValue()
11151 to instead override GetDefaultValue().
11153 2009-02-06 Chris Toshok <toshok@ximian.com>
11155 * uielement.cpp (UIElement::SetSurface): if we have a subtree
11156 object (which is a UIElement), set its surface too. Fixes the
11157 ContentPresenter textblocks in ItemsControl.
11159 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11161 * deepzoomimagetilesource.cpp: set subimage width/height
11162 * multiscaleimage.cpp: do not download subimages .xml, we can work
11165 2009-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
11168 * cbinding.cpp: Regenerated.
11170 * dependencyobject.h:
11171 * dependencyobject.cpp:
11172 DependencyObject::ProviderValueChanged: Add a MoonError
11173 argument to be able to marshal managed exceptions through
11174 native code. ClearValue: Add a MoonError argument to match
11175 the signature of ProviderValueChanged.
11177 * dependencyproperty.h: Make NativePropertyChangedHandler
11178 take a MoonError argument to be able to marshal managed
11179 exceptions through native code.
11182 * error.cpp: Add a gchandle_ptr field to hold managed
11185 * frameworkelement.h:
11186 * frameworkelement.cpp: Update according to ClearValue
11189 * provider.cpp: Update according to ProviderValueChanged
11192 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11194 * morton-layout-table.inc: pre-computed table for Morton Layout
11197 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11199 * multiscaleimage.cpp: fix the most annoying rendering issue for
11202 2009-02-06 Jackson Harper <jackson@ximian.com>
11204 * xaml.cpp: Store a list of resource dictionaries on the xaml
11205 context, so control templates can use these to lookup resources.
11206 Also go back to using the XamlElementInstance's for walking up the
11207 tree, this allows us to parse before parenting items.
11209 2009-02-05 Geoff Norton <gnorton@novell.com>
11211 * deepzoomimagetilesource.cpp|h: We don't want to download all of
11212 the sub images at creation time, so allow them to defer, otherwise
11213 we might fire off hundreds of downloaders at once.
11215 2009-02-05 Jackson Harper <jackson@ximian.com>
11217 * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
11220 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
11222 * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
11223 to be more consistent with the managed API.
11225 * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
11227 2009-02-05 Geoff Norton <gnorton@novell.com>
11229 * multiscaleimage.cpp|h: We must emit this event on the main thread
11231 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
11240 * frameworkelement.h:
11241 * frameworkelement.cpp: Create an unmanaged version of
11242 FindElementsInHostCoordinates
11244 2009-02-05 Geoff Norton <gnorton@novell.com>
11247 * dependencyproperty.g.cpp:
11248 * type-generated.cpp: Regenerate
11249 * collection.h: Generate bindings for the multiscalesubimage collection.
11250 * deepzoomimagetilesource.cpp: Trigger a download when we get our URI
11251 * multiscaleimage.cpp|h: Hide SubImages in a internal property until
11252 we can marshal collections as ReadOnly into managed automatically.
11253 Also emit the ImageOpenSucceeded event when we're done parsing.
11255 2009-02-05 Jackson Harper <jackson@ximian.com>
11257 * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
11258 So I've added an ignore_case flag that the parser can use.
11260 2009-02-05 Jackson Harper <jackson@ximian.com>
11262 * type.cpp: As far as I can tell, Type::Find does not need to be
11263 case sensitive. This fixes "Double" being found when we register
11266 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
11268 Save some additional state for an optimization I'd like to do.
11270 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
11271 character offset for each TextLine.
11272 (TextLayout::LayoutNoWrap): Same.
11273 (TextLayout::LayoutWrap): Here too.
11275 2009-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
11277 * deployment.cpp: Fix typo.
11279 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
11281 * frameworkelement.cpp: Reverting r125649 as it's incorrect.
11283 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
11285 * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
11286 ClearSelection() because we'll be syncing the SelectedText in
11287 SyncAndEmit() anyway.
11289 * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
11290 exit when inptr >= inend rather than when *inptr == 0.
11291 (TextLayout::GetCursorFromXY): Slightly improved.
11293 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
11295 * dependencyobject.cpp|h: Let GetLogicalParent optionally report
11296 a collection for it's parent. This is needed in some cases like
11297 a Style inside a ResourceDictionary that defines "{StaticResource..."
11298 that other Style needs (e.g. SL toolkit unit tests)
11299 * xaml.cpp: Adjust lookup to find StaticResources defined in
11300 a ResourceDictionary
11302 2009-02-05 Stephane Delcroix <sdelcroix@novell.com>
11304 * multiscaleimage.cpp: Renders subimages
11306 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
11308 Memory Optimization:
11310 * textbox.cpp (append_runs): Updated. Also fixed a bug which would
11311 sometimes append empty TextRuns to the list.
11313 * text.cpp (TextBlock::Layout): Updated. No longer need to use the
11314 retarded TextRun linebreak ctor.
11316 * layout.cpp (TextRun): Changed TextRuns a bit, all members are
11317 now private but accessors have been added to get the values. Get
11318 rid of the crlf field and ctor params. We also no longer "strdup"
11319 for the ucs4 ctor since TextBox is the only consumer of that API
11320 and it is not constructed using a temp buffer.
11321 (TextSegment): Updated a bit for TextRun changes.
11322 (TextLayout): Updated for TextRun changes.
11324 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
11326 * style.cpp|h: Remove "style-hack" from SetterBaseCollection
11327 since that collection has no need to know about the style itself.
11328 Simplify the API a bit.
11329 * xaml.cpp: Introduce an hack for SetterBase tp workaround the
11330 fact that the current parser adds elements to the collections
11331 before setting their properties (and a SetterBase would seal
11332 itself when added to a collection).
11334 2009-02-05 Jb Evain <jbevain@novell.com>
11336 * propertypath.h: new type.
11337 * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
11338 * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
11339 * animation.h: change type of Storyboard.TargetPropertyProperty
11340 from string to PropertyPath.
11341 * animation.cpp: update accordingly.
11342 * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
11343 * dependecyproperty.cpp: update accordingly.
11344 * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
11346 2009-02-05 Jackson Harper <jackson@ximian.com>
11348 * xaml.cpp|h: Use the kind for getting content property names.
11350 2009-02-04 Chris Toshok <toshok@ximian.com>
11352 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11353 fix property inheritance to walk back up the tree (instead of just
11354 looking at the direct parent.) Also, we can't use the parent's
11355 kind directly, we have to use parent->Is().
11357 2009-02-04 Larry Ewing <lewing@novell.com>
11359 * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
11360 apply when the final value is not equal to the measured value.
11362 2009-02-04 Jackson Harper <jackson@ximian.com>
11364 * xaml.cpp|h: When setting properties pass in the
11365 XamlElementInstance.
11366 - Function so named items can be looked up from managed.
11367 * cbinding.cpp|h: regen.
11369 2009-02-04 Aaron Bockover <abockover@novell.com>
11371 * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
11372 bug where the blue channel was dropped in sc#r,g,b
11374 2009-02-04 Sebastien Pouliot <sebastien@ximian.com>
11376 * collection.cpp|h: Override AddWithError on UIElementCollection
11377 to return an error on duplicate elements
11379 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
11381 * color.cpp (read_next_double): Use g_ascii_strtod().
11382 (color_from_str): Use g_ascii_strcasecmp().
11384 * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
11386 2009-02-04 Larry Ewing <lewing@novell.com>
11388 * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
11389 case we implement star columns in a matching manor.
11391 * mediaelement.cpp (MediaElement::Render): disable mediaelement
11392 pixel snapping for now, we'll deal with this at a higher level.
11394 2009-02-04 Chris Toshok <toshok@ximian.com>
11396 * type.cpp (type_is_dependency_object): no need to c&p the entire
11397 method, just call Type::IsSubclassOf with the kinds.
11399 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
11401 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
11402 TimeManager's timeout functions instead of calling g_timeout_add()
11405 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11407 * multiscaleimage.cpp: prepare the rendering for subimages.
11409 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11411 * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
11413 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11415 * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
11418 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
11420 * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
11421 to false. Get rid of maxlen state, it's not needed.
11422 (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
11423 class member variable.
11424 (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
11425 useful for mouse events too.
11426 (TextBox::KeyPressFreeze): Removed.
11427 (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
11428 true, get the cursor from the x,y coordinates and update the
11429 selection to be zero-length starting at the cursor position.
11430 (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
11431 (TextBox::OnMouseMove): If we are in the 'selecting' state,
11432 translate current mouse coordinates into a new cursor position and
11433 update selection start/length.
11434 (TextBoxView::GetCursorFromXY): New helper method.
11435 (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
11437 * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
11439 2009-02-04 Jackson Harper <jackson@ximian.com>
11441 * template.cpp|h: Add a function for creating xaml template
11444 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
11447 * audio-pulse.cpp: More SetCurrentDeployments.
11449 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
11451 * audio.cpp: One more SetCurrentDeployment.
11453 2009-02-04 Alan McGovern <amcgovern@novell.com>
11455 * frameworkelement.cpp: Fixed hit tests which didn't do what
11456 i meant them to do and added new tests. Panels should not
11457 swallow a click when hit testing, so we should never abort
11460 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11462 * multiscalesubimage.cpp: fix the source uri in the subimage
11463 ctor. the source for the subimage is now parsed.
11465 2009-02-04 Alan McGovern <amcgovern@novell.com>
11475 * type-generated.cpp: Hook up the managed hittesting code to
11476 the native hit testing code.
11478 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11480 * multiscaleimage.cpp: iterate the collection and not the GList
11483 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11485 * multiscalesubimage.h|cpp:
11486 * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
11487 so we can compute the UriSource based on parent's one
11489 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
11491 * collection.cpp: MultiScaleSubImageCollection ctor
11493 2009-02-03 Larry Ewing <lewing@novell.com>
11495 * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
11496 the toplevel logic.
11498 * usercontrol.cpp: fix missing modification.
11500 2009-02-03 Larry Ewing <lewing@novell.com>
11502 * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
11503 clip by the margin.
11505 2009-02-03 Geoff Norton <gnorton@novell.com>
11507 * frameworkelement.cpp (Arrange): If we have a negative margin,
11508 it moves our layout slot, instead of clipping it, as such we need
11509 to adjust the clipping path accordingly in these cases to accomodate
11512 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
11514 * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
11515 ReadOnly status afterall.
11516 (TextBoxView::OnModelChanged): Same.
11517 (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
11520 * control.h: Control's default FontSize is 11, not 14.666 like
11523 2009-02-03 Larry Ewing <lewing@novell.com>
11525 * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
11526 when we arrange. Fixes the rectangle bg on pdc.
11528 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
11530 * textbox.cpp (TextBox::OnPropertyChanged): Set the default
11531 SelectionBackground and SelectionForeground brushes if
11532 SelectionLength gets to be >0.
11533 (TextBox::TextBox): Don't set them here. Initialize a new state
11534 variable, cursor_column to 0.
11535 (TextBox::CursorDown): Update cursor_column and fix some
11536 inconsistencies with Microsoft's logic. Renamed and c++'ified from
11538 (TextBox::CursorUp): Same idea here.
11539 (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
11540 (TextBox::CursorPrevWord): Same idea.
11541 (TextBox::KeyPress*Down): Save/Restore cursor_column state after
11542 updating SelectionStart/Length properties.
11543 (TextBox::KeyPress*Up): Same.
11544 (TextBox::KeyPressHome): We can set cursor_column to 0 here.
11545 (TextBox::OnPropertyChanged): If Text, SelectedText,
11546 SelectionStart or SelectionLength chanegs, we need to reset
11547 cursor_column to -1 (aka "unknown").
11549 2009-02-03 Larry Ewing <lewing@novell.com>
11551 * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
11552 and apply the finalsize adjustments to the existing values.
11553 Handle the empty row/col case specially.
11555 * usercontrol.cpp: revert accicdental diabling (for now).
11557 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
11559 * textbox.cpp (TextBuffer::Replace): Do the right thing if length
11560 goes beyond the end of the buffer.
11561 (TextBuffer::Cut): Same.
11563 * layout.cpp (RenderSegment): Extend the selection line
11564 Silverlight's TextBox does if the selection crosses over the CRLF
11565 sequence at the end of a line.
11567 2009-02-03 Larry Ewing <lewing@novell.com>
11571 * frameworkelement.cpp: handle the specified size case as well.
11573 2009-02-03 Jb Evain <jbevain@novell.com>
11575 * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
11578 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
11580 * textbox.cpp: Rewrote selection logic and vastly simplified
11581 cursor movement along the way.
11583 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11588 * dependencyproperty.h:
11589 * dependencyproperty.cpp: Remove the need for
11590 DependencyProperty to be a friend class of Type.
11592 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11594 * multiscalesubimage.h: DefaultValues for DPs.
11596 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11598 * deepzoomimagetilesource.h|cpp:
11599 * multiscaleimage.h|cpp:
11600 * multiscalesubimage.h|cpp: fill the subimages on MSI
11602 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
11604 * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
11605 because that was not part of the API before then (and it breaks
11608 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11612 * type.h.in: Type: don't make Types a friend class of Type.
11614 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11617 * animation.cpp: Remove animation_init, it's empty.
11619 * audio.cpp: We need to set the current deployment on the
11620 audio thread (but without touching mono at all).
11624 * type-generated.cpp:
11625 * dependencyproperty.g.cpp: Regenerated.
11627 * dependencyobject.h:
11628 * dependencyobject.cpp: Move object accounting and delayed
11629 unref handling to Deployment.
11631 * dependencyproperty.h: Remove DependencyProperty::Shutdown,
11634 * deployment.cpp: Add a SetCurrent overload which allows us
11635 to specify whether the current appdomain should be updated
11636 too. GetCurrent: Never access mono if the current domain is
11637 NULL. Move object tracking and delayed unrefs here.
11639 * deployment.h: Add a SetCurrent overload which allows us to
11640 specify whether the current appdomain should be updated
11641 too. Move object tracking and delayed unrefs here.
11643 * runtime.cpp: Move object tracking reports to Deployment.
11644 Remove unnecessary static init and shutdown methods.
11648 * type.h.in: Completely remove all static Type
11649 initialization, we now rely on the Types* on the current
11652 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
11654 * style.cpp: Remove extra logic and comment the main "bad" hack
11655 still required not to cause regressions. Affected test cases
11656 will marked as known issues until the XAML parser issue (which
11657 is adding elements to collections before setting their properties)
11660 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11662 * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
11664 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11666 * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
11667 destruction the name might not be available anymore, so
11668 loop over the entire hash tables looking for the object to
11669 remove instead of trying to lookup with a null key. Fixes a
11670 crash while running moon-unit.
11672 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11674 * xaml.cpp: Use property accessors on Type instead of
11675 accessing the fields.
11677 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11680 * runtime.h|runtime.cpp: new LOG_MSI macro.
11682 2009-02-03 Fernando Herrera <fherrera@novell.com>
11685 * runtime.h: Move moonlight_flags and runtime_flags to 64bits
11686 as we reached the 32bits limit for debug.
11688 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11690 * deepzoomimagetilesource.h|cpp: Parse Collections.
11692 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11694 * deepzoomimagetilesource.h|cpp: data structures to parse
11695 DZ images with subimages. Move the common parts of both ctors
11698 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11701 * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
11702 some methods and fields to the private section.
11704 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
11706 * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
11708 2009-02-02 Chris Toshok <toshok@ximian.com>
11710 * popup.h, popup.cpp: this inherits from FrameworkElement, not
11713 * dependencyobject.cpp (dispose_value): this method is doing *way*
11714 too much. we can't just blindly dispose of our values. they
11715 could be shared across multiple elements. don't even unref them
11716 here, as deleting the value does that.
11718 * type-generated.cpp: regen.
11720 2009-02-02 Larry Ewing <lewing@novell.com>
11722 * mediaelement.cpp:
11723 * media.cpp (Image::UpdateSize): update horrible hacks that are
11724 used when we are part of canvas until they can be removed
11727 2009-02-02 Larry Ewing <lewing@novell.com>
11729 2009-02-02 Chris Toshok <toshok@ximian.com>
11731 * enums.cpp (keyboard_navigation_mode_map): add
11732 (initialize_enums): add TabNavigation property handling, mapping
11733 to keyboard_navigation_mode_map.
11735 2009-02-02 Geoff Norton <gnorton@novell.com>
11738 * xaml.cpp: Inject ImageSource underneath BitmapImage so that
11739 custom xaml that attaches a ImageSource can work. Every
11740 ImageSource is a BitmapImage in SL2
11741 * type-generated.cpp:
11745 2009-02-02 Larry Ewing <lewing@novell.com>
11749 * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
11750 stretch back out to finalsize in the stretch case.
11752 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
11754 * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
11755 int because, duh, the range is -2 to 1, not 0 to 3 and so
11756 TextLine::crlf was being set to -2 instead of 2.
11757 (TextLayout::GetCursor): A minor tweak to get things to work if
11758 the cursor is right after the last char which is a \r.
11760 * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
11762 (move_down): Need to use a loop when advancing back to the
11763 previous column so we don't go beyond EOL.
11764 (move_up): Same, but more fixes as well.
11766 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
11768 * textbox.cpp: Moved all event handling back to TextBox since
11769 that's the focusable element.
11771 * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
11772 first Control subclass that we can focus.
11774 2009-02-02 Sebastien Pouliot <sebastien@ximian.com>
11776 * dependencyproperty.g.cpp:Regenerated
11777 * style.cpp|h: Use validators on Setter instead of overriding
11778 SetValueWithErrorImpl on SetterBase
11779 * validators.cpp|h: Addvalidator for checking sealed Setter
11781 2009-02-02 Larry Ewing <lewing@novell.com>
11783 * border.cpp (Border::Render): don't fill the whole are with the
11784 border brush only fill the BorderThickness.
11786 2009-02-02 Larry Ewing <lewing@novell.com>
11788 * textbox.cpp, textbox.h: first pass at implementing arrange and
11791 * text.cpp: request with padding too.
11793 2009-02-02 Chris Toshok <toshok@ximian.com>
11795 * textbox.h (class TextBox): store the contentElement as an
11796 instance field so we can update it in OnPropertyChanged.
11798 * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
11799 disgusting, and *SHOULD* be handled in the textbox template, but
11800 we can't handle it in ours in case people replace it. if the
11801 ContentElement template child has DP's named
11802 VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
11803 them based on the value of ours.
11804 (TextBox::OnPropertyChanged): handle property changes on our
11805 VerticalScrollBarVisibility/HorizontalScrollBarVisibility
11806 properties by proxying them to our contentElement.
11808 2009-02-02 Alan McGovern <amcgovern@novell.com>
11811 * bitmapimage.cpp: Image.Source defaults to a BitmapImage
11812 with a uri of string.empty.
11814 2009-02-02 Chris Toshok <toshok@ximian.com>
11816 * rect.h (struct Rect): we can be Grown by a negative amount. make
11817 sure we don't drop below 0 on width/height, since everything blows
11820 2009-02-02 Alan McGovern <amcgovern@novell.com>
11823 * dependencyproperty.g.cpp: The default value for
11824 Bitmap.ImageSource is an empty string.
11826 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
11828 * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
11829 events when the selection or text changes. TextBoxView cannot
11830 depend on getting those events if things are changed
11832 (TextBox::KeyPressThaw): Don't ever bother with emitting
11833 ModelChanged events here, they'll be emitted in
11834 OnPropertyChanged(), now.
11835 (TextBoxView): We no longer listen to TextChanged or
11836 SelectionChanged events.
11837 (TextBoxView::ResetCursorBlink): New method to do all of the
11838 proper state checking to see if the cursor should be rendered
11839 which calls the appropriate Begin/Delay/EndCursorBlink() method.
11840 (TextBoxView::OnModelChanged): Updated to handle Text and
11841 Selection changes. Dropped CursorPosition because it is no longer
11843 (TextBoxView::OnFocusIn): Set focused to true before calling
11844 ResetCursorBlink().
11845 (append_runs): Don't forget to append the LineBreak to the Runs
11847 (TextBoxView::SetTextBox): Need to sync some additional state.
11849 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
11851 * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
11852 already be in one, and DrainUnrefs isn't recursive anymore.
11854 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
11856 * src.mdp: Updated to use new MD features (ChangeLog and log
11859 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
11861 * deepzoomimagetilesource.h|cpp: add a parsed_callback.
11862 * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
11865 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
11867 * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
11868 in GetTileLayer for missing tiles.
11870 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
11872 * multiscaleimage.cpp: render lower layer if the current layer
11873 contains NULL tiles.
11875 2009-02-02 Chris Toshok <toshok@ximian.com>
11877 * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
11878 correct apparent c&p error.
11880 2009-02-01 Larry Ewing <lewing@novell.com>
11882 * control.cpp, control.h:
11883 * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
11884 MeasureOverride here from control where they are only used for
11887 2009-02-01 Larry Ewing <lewing@novell.com>
11889 * thickness.cpp (Thickness::FromStr):
11890 * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
11891 that will cause the rest to be filled with 0. Fixes parsing of
11892 single value entries.
11894 * frameworkelement.cpp: arrange based on the adjusted rect.
11896 2009-02-01 Chris Toshok <toshok@ximian.com>
11898 * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
11899 the ApplyTemplate gunk here, as the template doesn't change when
11900 our content does - the ContentPresenter in our control template
11901 will changed based on our content.
11903 * xaml.cpp (dependency_object_set_attributes):
11904 handle_xaml_markup_extension has three possible return states.
11905 "Need SetValue", "Don't SetValue", and "Error". the bool return
11906 value is the first two (true == need_setvalue), and p->error_args
11907 determines the last one.
11908 (handle_xaml_markup_extension): add a comment detailing the
11909 need_setvalue return value, and make the return values consistent.
11910 TemplateBindings are weird in that they don't (for now) set a
11911 value, but require that we don't continue on with the set value
11912 machinery in dependency_object_set_attributes.
11914 Also, the TemplateBinding handling in the case of
11915 Property1={TemplateBinding Property2} was attaching things such
11916 that updates to source.Property1 would update target.Property2.
11917 This is exactly backward - it should have been source.Property2 =>
11918 target.Property1. We got lucky in a vast number of instances
11919 because the property names were the same.
11921 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
11923 * style.cpp: Revert first part (always seal) of last patch due to
11926 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
11928 * style.cpp: Always seal setters when added to collection (unit
11929 tested) and unrelated to style (which may not be assigned, SIGSEGV)
11931 2009-01-31 Geoff Norton <gnorton@novell.com>
11933 * animation.cpp: Its possible for a Storyboard to have TargetName
11934 and TargetProperty set, but be unresolvable, and still use a parent
11935 manual target (See Axelerate3D).
11937 2009-01-31 Chris Toshok <toshok@ximian.com>
11939 * collection.h, collection.cpp (class UIElementCollection):
11940 UIElements can be reparented logical parent-wise, but can't have
11941 more than one *visual* parent.
11943 2009-01-31 Larry Ewing <lewing@novell.com>
11947 * frameworkelement.cpp: rather than trying to fix the rendering
11948 fix the layout_xform to handle margins automatically.
11950 2009-01-31 Larry Ewing <lewing@novell.com>
11952 * border.cpp (Border::Render): try to match the interior
11953 CornerRound behavior a littler closer.
11955 2009-01-31 Larry Ewing <lewing@novell.com>
11957 * rect.cpp (Rect::Draw): fix typo in rect drawing.
11959 2009-01-31 Larry Ewing <lewing@novell.com>
11961 * cornerradius.h: add == and != overloads.
11963 * uielement.cpp: don't include the layout clip if we are
11964 tranforming the bounds. The layout clip only applies to local
11967 * border.cpp: restore the graphics context after clipping.
11969 2009-01-31 Larry Ewing <lewing@novell.com>
11971 * rect.cpp, rect.h: move the rounded drawing here for now until
11972 there is a better place.
11974 * border.cpp: start drawing the borderbrush and using border
11977 2009-01-31 Larry Ewing <lewing@novell.com>
11979 control.cpp: fix arranged size with border thickness or padding.
11981 border.cpp: fix arranged size with border thickness or
11982 padding. fix rendering with margins.
11984 panel.cpp: fix rendering with a margin.
11986 2009-01-31 Larry Ewing <lewing@novell.com>
11988 * border.cpp (Border::Render): add corner radius rendering logic
11991 2009-01-31 Stephane Delcroix <sdelcroix@novell.com>
11993 * multiscaleimage.h|cpp: ensure there's only one downloader running,
11994 fixes the issue where wrong images were cached.
11996 2009-01-31 Sebastien Pouliot <sebastien@ximian.com>
11998 * contentcontrol.h: Add @CallInitialize so the event gets
11999 registred (in the managed side) and we can now track content
12002 2009-01-30 Geoff Norton <gnorton@novell.com>
12004 * textbox.cpp: FontFamily is now a FontFamily not a string.
12006 2009-01-30 Chris Toshok <toshok@ximian.com>
12008 * xaml.cpp: fix ResourceDictionary once and for all.
12010 2009-01-30 Geoff Norton <gnorton@novell.com>
12012 * deployment.cpp|h: Ensure that any downloaders that might
12013 call back into managed land are aborted before we throw out the
12015 * downloader.cpp|h: Add a nice interface to DownloaderRequest
12016 and DownloaderResponse to save some code duplication in deployment
12018 2009-01-30 Geoff Norton <gnorton@novell.com>
12020 * mediaelement.cpp: If we finish downloading before we can
12021 fill the buffer, we still need to emit this event.
12023 2009-01-30 Chris Toshok <toshok@ximian.com>
12025 * usercontrol.h (class UserControl): make managed access to
12026 ContentProperty protected internal, not just protected.
12028 * dependencyobject.h (class DependencyObject): generate a
12029 cbinding/pinvoke for SetLogicalParent.
12031 * cbinding.h, cbinding.cpp: regen.
12033 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12035 * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
12036 SelectionStart/Length.
12038 2009-01-30 Geoff Norton <gnorton@novell.com>
12040 * runtime.cpp: Let managed code change the fullscreen state.
12041 * cbinding.cpp|h: Regenerate
12043 2009-01-30 Chris Toshok <toshok@ximian.com>
12045 * xaml.cpp (dependency_object_set_property): remove the ugly
12046 assumption - we know if the property type is managed now.
12048 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12050 * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
12051 state rather than returning a changed mask. Also modified to treat
12052 selection.start as the cursor position when selection.length is
12053 0. Otherwise refer to the cursor state to figure out which end of
12054 the selection the cursor is at (for growing/shrinking).
12055 (TextBox::KeyPressFreeze): Reset 'emit' state.
12056 (TextBox::KeyPressThaw): Sync and then emit our changed events.
12057 (TextBox::OnPropertyChanged): Updated for ClearSelection() API
12059 (TextBox::ClearSelection): Now takes a 'start' argument to set
12060 SelectionStart to (e.g. cursor position).
12061 (TextBox::Select): Now longer needs to do a freeze/thaw.
12062 (TextBoxView::OnKeyDown): Updated.
12064 2009-01-30 Chris Toshok <toshok@ximian.com>
12066 * control.h, control.cpp: same story with InsideObject.
12068 2009-01-30 Chris Toshok <toshok@ximian.com>
12070 * control.h, control.cpp: remove Control::Render. handling of the
12071 background property is left to a templatebinding in the visual
12072 tree of the applied template.
12074 2009-01-30 Chris Toshok <toshok@ximian.com>
12076 * provider.cpp (StylePropertyValueProvider::SealStyle): call
12077 ProviderValueChanged on all values in the style so the object can
12078 do things with them.
12080 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
12081 a comment about SealStyle calling ProviderValueChanged.
12083 2009-01-30 Chris Toshok <toshok@ximian.com>
12085 * xaml.cpp: when parsing multiple buffers (as we do when hydrating
12086 from a template), we need to keep track of the total offset from
12087 the start of all buffers, since XML_GetCurrentByteIndex returns a
12088 value with that range, it's not the byte index into the current
12089 buffer (unless there's only 1). Fixes templates stored inside of
12092 2009-01-30 Andreia Gaita <avidigal@novell.com>
12094 * clock.cpp: no use stopping if it's already stopped
12096 2009-01-30 Andreia Gaita <avidigal@novell.com>
12098 * clock.cpp: reset the state flags as well
12100 2009-01-30 Larry Ewing <lewing@novell.com>
12102 * text.cpp (TextBlock::Render): Start taking padding into account
12103 and limit the max size to actual not to the arranged value.
12105 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12107 * textbox.h (TextBox::GetCursor): Cursor position is aka
12110 * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
12111 (TextBox::Thaw): Decrement freeze count and emit events when we
12113 (TextBox::OnPropertyChanged): When SelectionStartProperty or
12114 SelectionLengthProperty change, call SyncSelectedText(). Fixed the
12115 selection.start/cursor positioning logic when TextProperty or
12116 SelectedTextProperty changes.
12117 (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
12120 2009-01-30 Larry Ewing <lewing@novell.com>
12122 * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
12125 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
12127 * frameworkelement.cpp: Make sure bounds_with_children is always
12128 initialized before being used.
12130 2009-01-30 Geoff Norton <gnorton@novell.com>
12132 * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
12133 media. Fixes the thumber moving on PDC player.
12135 2009-01-30 Jackson Harper <jackson@ximian.com>
12137 * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
12138 about them being legal if they are equal.
12140 2009-01-30 Larry Ewing <lewing@novell.com>
12142 * grid.cpp (Grid::ArrangeOverride): hack around spans in
12143 rebuilding the table until we understand them better.
12145 2009-01-30 Larry Ewing <lewing@novell.com>
12147 * frameworkelement.cpp:
12149 * control.cpp (Control::ArrangeOverride): use alignment properly
12150 in these places as well
12152 2009-01-30 Larry Ewing <lewing@novell.com>
12154 * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
12155 the alignment here.
12157 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12159 * multiscaleimage.cpp: load png too
12161 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12163 * multiscaleimage.cpp: change the vporigin to relative coords
12165 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12167 * dependencyobject.cpp: EventObject::unref: don't try to get the
12168 typename if there's no deployment around.
12170 * pipeline.cpp: Media::Shutdown: set the current deployment before
12171 looping over each media.
12173 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12175 * deployment.cpp: Remove dead code.
12177 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12179 * downloader.cpp: Downloader::Write: update current deployment.
12181 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12188 * mediaelement.cpp:
12189 * pipeline-asf.cpp:
12190 * mms-downloader.cpp:
12191 * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
12193 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12195 * deployment.cpp: Comment out log spammer.
12197 * runtime.cpp: Add some sanity checks.
12199 * dependencyobject.cpp: Set current deployment for delayed unrefs too.
12201 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12203 * deepzoomimagetilesource.cpp: normalize ViewportWidth
12205 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
12207 * cbinding.cpp|h: Regenerated
12208 * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
12209 * rect.h: Add new ctor so the generator code can work
12211 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12213 * tilesource.h|cpp:
12214 * deepzoomimagetilesource.h|cpp:
12215 * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
12216 implement the DZ parser in native code.
12218 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12220 * mediaplayer.cpp: MediaPlayer: Set object type correctly.
12222 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12224 * deployment.cpp: Allow setting the current deployment to NULL.
12226 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12228 * mediaelement.cpp: Handle MediaElementStateIndividualizing and
12229 AcquiringLicense in all switch statements to fix gcc warnings.
12231 2009-01-30 Geoff Norton <gnorton@novell.com>
12233 * debug.cpp: Use the proper headers here, we need them anyways.
12234 * window.h: Store the deployment we were created in.
12235 * window-gtk.cpp: Ensure we set our deployment before starting
12236 to call into our heirarchy.
12238 2009-01-30 Jb Evain <jbevain@novell.com>
12240 * deployment.h: make Deployment::Surface DP internal.
12242 2009-01-29 Geoff Norton <gnorton@novell.com>
12244 * deployment.h: Surface is now a DP on the deployment so we
12245 can share it with managed.
12246 * dependencyproperty.g.cpp: Regen
12247 * clock.cpp: Get the surface of the Deployment we're in so that
12248 clocks from Dispatcher timer end up on the right surface.
12250 2009-01-29 Geoff Norton <gnorton@novell.com>
12252 * deployment.cpp: Trust the domain over the TLS slot since mono
12253 will switch that on us on any thread really.
12255 2009-01-29 Geoff Norton <gnorton@novell.com>
12257 * clock.cpp|h: Ensure that we set the correct deployment from the
12258 clock ticks before traversing back into our heirarchy.
12260 2009-01-29 Jackson Harper <jackson@ximian.com>
12262 * xaml.cpp: Add support for the primitive types in mscorlib. This
12263 will get properly formed strings, doubles, and int32s working for
12264 now, we don't handle the oddities of the SL parsing properly yet
12267 2009-01-29 Jackson Harper <jackson@ximian.com>
12269 * type-generated.cpp: regen
12271 2009-01-29 Larry Ewing <lewing@novell.com>
12273 * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
12276 * grid.cpp: unref the dummy columns we create here.
12278 2009-01-29 Jeffrey Stedfast <fejj@novell.com>
12280 * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
12282 * textbox.h: Shuffle some internal accessors/events around.
12284 2009-01-29 Larry Ewing <lewing@novell.com>
12286 * text.cpp, text.h: implement basic layout size rules and strip
12287 the custom actual* properties. Still a hack but passable for now.
12291 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12294 * runtime.cpp: Surface: Implement Dispose and call Dispose on the
12295 toplevel object. PaintToDrawable: Update current deployment.
12297 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12299 * uielement.cpp: Dispose: add a null-check, and only walk the visual
12300 tree if we haven't been disposed already.
12302 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12305 * namescope.cpp: Namespace: Implement Dispose and remove all entries
12306 from our names hash table there.
12308 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12310 * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
12311 on upon destruction.
12313 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12315 * dependencyobject.h:
12316 * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
12317 Deployment::Current. Emit DestroyedEvent in Dispose instead of the
12320 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12323 * mediaelement.cpp: Implement Dispose and put most of the cleanup there
12324 instead of in the dtor. media_element_advance_frame: we need to set
12325 the current deployment here.
12327 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12329 * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
12330 pre-chain. Set array's size to 0 after deleting all the values.
12332 * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
12333 one media thread per Media object, there's no need to set the current
12334 deployment for each work node, just set it at thread start.
12335 MediaClosure::SetContext: fix refcounting bug.
12337 * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
12339 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
12342 * deployment.cpp: Deployment: Enable support managed stackframes after
12343 initializing mono. Implement Dispose, and upon destruction set
12344 current application to NULL.
12346 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
12348 * tilesource.h|cpp: image size is long
12350 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
12352 * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
12354 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
12356 * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
12357 logical is [0,1],[0,1]
12359 2009-01-28 Larry Ewing <lewing@novell.com>
12361 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
12362 it might help to actually measure things, so do that... *sigh*
12364 2009-01-28 Larry Ewing <lewing@novell.com>
12366 * shape.cpp (Shape::ComputeStretchBounds): remove the old
12367 width/height short circuiting when one or the other of
12368 width/height was not set simply use the lyaout clip when it is
12369 around. Might need a little more work but it is definitely
12372 2009-01-28 Larry Ewing <lewing@novell.com>
12374 * frameworkelement.cpp, frameworkelement.h: layout and arrange
12375 children if there are any. set IsLayoutContainer to true if we
12378 2009-01-28 Larry Ewing <lewing@novell.com>
12380 * frameworkelement.cpp (FrameworkElement::HitTest): move the
12381 majority of the hit test logic here. Now we only walk the
12382 children once and we only call InsideObject when we must.
12383 InsideObject now only checks the local object subtree is handled
12386 * panel.cpp, panel.h:
12387 * control.cpp, control.h:
12388 * border.cpp, border.h:
12389 * text.cpp, text.h: remove the old HitTest and rework InsideObject
12392 * uielement.cpp: make InsideClip potentially a little faster.
12394 2009-01-28 Larry Ewing <lewing@novell.com>
12396 * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
12401 * canvas.cpp: skip invisible elements.
12403 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
12405 * textbox.cpp (TextBoxView::Layout): We need to break the text
12406 apart by lines so that the TextLayout engine can handle them
12409 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
12410 over to line->crlf for each LineBreak.
12411 (TextLayout::GetCursor): Need to keep track of the line-ending
12412 character sequences as well.
12414 * layout.h (TextRun::IsLineBreak): New method to check if the run
12415 represents a LineBreak, cleaner than manually checking for text ==
12417 (TextRun::ctor): LineBreak version now takes a crlf argument to
12418 specify which line ending sequence it is.
12420 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
12422 * textbox.cpp (move_down): Fixed to handle any line-ending.
12426 (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
12428 (TextBox::KeyPressDelete): Same.
12429 (TextBox::KeyPressHome): Same.
12430 (TextBox::KeyPressEnd): Same.
12431 (TextBox::KeyPressRight): Same.
12432 (TextBox::KeyPressLeft): Same.
12433 (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
12434 inserts a \r character, not a \n, nor a \r\n.
12436 * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
12438 (TextBlock::SetTextInternal): Canonicalize line endings in our
12441 * layout.cpp (TextRun::TextRun): Don't worry about line endings...
12443 2009-01-28 Jackson Harper <jackson@ximian.com>
12445 * xaml.cpp: Fix logic for setting name and key on
12446 storyboards. Rules are:
12447 1. You can set both if you set the name before the key
12448 2. You can set both if both values are equal
12450 2009-01-28 Chris Toshok <toshok@ximian.com>
12452 * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
12453 DependencyObjectCollection::AddedToCollection.
12454 (SetterBaseCollection::RemovedFromCollection): chain up to
12455 DependencyObjectCollection::RemovedFromCollection.
12457 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
12459 * dependencyproperty.g.cpp: Regenerated
12460 * enums.cpp|h: Add MediaElementState
12461 * playlist.cpp: Use new MediaElementState enum
12462 * mediaelement.cpp|h: Use new MediaElementState enum
12464 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12466 * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
12468 2009-01-27 Larry Ewing <lewing@novell.com>
12470 * grid.cpp: limit the reduction in size to zero.
12472 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12475 * dependencyobject.cpp: Fix building with object tracking.
12477 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12479 * debug.h: Surround logging macros with #if LOGGING instead of #if
12482 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12484 * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
12485 header, it's not used anywhere but in this file.
12487 * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
12488 configure time now.
12490 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
12492 * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
12494 (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
12496 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12498 * uielement.h: Make Dispose public.
12500 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12502 * codec-version.h.in:
12503 * dependencyobject.h:
12504 * dependencyobject.cpp: EventObject: Make the flags field an gint32
12505 field (to keep size consistent), put the flags at the upper bits and
12506 use the remaining lower bits for the object id. This requires a codec
12509 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12511 * dependencyobject.cpp: Use bitfields correctly.
12513 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
12515 * text.cpp: FontFamily can be NULL so we can't just access its
12516 source field without a check. Fix SIGSEGV when running moon-unit.
12517 * value.cpp: FontFamily is not a (managed) struct so it can have
12518 a NULL value. Fix SIGSEGV when creating a Value out of a NULL
12519 FontFamily in moon-unit.
12521 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12524 * type-generated.cpp: Regenerated.
12526 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12532 * type-generated.cpp: Regenerated.
12534 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12540 * audio-pulse.cpp: Don't register any audio threads, they may interact
12541 badly with the gc and deadlock. Audio threads shouldn't be doing
12542 anything which requires the current deployment to be set anyway.
12544 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12547 * pipeline.cpp: AudioStream: call SetObjectType.
12549 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12551 * dependencyobject.h:
12552 * dependencyobject.cpp: Add an EventObject ctor overload which takes a
12553 Type::Kind. In EventObject::ref don't warn about inexistent
12554 deployments for audio objects.
12556 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12558 * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
12560 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12566 * audio-pulse.cpp: Every AudioSource already has deployment set (since
12567 they inherit from EventObject), use that to set the current
12570 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
12572 * src.mdp: Updated.
12574 2009-01-27 Chris Toshok <toshok@ximian.com>
12576 * pipeline.cpp: include codec-version.h
12578 * pipeline-ui.cpp: same.
12580 * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
12583 * codec-version.h.in: new file. update the
12584 MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
12586 2009-01-27 Larry Ewing <lewing@novell.com>
12588 * mediaelement.cpp (MediaElement::MeasureOverride): correct
12591 2009-01-27 Larry Ewing <lewing@novell.com>
12593 * frameworkelement.cpp, frameworkelement.h: move generic
12594 bounds_with_children computation here for now. Make
12595 GetSubtreeBounds return bounds or bounds_with_children based on
12596 having children. Start setting the layout clip in arrange (it will
12597 probably move later). Rework the layout_xform logic slightly.
12599 * uielement.cpp: remove the generic render warning, it is ok not
12600 to override here if there is nothing local you need to draw. When
12601 intersecting bounds with the clip path take the layout clip into
12604 * text.cpp: update for bounds changes. Don't recompute the
12605 natural bounds every pass.
12607 * mediaelement.cpp, mediaelement.h:
12608 * media.cpp, media.h: rework arrange and measure to match shape.
12609 Remove overridden bounds logic since it is no longer needed. Only
12610 use the odd width/height setting logic when we aren're part of a
12611 layout tree. Use the layout clip when drawing.
12613 * shape.cpp: clean up the bounds logic. Use the layout clip when
12616 * control.cpp, control.h:
12617 * border.cpp, border.h: use the layout clip when rendering, remove
12618 overrides for bounds now that fe handles them.
12621 2009-01-27 Chris Toshok <toshok@ximian.com>
12623 * Makefile.am (libmoon_include_headers): add fontfamily.h
12625 * fontfamily.h: add struct.
12627 * control.h, text.h: FontFamilyProperty is of type FontFamily now.
12629 * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
12632 * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
12635 * value.h.in (struct Value): add FontFamily and guint32 cases.
12637 * xaml.cpp (value_from_str): add case for FONTFAMILY.
12639 * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
12641 2009-01-27 Geoff Norton <gnorton@novell.com>
12643 * audio-pulse.cpp|h: Use the Deployment sourced from the player
12644 * dependencyobject.cpp: Fix the warning to not use triple not
12646 * deployment.cpp: If we find the deployment from the domain,
12647 put it in the tls slot to make future lookups use the fast-path.
12649 2009-01-27 Jeffrey Stedfast <fejj@novell.com>
12651 * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
12652 events anymore. Instead of having a bool 'emit' flag, use
12653 something closer to gtk's freeze_count.
12654 (TextBox::OnKeyDown): Moved to TextBoxView.
12655 (TextBox::OnKeyUp): Same.
12656 (TextBox::SelectAll): Now returns bool to specify if the selection
12658 (TextBox::PreKeyPress): Freeze event emission for our state
12660 (TextBox::PostKeyPress): Thaw them and emit the events.
12661 (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
12662 textbox->PreKeyPress() and after processing, call
12663 textbox->PostKeyPress().
12665 2009-01-27 Jackson Harper <jackson@ximian.com>
12667 * value.cpp: unmarshall fonts properly.
12669 2009-01-27 Geoff Norton <gnorton@novell.com>
12671 * dependencyobject.cpp|h:
12672 * mediaplayer.cpp: Remove the stupidity from my last commit.
12673 * audio.cpp: We're in the right thread and Deployment here, use
12674 Deployment::GetCurrent().
12676 2009-01-27 Geoff Norton <gnorton@novell.com>
12678 * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
12679 the deployment on a EO.
12680 * deployment.cpp: Add some more logging.
12681 * mediaplayer.cpp: Inherit our Deployment from the MediaElement
12684 2009-01-27 Geoff Norton <gnorton@novell.com>
12687 * audio-pulse.cpp: Register the worker-thread's with mono and set our
12688 deployment correctly.
12689 * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
12690 around so that our audio-players can register the thread with mono.
12692 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12694 * pipeline.cpp: WorkerLoop: set the current deployment for every work
12698 * deployment.cpp: Add RegisterThread.
12700 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12702 * deployment.cpp: Deployment: Add some logging, fix indentation and call
12703 the DependencyObject ctor which takes a Deployment instead of the
12706 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12708 * dependencyobject.h:
12709 * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
12710 take a Deployment*, and an Initialize method which is called by both
12711 ctors of each type.
12713 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12715 * deployment.h: Initialize doesn't need cbinding/pinvoke.
12717 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12719 * debug.h: Add LOG_DEPLOYMENT.
12722 * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
12725 2009-01-27 Geoff Norton <gnorton@novell.com>
12727 * deployment.cpp|h: Lock our access to the hash. Remove a SetCurrent()
12728 instance since its just sugar and cant be bound anyways.
12730 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12732 * dependencyobject.h:
12733 * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
12735 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12737 * dependencyobject.h:
12738 * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
12740 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12742 * collection.cpp: Collection::Dispose: Call base class Dispose too.
12744 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
12786 * contentcontrol.h:
12787 * multiscaleimage.h:
12788 * dependencyobject.h:
12789 * type-generated.cpp:
12790 * frameworkelement.h:
12791 * multiscalesubimage.h:
12792 * deepzoomimagetilesource.h: Include all types derived from EventObject
12793 in the type system and remove the IncludeInKinds annotations from
12796 2009-01-27 Chris Toshok <toshok@ximian.com>
12798 * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
12799 add the "XamlElementInstance* value" overload. part of axelerate
12801 (XamlElementInfoManaged::GetContentProperty): pass
12802 obj->AsDependencyObject() to GetContentPropertyName, instead of
12803 obj (which is a Value*).
12805 2009-01-26 Chris Toshok <toshok@ximian.com>
12807 * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
12808 some behavior with x:Key/x:Name only happens when the element is a
12809 child of a ResourceDictionary.
12811 2009-01-26 Larry Ewing <lewing@novell.com>
12813 * grid.cpp: rework proportional contribution of auto columns.
12815 * uielement.cpp: remove the slot logic from the transform here we
12816 will compute it in arrange.
12818 2009-01-26 Larry Ewing <lewing@novell.com>
12820 * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
12823 2009-01-26 Geoff Norton <gnorton@novell.com>
12825 * deployment.cpp: Cleanup our usage of hash a bit to avoid some
12826 senseless compare/branches.
12828 2009-01-26 Larry Ewing <lewing@novell.com>
12830 * shape.cpp (Shape::Clip): hack back in shape clipping until the
12831 layout clip logic fixed.
12833 2009-01-26 Geoff Norton <gnorton@novell.com>
12835 * deployment.cpp: Remove a useless null guard now that we have
12836 Deployment::Initialize. Don't rudely nuke the TLS slot we might not
12839 2009-01-26 Geoff Norton <gnorton@novell.com>
12841 * deployment.cpp|h: Deployment now does all the domain book keeping
12842 for us, so that calls to GetCurrent will return the Deployment for
12843 the appropriate context, it will also set the MonoDomain* appropriately
12846 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
12848 * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
12850 (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
12851 TextProperty from reentrancy.
12852 (TextBox::EmitSelectionChanged): Update the value before emitting
12853 the event, this way we don't need the dynamic provider.
12854 (TextBox::EmitTextChanged): Same.
12855 (TextBox::OnKeyDown): Handle key == GDK_Return.
12857 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
12859 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
12860 to handle the TextProperty as well.
12861 (TextBox::TextBox): Init text_changed to false.
12862 (TextBox::EmitSelectionChanged): New helper method to set
12863 selection_changed to true and then emit the event.
12864 (TextBox::EmitTextChanged): Same idea.
12865 (TextBox::OnPropertyChanged): Use the new Emit helper methods.
12866 (TextBox::ClearSelection): Same.
12867 (TextBox::Select): Same.
12869 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
12871 * animation.h: Change validators for TargetNameProperty and
12873 * dependencyproperty.g.cpp: Regenerated
12874 * validators.cpp|h: Add new IsTimelineValidator that check that
12875 the instance is derived from Timeline.
12877 2009-01-26 Larry Ewing <lewing@novell.com>
12882 * control.cpp, control.h:
12883 * frameworkelement.cpp, frameworkelement.h:
12886 * src/mediaelement.cpp:
12888 * src/uielement.cpp:
12889 * src/usercontrol.h: Fix things to match the test results. Still
12890 a few regressions in shapes.
12892 2009-01-26 Larry Ewing <lewing@novell.com>
12894 * border.cpp (Border::MeasureOverride):
12896 2009-01-26 Larry Ewing <lewing@novell.com>
12898 * grid.cpp (Grid::MeasureOverride): handle out of bounds
12899 rows/columns the way the tests indicate.
12901 2009-01-24 Larry Ewing <lewing@novell.com>
12903 * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
12905 2009-01-24 Larry Ewing <lewing@novell.com>
12907 * uielement.h (class UIElement): add IsLayoutContainer () to test
12908 if a given element wants to do the layout dance. Hopefully this
12909 can be removed once the logic is more clear.
12914 * usercontrol.h: add IsLayoutContainer values.
12916 2009-01-26 Larry Ewing <lewing@novell.com>
12918 * frameworkelement.cpp: tests show some really crazy behavior in
12919 the short circuit case, try to emulate that.
12921 2009-01-26 Larry Ewing <lewing@novell.com>
12923 * frameworkelement.cpp (FrameworkElement::Measure): remove the
12926 * media.cpp: fix rendering.
12928 2009-01-26 Larry Ewing <lewing@novell.com>
12931 * border.cpp: Try to get alignment working visually.
12933 * frameworkelement.cpp: hack the needed behavior in until I
12934 understand the problem better.
12936 * mediaelement.cpp, mediaelement.h:
12937 * media.cpp: use the layout values in stretching
12939 2009-01-26 Larry Ewing <lewing@novell.com>
12941 * frameworkelement.cpp:
12944 * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
12947 2009-01-26 Larry Ewing <lewing@novell.com>
12950 * media.cpp: add bounds logic.
12955 * border.cpp: start trying to deal with
12958 * frameworkelement.cpp: compute the layout_xform.
12960 * uielement.cpp, uielement.h: add layout_xform and use it.
12962 * shape.cpp: try something else in measure.
12964 * size.h: add == and != overrides.
12966 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
12968 * brush.cpp (VisualBrush::SetupBrush): Updated.
12970 * uielement.cpp (UIElement::Render): Render our subtree in the
12971 Region* version of this method and get rid of the old x,y,w,h
12974 * text.cpp (TextBlock::Render): Override the Render() that takes a
12976 (Glyphs::Render): Same.
12978 * textbox.cpp (TextBoxView::Render): Same.
12980 * shape.cpp (Shape::Render): Here too.
12982 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
12986 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
12988 * type.cpp: Revert r124497.
12990 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
12992 * transform.cpp: Add comment about a difference between SL2/ML
12993 in caching/computing the resulting matrix value (exposed in SL2)
12994 of a TransformGroup
12996 2009-01-26 Jackson Harper <jackson@ximian.com>
12998 * xaml.cpp: Move this check into a function since it will be used
13001 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
13003 * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
13005 2009-01-26 Chris Toshok <toshok@ximian.com>
13007 * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
13008 binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
13009 canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
13010 contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
13011 dependencyobject.[cpp,h], dependencyproperty.h,
13012 deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
13013 eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
13014 geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
13015 mediaelement.[cpp,h], multiscaleimage.[cpp,h],
13016 multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
13017 popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
13018 size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
13019 text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
13020 trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
13021 usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
13022 files, and remove GetObjectType - call SetObjectType instead. Add
13023 @IncludeInKinds everywhere on types we want in the Kinds array -
13024 nothing is implicit now. Also, add @SkipValue on types that
13025 shouldn't automatically appear in the Value struct (As* method,
13028 * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
13029 but also call SetSubtreeObject at the right times (basically
13030 whenever our subtree object changes).
13032 * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
13033 too. also, rework the control template application step - don't
13034 cache the tree and duplicate it. just reparse. hook up template
13035 bindings properly as well. with this change buttons are starting
13038 * type.cpp: total_event_count = my_events +
13039 parent->total_event_count, so if my_events == 0...
13041 * xaml.cpp (start_element): reverse the subclass check.
13043 * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
13045 * Makefile.am: add expression.cpp, and there's no need for
13046 separate file lists anymore.
13048 2009-01-25 Chris Toshok <toshok@ximian.com>
13050 * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
13051 this registers a custom property. Fixes moon-unit failures.
13053 2009-01-25 Chris Toshok <toshok@ximian.com>
13055 * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
13058 2009-01-25 Chris Toshok <toshok@ximian.com>
13060 * xaml.cpp: mostly just remove the NULL's we were passing to the
13061 various DependencyObject methods that used to require an
13062 additional_types arg.
13063 (dependency_object_set_attributes): one important fix here - force
13064 the loader to do the SetValue if the type is URI, or if the type
13065 of the object itself is a custom type. Also, if we've converted
13066 the string to a valid value already, don't pass a string to the
13067 loader - this keeps us from passing "{Binding foo...}" to the
13068 loader to setvalue on a databound property. This does uncover a
13069 failing in our managed code, though, that there's no way to deal
13070 with the unmanaged BindingExpression from managed code.
13072 * application.cpp, application.h: instead of having a
13073 MonoDomain->Application mapping, we now have a
13074 MonoDomain->Deployment mapping, so Application::GetCurrent maps to
13075 Deployment::GetCurrent()->GetCurrentApplication().
13077 * deployment.cpp, deployment.h: flesh out Deployment, along with
13078 the MonoDomain->Deployment mapping. Also add a per-deployment
13079 Types* object, so we can look them up anywhere in the engine
13080 without having to rely on the managed layer passing
13083 * type.h.in, type.cpp: remove additional_types from all the apis.
13084 the currently registered custom types are always available from
13085 the Current deployment, which Type::Find uses. Also, add
13086 IsCustomType which lets us check if a type is one of our special
13087 built-in types, or if it's one that's been registered dynamically.
13089 * value.h.in, value.cpp: remove additional_types.
13091 * dependencyproperty.h, dependencyproperty.cpp: remove
13094 * dependencyobject.h, dependencyobject.cpp: remove
13097 * uielement.h: add cbindings/pinvokes for ElementAdded and
13100 * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
13103 * Makefile.am: remove contentpresenter.{h,cpp}
13105 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
13108 2009-01-25 Sebastien Pouliot <sebastien@ximian.com>
13110 * cbinding.cpp|h: Regenerated
13111 * transform.cpp|h: Add GetMatrix (w/bindings).
13113 2009-01-23 Geoff Norton <gnorton@novell.com>
13115 * xaml.cpp: This is case-insensitive here too.
13117 2009-01-23 Geoff Norton <gnorton@novell.com>
13119 * dependencyobject.cpp: Avoid a SIGSEGV if the parent_scope is null.
13121 2009-01-23 Jeffrey Stedfast <fejj@novell.com>
13123 * utils.cpp (managed_stream_read_func): Fixed to do as intended.
13124 (managed_stream_write_func): Same.
13126 * textbox.cpp (next_word): Implemented.
13127 (prev_word): Implemented.
13129 2009-01-23 Andreia Gaita <avidigal@novell.com>
13131 * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
13132 list in case the dispatcher gets destroyed before they are processed.
13134 2009-01-23 Geoff Norton <gnorton@novell.com>
13136 * utils.cpp: Remove some g_error and handle ridiculously large
13137 zip files to appease glib.
13139 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
13141 * dependencyproperty.g.cpp: regenerated
13142 * brush.h: Set default values for RadialGradientTransform points
13144 2009-01-23 Stephane Delcroix <sdelcroix@novell.com>
13146 * multiscaleimage.cpp: add a bool so render knows if it was
13147 invalidated locally or not, and should keep rendering the upper
13148 layers or restart from the bottom.
13150 2009-01-23 Geoff Norton <gnorton@novell.com>
13152 * pipeline.h: Move ManagedStreamCallbacks to utils so other things
13154 * utils.cpp|h: Implement a minizip io-style wrapper around
13155 ManagedStreamCallbacks so that we can unzip from / to managed Stream's.
13157 2009-01-23 Stephane delcroix <sdelcroix@novell.com>
13159 * multiscaleimage.cpp: no longer crash on null uri
13161 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
13163 * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
13164 to be valid (xml-wise) but not a DO (e.g. a Color).
13166 2009-01-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
13168 * src.mdp: Added new files.
13170 2009-01-22 Chris Toshok <toshok@ximian.com>
13172 * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
13173 .cpp, and call SetDefaultStyleKey to get that working.
13175 2009-01-22 Chris Toshok <toshok@ximian.com>
13177 [ fixes to get http://www.life-silverlight.com/ to come up with
13180 * enums.cpp (initialize_enums): add a mapping for the property
13181 VerticaalContentAlignment using the vertical_alignment_map.
13183 * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
13184 file. Also, call SetSurface in SetVisualParent, so things like
13185 controls templates get the right surface assigned to them (they
13186 have no logical parent, only a visual one.)
13188 * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
13189 other template stuff - create a temp namescope here. it won't be
13190 merged, so nothing to worry about. Also, don't call
13191 PrepareContentPresenter here. do it after we look up text and
13192 root in OnApplyTemplate.
13193 (ContentPresenter::OnApplyTemplate): prepare the content
13196 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
13198 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13200 (ContentPresenter::OnLoaded): Only unref the template if it isn't
13203 * contentpresenter.h (ContentPresenter::GetElementRoot):
13204 Implemented temporary binding hack.
13206 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13208 (ContentPresenter::OnPropertyChanged): Call
13209 PrepareContentPresenter() instead of ApplyTemplate().
13210 (ContentPresenter::OnApplyTemplate): Implemented.
13212 2009-01-22 Chris Toshok <toshok@ximian.com>
13214 * application.h, application.cpp: make surface a per-application
13215 thing, and add GetSurface/SetSurface.
13217 * cbinding.h, cbinding.cpp: regen.
13219 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
13221 * contentcontrol.cpp (ContentControl::ContentControl): I'm
13222 guessing this needs to call SetDefaultStyleKey as well.
13224 * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
13225 because that causes problems (the TextBox already has a logical
13226 parent). Instead, we'll just keep track of it internally
13228 (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
13229 when the TextBox property changed.
13231 * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
13232 the default style key.
13233 (ContentPresenter::OnLoaded): Load the default template.
13235 * contentpresenter.cpp|h: New source files. Subclass Control even
13236 though in managed-land, we technically subclass
13237 FrameworkElement. This way we can take advantage of Control's
13240 2009-01-22 Chris Toshok <toshok@ximian.com>
13242 * xaml.cpp (dependency_object_set_attributes): commit jackson's
13243 patch (with one slight modification) so everyone can have the
13244 wonderful world of non-broken setters.
13246 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
13248 * dependencyobject.h:
13249 * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
13250 around object counters (we define DEBUG always anyways, and the
13251 counters are always useful).
13253 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
13255 * dependencyobject.cpp: Protect objects_alive with a mutex.
13257 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
13259 * dependencyobject.h:
13260 * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
13263 2009-01-22 Stephane delcroix <sdelcroix@novell.com>
13266 * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
13267 first time it's needed.
13269 2009-01-21 Geoff Norton <gnorton@novell.com>
13271 * application.cpp: If we're set to NULL remove the application
13272 from the hash table.
13274 2009-01-21 Geoff Norton <gnorton@novell.com>
13276 * Makefile.am: Add bitmapimage.cpp to the build
13277 * application.cpp|h: Add a new callback into Application to
13278 return a resource stream.
13279 * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
13280 a managed resource stream and make this all native.
13281 * brush.cpp|h: Brush.ImageSource is now a BitmapImage
13282 * media.cpp|h: Image.Source is now a BitmapImage
13283 * xaml.cpp: BitmapImage can be constructed from a string in xaml
13285 * dependencyproperty.g.cpp: Regenerate
13287 2009-01-21 Larry Ewing <lewing@novell.com>
13289 * grid.cpp (Grid::MeasureOverride): rework the incremental
13290 contribution logic.
13292 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
13294 * contentcontrol.cpp (ContentControl::OnPropertyChanged):
13295 Implemented by calling ApplyTemplate() when ContentTemplate or
13296 Content properties change.
13297 (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
13298 when the content changes.
13300 2009-01-21 Larry Ewing <lewing@novell.com>
13302 * grid.cpp: store measurement info in the row and column
13303 definitions and don't allocate the arrays.
13305 2009-01-21 Larry Ewing <lewing@novell.com>
13307 * grid.cpp, grid.h: Hack things to handle missing row
13308 definitions and clean up some old errors.
13310 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
13312 * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
13313 rather than SetContent() since SetContent() has been removed.
13314 * contentcontrol.h (class ContentControl): Updated a bit, we're
13315 going to actually use this unmanaged class now.
13316 (class ContentControl): Set PropertyType for ContentProperty to
13317 'object' and get rid of the generated accessors.
13319 2009-01-21 Jackson Harper <jackson@ximian.com>
13321 * dependencyobject.cpp|h: When setting values, unmarshal values
13323 * value.h|cpp: Add unmarshal function so we can convert types
13324 coming from managed.
13327 * type-generated.cpp: Regenerated.
13329 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
13331 * dependencyproperty.g.cpp: Regenerated
13332 * text.cpp|h: Revert earlier change as it "turns black" too many
13333 things. DRT #47 will fail until I find the right fix :(
13335 2009-01-21 Larry Ewing <lewing@novell.com>
13337 * grid.cpp (Grid::ArrangeOverride): make the basic cases work
13340 2009-01-21 Alan McGovern <amcgovern@novell.com>
13342 * popup.cpp: Remove debug code from svn.
13344 2009-01-21 Alan McGovern <amcgovern@novell.com>
13351 * type-generated.cpp: Initial attempt at trying to get Popup.Child
13354 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
13356 * dependencyproperty.g.cpp: Regenerated
13357 * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
13358 ctor initialized value. This means that GetLocalValue won't return
13359 null for this property, which makes it behave correctly for SL1/JS
13361 [Fix DRT#47 failing since r123884]
13363 2009-01-20 Chris Toshok <toshok@ximian.com>
13365 * application.h, application.cpp: switch from using a static
13366 Application* for "Current" to a hashtable mapping MonoDomain* to
13369 2009-01-20 Jackson Harper <jackson@ximian.com>
13371 * xaml.cpp: Lookup resources in Application.Resources if we don't
13372 find the resource in the tree.
13374 2009-01-20 Chris Toshok <toshok@ximian.com>
13376 * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
13377 cbinding.cpp: regen.
13379 * Makefile.am (libmoon_include_headers): add application.h
13380 (libmoon_la_SOURCES): add application.cpp
13382 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
13383 if the style was set, call Application::ApplyStyle -- doesn't
13384 actually *apply* the style, it just converts the values.
13386 * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
13387 the ConvertedValueProperty after the setter is sealed.
13389 * style.h (class Setter): add ConvertedValueProperty.
13391 * textbox.h (class TextBox): remove @CallInitialize.
13393 * textbox.cpp (TextBox::TextBox): i hate the way this is
13394 expressed (we need a ManagedTypeInfo ctor/dtor), but set
13395 DefaultStyleKey here instead of in managed land.
13397 * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
13398 return the converted property value, not the original (which may
13399 have been a string.)
13400 (StylePropertyValueProvider::SealStyle): only put setters in the
13401 hash if their converted value is non-null.
13403 * control.h (class Control): generate accessors for
13406 * control.cpp (Control::OnLoaded): do the default style
13408 (Control::ApplyTemplate): output a little spew so we
13409 can tell if we're applying a template.
13411 * application.h, application.cpp: move Application here, and make
13412 it a full DO subclass. It no longer maps to the managed
13413 ApplicationInternal.
13415 * deployment.h: remove Application from here.
13417 2009-01-20 Jackson Harper <jackson@ximian.com>
13419 * xaml.cpp: When we create templates make sure we track the
13420 template ourself, we can't rely on the ControlTemplate still
13421 having a surface when it is applied.
13423 2009-01-20 Jeffrey Stedfast <fejj@novell.com>
13425 * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
13426 (Keyboard::OnKeyRelease): Same.
13428 2009-01-20 Jackson Harper <jackson@ximian.com>
13430 * clock.h: Set namespace for Duration and RepeatBehavior
13432 2009-01-20 Sebastien Pouliot <sebastien@ximian.com>
13434 * dependencyproperty.g.cpp: Regenerated
13435 * uielement.h: Re-apply default value for RenderTransformProperty
13437 2009-01-19 Larry Ewing <lewing@novell.com>
13441 * window-gtk.cpp, window-gtk.h: clean up the set background
13442 clearing logic and make it general.
13444 2009-01-19 Larry Ewing <lewing@novell.com>
13446 * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
13447 window to white by default.
13449 2009-01-19 Larry Ewing <lewing@novell.com>
13451 * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
13452 implementing arrangeoverride.
13454 2009-01-19 Larry Ewing <lewing@novell.com>
13456 * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
13457 screen message too.
13459 2009-01-19 Jackson Harper <jackson@ximian.com>
13462 * binding.h: Get kinds generated for these guys.
13464 * type-generated.cpp: updated
13466 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
13470 2009-01-19 Jackson Harper <jackson@ximian.com>
13472 * grid.h: GridLength lives in System.Windows.
13474 2009-01-19 Jackson Harper <jackson@ximian.com>
13476 * color.h: Colours are in System.Windows.Media.
13478 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
13480 * pipeline.h: Instead of overriding GetTypeName for media clases
13481 override GetObjectType so that the generator puts these classes into
13482 our type system. This will fix a lot of the "event not registered"
13487 * type-generated.cpp: Regenerated.
13489 2009-01-19 Alan McGovern <amcgovern@novell.com>
13498 * type-generated.cpp:
13499 * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
13501 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
13503 * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
13504 Add support for 'unsigned X' types (used in src/asf/).
13506 2009-01-18 Geoff Norton <gnorton@novell.com>
13508 * xaml.cpp: Only unref the surface if it exists.
13510 2009-01-18 Geoff Norton <gnorton@novell.com>
13512 * dependencyobject.cpp: Ensure that the parent scope registration
13513 behavior is only applied to UserControl's.
13515 2009-01-18 Geoff Norton <gnorton@novell.com>
13517 * xaml.cpp: Only ref the surface if it exists.
13519 2009-01-18 Larry Ewing <lewing@novell.com>
13521 * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
13523 * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
13524 arrange method for now.
13526 2009-01-18 Larry Ewing <lewing@novell.com>
13528 * control.cpp: update invaliate/measure to look more like border
13529 (still wrong) and remove some debug spew.
13531 2009-01-18 Sebastien Pouliot <sebastien@ximian.com>
13533 * cbinding.h|cpp, type.h, value.h: Regenerated
13534 * transform.h: Add UnmanagedMatrix (which is a DO accessible to
13535 managed code) and a new method to get the address of the matrix
13537 * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
13539 2009-01-17 Larry Ewing <lewing@novell.com>
13541 * canvas.cpp (Canvas::MeasureOverride):
13542 * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
13544 2009-01-17 Jackson Harper <jackson@ximian.com>
13546 * xaml.cpp: Dont create items for property elements. The element
13547 name for property elements can be an abstract type.
13549 2009-01-17 Jackson Harper <jackson@ximian.com>
13551 * xaml.cpp: Don't try to set properties that are collections,
13552 they've already had the items added in add_child.
13554 2009-01-17 Jackson Harper <jackson@ximian.com>
13556 * xaml.cpp|h: Change CreateObject to LookupObject and give it a
13557 flag for actually creating the object. This allows us to verify
13558 the type on hydrated elements without creating another instance
13559 and prevents a circular dependency when elements load themself in
13560 their LoadComponent xaml.
13562 2009-01-17 Geoff Norton <gnorton@novell.com>
13564 * dependencyobject.cpp: A custom UserControl has a local namescope
13565 but also needs to be locatable in its parent namescope.
13567 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
13569 * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
13570 different font size (not that TextBox really needs that since all
13571 runs will be the same exact font).
13573 * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
13574 to update the cursor rect.
13575 (TextBoxView::Layout): Update the cursor after we finish laying
13577 (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
13578 (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
13581 2009-01-16 Jackson Harper <jackson@ximian.com>
13583 * xaml.cpp: NULL is OK if it's being explicitly set.
13585 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
13587 * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
13588 cursor region and the new cursor region.
13589 (TextBoxView::Paint): Paint the cursor as well.
13591 * layout.cpp (Layout::GetCursor): Implemented.
13593 2009-01-16 Larry Ewing <lewing@novell.com>
13595 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
13598 * panel.cpp, panel.h: remove arrange override and make measure
13599 override return (0,0) always.
13601 2009-01-16 Larry Ewing <lewing@novell.com>
13603 * panel.cpp: Make ArrangeOverride and MeasureOverride do something
13604 closer to the right thing.
13606 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
13608 * textbox.cpp (TextBox::ArrangeOverride): Removed.
13609 (TextBox::Background) needs to return NULL if not selected mode -
13610 we don't want to be redrawing the normal bg.
13612 2009-01-16 Geoff Norton <gnorton@novell.com>
13614 * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
13615 we're going to keep it alive to apply control templates.
13617 2009-01-16 Geoff Norton <gnorton@novell.com>
13619 * template.cpp: Add the namescope to the closure to avoid
13620 referencing random memory.
13621 * xaml.cpp: We create a new XamlLoader when applying control
13622 templates, and inherit the callbacks. Set vm_loaded to true in
13625 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
13627 * textbox.cpp (TextBox::TextBox): Don't init the selection
13628 brushes, they must come from the style.
13630 2009-01-16 Larry Ewing <lewing@novell.com>
13632 * border.cpp, border.h:
13633 * uielement.cpp, uielement.h:
13634 * panel.cpp, panel.h:
13635 * canvas.cpp, canvas.h:
13636 * control.cpp, control.h: Remove GetTransformFor completely, use
13637 the layout slot x/y when computing the local transform,
13638 invalidatemeasure (for now) when updating the tranform.
13640 * dirty.cpp: hack in the intial Left/Top stuff until we can clean
13643 2009-01-16 Larry Ewing <lewing@novell.com>
13645 * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
13646 unless stretch is specified.
13648 2009-01-16 Geoff Norton <gnorton@novell.com>
13650 * mediaelement.h: The MediaElement.Source is a Uri on the managed
13653 2009-01-16 Jackson Harper <jackson@ximian.com>
13655 * xaml.cpp: FindTypeName type names dont' always have a
13656 namespace/assembly.
13657 - Special case Application and don't try to find it's name since
13658 it is renamed in the managed code. (Need to figure out a better
13660 - Pass in NULL for setting propertys and let the underlying types
13661 determine whether or not that is an error.
13663 2009-01-16 Jackson Harper <jackson@ximian.com>
13665 * xaml.cpp: Before going to managed to create an element, scan the
13666 xnamespace for the x:Class attribute and pass that in as the
13667 element name if we have one, this allows you to use abstract names
13668 for the elements as long as the x:Class is a complete type. Should
13669 also allow us to optimize out a trip into managed.
13671 2009-01-16 Jackson Harper <jackson@ximian.com>
13673 * xaml.cpp: The xaml context needs to store the callbacks so that
13674 we can properly invoke managed code in a template.
13676 2009-01-16 Jackson Harper <jackson@ximian.com>
13678 * dependencyproperty.cpp: This warning isn't really needed and now
13679 with managed DP lookup's, this scenario happens about a trillion
13680 times during parsing of generic.xaml.
13682 2009-01-16 Larry Ewing <lewing@novell.com>
13684 * uielement.h (class UIElement): remove the default value from
13685 RenderTransformProperty until the bugs it introduces are resolved.
13687 * dependencyproperty.g.cpp:Regenerated.
13689 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
13691 * dependencyproperty.g.cpp: Regenerated
13692 * grid.h: Add default values for [Column|Row]Definition Width
13694 * xaml.cpp: Fix most cases (except empty) of GridLength
13696 2009-01-15 Geoff Norton <gnorton@novell.com>
13698 * downloader.cpp|h: Add downloader_response_abort.
13700 2009-01-15 Jackson Harper <jackson@ximian.com>
13702 * xaml.cpp|h: We need to pass a pointer to the elements parent
13703 object to managed code, this is so we can look up a Setter's
13705 - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
13707 2009-01-15 Jackson Harper <jackson@ximian.com>
13709 * dependencyproperty.cpp: Patch mostly by rolf. Allows property
13710 lookup to work on custom types that subclass custom types.
13711 * template.cpp: Now that templates work pretty well, lets reduce
13714 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
13716 * dependencyproperty.g.cpp: Regenerated to include the specified
13717 type (and not the implied one from the default value)
13718 * uielement.h: RenderTransformProperty defaults to a empty (identity)
13721 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
13723 * textbox.cpp: Removed default_*[fore,back]ground() functions as
13724 well as textbox_shutdown() since they are no longer needed.
13725 (TextBox::TextBox): Initialize the default SelectionBackground and
13726 SelectionForeground brushes.
13728 * layout.h (struct TextSelection): Removed brushes from
13729 TextSelection struct.
13731 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
13733 * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
13734 Cannot compare a guint64 with -1, presuming the comparison was
13735 meant to be against TimeSpan_FromPTS (position) instead.
13737 * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
13738 instead of SelectionChangedEventArgs.
13740 * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
13741 ctor that takes a source.
13743 * textbox.h (class SelectionChangedEventArgs): Removed, this type
13744 of EventArgs is not actually emitted by TextBox as I had
13745 originally thought. TextBox's SelectionChanged event uses
13748 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
13750 * type-generated.cpp:
13751 * dependencyproperty.g.cpp: Regenerated.
13754 * mediaelement.cpp: Inherit directly from FrameworkElement instead of
13755 MediaBase. This requires copying some code from MediaBase into
13756 MediaElement (which at some later stage would move into Media).
13758 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
13761 * cbinding.cpp: Regenerated.
13766 * type-generated.cpp:
13767 * dependencyproperty.h:
13768 * dependencyproperty.cpp: Add support for looking up custom dependency
13769 properties by name.
13771 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
13773 * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
13774 Add comment on value_from_str_with_typename to update NativeMethods.cs
13776 2009-01-15 Larry Ewing <lewing@novell.com>
13781 * frameworkelement.cpp: start taking layout slot into account when
13784 2009-01-15 Jackson Harper <jackson@ximian.com>
13786 * xaml.cpp: Storyboard are allowed to have an x:Name and an
13787 x:Key. This is for backwards compatibility because SL1 didn't have
13788 x:Key. It's also stupid.
13790 2009-01-15 Jackson Harper <jackson@ximian.com>
13792 * xaml.cpp: Add a fake element to templates with all the imported
13793 namespaces. This allows all the namespaces imported in the main
13794 source to work in the template.
13796 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
13798 * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
13800 (TextBoxView::Layout): Build the text runs based on the selection.
13801 (TextBoxView::Paint): Updated to no longer pass the selection
13802 state to the layout engine.
13804 * layout.h (class ITextSource): Added a Background() accessor and
13805 changed the Foreground() accessor to take a bool selected
13808 * layout.cpp (RenderSegment): Render the background if non-NULL.
13809 (TextRun::TextRun): Now takes a 'selected' state.
13810 (TextLayout::Render): No longer takes selection or cursor
13813 2009-01-14 Jackson Harper <jackson@ximian.com>
13815 * xaml.cpp: Fix x:Null handling.
13817 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
13819 * brush.h: Add default values used by some brushes
13820 * dependencyproperty.g.cpp: Regenerated
13822 2009-01-14 Larry Ewing <lewing@novell.com>
13824 * panel.cpp (Panel::GetTransformFor): override gettransformfor for
13827 2009-01-14 Jackson Harper <jackson@ximian.com>
13829 * xaml.cpp: Add the namespaces to the xaml context.
13831 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
13833 * textbox.cpp (TextBox::CursorBackSpace): Implemented.
13834 (TextBox::CursorDelete): Implemented.
13836 * layout.cpp (RenderSegment): Split out from RenderLine().
13838 2009-01-14 Jackson Harper <jackson@ximian.com>
13840 * xaml.cpp: Apparently there is a new NULL on the block. Use
13841 SetIsNull instead of a NULL Value* now.
13843 2009-01-14 Jackson Harper <jackson@ximian.com>
13845 * template.cpp: initialize xaml_context. (fixes shutdown crash)
13847 2009-01-14 Jackson Harper <jackson@ximian.com>
13849 * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
13850 these before my last patch.
13852 2009-01-14 Jackson Harper <jackson@ximian.com>
13854 * xaml.cpp: Styles use their TargetType as their
13855 ResourceDictionary key.
13856 - Handle the new type MANAGEDTYPEINFO by allowing the managed code
13858 * value.cpp|h|.h.in:
13859 * type.h|h.in: New type, ManagedTypeInfo. Contains info for
13860 loading managed types.
13863 * template.h: Use ManagedTypeInfo when we have a System.Type on
13865 * dependencyproperty.g.cpp:
13866 * typegenerated.cpp: Regen
13868 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
13870 * textbox.cpp: More fixes for cursor movement & keyboard selection.
13872 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
13874 * grid.cpp (MeasureOverride): Free allocated arrays
13876 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
13878 * grid.cpp: Add a bunch of NULL checks for width and height to avoid
13879 crashes when running the SDK controls unit tests.
13881 2009-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
13883 * dependencyobject.cpp: Fix
13884 media/video/test-reset-media-element-source.html.
13886 2009-01-14 Alan McGovern <amcgovern@novell.com>
13888 * enums.cpp: Control.HorizontalContentAlignment should map to the
13889 HorizontalAlignment enum.
13891 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
13893 * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
13896 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
13898 * deepzoomtilesource.h: mark it with CallInitialize
13900 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
13902 * tilesource.h|cpp: autogenerate the cbinding
13904 * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
13905 managed side for xml parsing.
13907 2009-01-13 Chris Toshok <toshok@ximian.com>
13909 * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
13911 (XamlLoader::CreateFromStringWithError): same.
13912 (XamlLoader::HydrateFromStringWithError): same.
13913 (~XamlLoader): unref the error_args.
13914 (XamlLoader::HydrateFromString): no need to ref the object again
13915 here if it was passed in.
13917 2009-01-13 Larry Ewing <lewing@novell.com>
13919 * uielement.cpp, uielement.h (class LayoutInformation): add
13920 LayoutInformation class to hold the layout related attached
13921 properties. (will move it later).
13923 * frameworkelement.cpp: use the new layout information and use it
13926 * border.cpp: fix the arrange logic.
13928 2009-01-13 Larry Ewing <lewing@novell.com>
13930 * shape.cpp: switch over to using the computed values for stretch.
13932 * frameworkelement.cpp:
13934 * dirty.cpp, dirty.h: Try to get invalidation logic close to
13937 2009-01-13 Larry Ewing <lewing@novell.com>
13939 * shape.cpp: treat rect and ellipse like normal framework elements.
13941 2009-01-13 Larry Ewing <lewing@novell.com>
13943 * frameworkelement.cpp:
13947 * mediaelement.cpp:
13948 * panel.cpp: Use the layout values for values we used to compute
13951 2009-01-13 Larry Ewing <lewing@novell.com>
13953 * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
13954 collection while iterating.
13956 2009-01-13 Larry Ewing <lewing@novell.com>
13959 * src/frameworkelement.cpp
13961 * src/panel.cpp, src/panel.h: layout updates
13963 2009-01-13 Larry Ewing <lewing@novell.com>
13965 * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
13968 * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
13970 2009-01-13 Larry Ewing <lewing@novell.com>
13972 * shape.cpp, shape.h: start moving cleaning up references to width
13973 and height and moving towards using the layout logic. Remove
13974 stale LargestRect stuff
13976 * runtime.c, dirty.h: stub in an update layout function.
13978 * border.cpp, canvas.cpp: try to match some more tests.
13980 2009-01-13 Jeffrey Stedfast <fejj@novell.com>
13982 * textbox.cpp (TextBox::CursorPageDown): Implemented.
13983 (TextBox::CursorPageUp): Implemented.
13984 (TextBox::CursorHome): Implemented.
13985 (TextBox::CursorEnd): Implemented.
13986 (TextBox::CursorDown): Implemented.
13987 (TextBox::CursorUp): Implemented.
13988 (TextBox::OnKeyDown): Implemented Select-All keybinding and
13989 stubbed out cut/copy/paste.
13991 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
13993 * dependencyproperty.g.cpp: Regenerated
13994 * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and
13995 Shape.StrokeDashArray and set them in the constructors (which is
13996 bit ifferent and fix Polyhedra animation).
13998 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
14000 * dependencyproperty.g.cpp: Regenerated
14001 * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
14002 StrokeDashArray since they are not NULL in SL2
14004 2009-01-13 Alan McGovern <amcgovern@novell.com>
14006 * src.mdp: Add the provider stuff to the MD solution
14008 2009-01-13 Chris Toshok <toshok@ximian.com>
14010 * provider.cpp (StylePropertyValueProvider::SealStyle): only
14011 insert the setter into the hash if the setter's value matches the
14012 type of the setter's property. Fixes
14013 StyleTest.InvalidValueProgrammatically.
14015 2009-01-13 Jackson Harper <jackson@ximian.com>
14017 * xaml.cpp|h: Add the ability to lookup full uri's based on local
14018 prefixes. This is so managed can convert something like
14019 'local:' into 'clr-namespace=Foo;assembly=bar'
14021 2009-01-13 Jackson Harper <jackson@ximian.com>
14023 * xaml.cpp|h: Pass the ParserInfo to every callback, this will
14024 allow us to call back into unmanaged to do extra stuff.
14026 2009-01-13 Stephane Delcroix <sdelcroix@novell.com>
14028 * tilesource.h|cpp: add a callback and a method to set the callback
14029 so we can poke the managed GetTileLayers.
14031 2009-01-12 Chris Toshok <toshok@ximian.com>
14033 * style.cpp, style.h (Style::GetPropertyValue): remove this. it's
14034 been replaced by the hash lookup in the style provider.
14036 * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
14037 change... apparently there's something that happens to lower
14038 precedence providers after you call ClearValue, but *only if the
14039 local value was actually cleared*. yuck.
14041 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
14042 remove the Style sealing from SetValueWithErrorImpl, and move it
14043 here where it should have been all along. Also, do the sealing
14044 via the Style value provider, so it can make things a bit more
14047 * provider.cpp (StylePropertyValueProvider::SealStyle): new
14048 method, called by FWE::OnPropertyChanged when the style is
14049 initially set. we cache the setters (keyed by DP) in a hashtable.
14050 (StylePropertyValueProvider::RecomputePropertyValue): this is the
14051 magic method that DependencyObject::ClearValue calls, which causes
14052 the style provider to refresh its cache for the listed property.
14054 2009-01-12 Jackson Harper <jackson@ximian.com>
14056 * xaml.cpp: Fix typo, makes ControlTemplates inside of
14057 ControlTemplates work properly.
14059 2009-01-12 Jackson Harper <jackson@ximian.com>
14061 * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
14062 we can load some sites and see which properties are missing, right
14063 now it will only work for attributes. Intentionally not using the
14064 debug flags stuff, because i don't want this hack to stay around
14067 2009-01-12 Jackson Harper <jackson@ximian.com>
14069 * xaml.cpp: Stop trying to set attributes once we hit the first
14072 2009-01-12 Jeffrey Stedfast <fejj@novell.com>
14074 * collection.cpp (InlineCollection::Equals): New convenience
14075 method to replace text.cpp's inlines_simple_text_equal().
14077 * textbox.h (class TextBox): Now implements ITextSource.
14079 * text.cpp (Inline::UpdateFontDescription): New convenience method
14080 to populate the cached TextFontDescription since we can no longer
14081 rely on doing so from within OnPropertyChanged().
14082 (Inline::Equals): Base comparison method used by
14083 InlineCollection::Equals().
14084 (Run::Equals): Compare the Text property as well.
14085 (TextBlock::Layout): Call UpdateFontDescription() on each Inline
14086 as we iterate through them. Also updated for TextRun ctors.
14087 (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
14088 premise is that we do not want to force a layout calculation to be
14089 redone, we just need to invalidate if all that changed was a
14091 (inlines_simple_text_equal): Removed, use
14092 InlineCollection::Equals() instead.
14093 (TextBlock::SetTextInternal): Updated to use
14094 InlineCollection::Equals().
14096 * text.h (class Inline): Now implements the ITextSource
14097 interface. Moved the local TextFontDescription and autogen state
14098 into the private section and added accessors for them.
14100 * layout.cpp|h (class ITextSource): New interface sued by TextRuns
14101 and the internal Layout logic to grab a run's foreground brush and
14103 (TextRun::ctor): No longer take TextDecoration,
14104 TextFontDescription, or Brush arguments, instead takes an
14105 ITextSource that it can query for those properties when it needs
14107 (RenderLine): Updated to get the decorations and foreground brush
14108 from the ITextSource.
14110 2009-01-12 Alan McGovern <amcgovern@novell.com>
14115 * dependencyproperty.g.cpp: Add range validation to TimeSpan
14117 2009-01-12 Jackson Harper <jackson@ximian.com>
14119 * xaml.cpp: Moved nameditem lookup into the parser info so we can
14120 use the parser context data to lookup resources. This allows
14121 templates to reference StaticResources.
14123 2009-01-12 Alan McGovern <amcgovern@novell.com>
14125 * clock.cpp: Minimum FPS is clamped at 1.
14127 2009-01-12 Jackson Harper <jackson@ximian.com>
14129 * xaml.cpp|h: Create a xaml context object so we can save some
14130 state information for buffered templates.
14131 * template.h|cpp: Updated xaml methods.
14133 2009-01-12 Alan McGovern <amcgovern@novell.com>
14138 * dependencyproperty.g.cpp: Add correct validator for
14139 Storyboard.TargetName and Storyboard.TargetProperty
14141 2009-01-12 Sebastien Pouliot <sebastien@ximian.com>
14143 * grid.h: Hide RowDefinitionCollection ctor from managed code
14144 * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
14145 returns true the Style value can still be NULL (fix two new crash
14146 in SDK control unit tests)
14148 2009-01-12 Andreia Gaita <avidigal@novell.com>
14150 * stackpanel.cpp|h: removed, stackpanel is now done in managed
14153 * cbinding.cpp|h, dependencyproperty.g.cpp,
14154 type-generated.cpp, type.h,
14157 * Makefile.am, src.mdp: update build
14159 2009-01-11 Chris Toshok <toshok@ximian.com>
14161 * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
14162 now. the run fg will always be initialized.
14163 (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
14164 (TextLayout::Render): no need to pass in the default foreground.
14166 * runtime.cpp (runtime_shutdown): text_shutdown is gone.
14168 * text.h, text.cpp: stop caching the foreground. and there's no
14169 need to create the default foreground brush in code. it's simply
14170 the default value of the Foreground dependency property.
14171 (inlines_simple_text_equal): this needed fixing up since the font
14172 flags really aren't used for inheritance anymore - we need (and
14173 really, always needed to) compare the actual values, not just if
14175 (text_shutdown): no need for this anymore.
14177 * textbox.cpp (TextBoxView::Paint): same. no more default_fg
14180 2009-01-11 Chris Toshok <toshok@ximian.com>
14182 * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
14183 if a DO is frozen, any SetValue() call raises an
14184 UnauthorizedAccessException. We use this for default values of
14185 DependencyProperties.
14187 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
14188 freeze the default value.
14190 2009-01-11 Andreia Gaita <avidigal@novell.com>
14192 * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(),
14193 it could be called in the middle of a tick. Instead, just reset and
14194 reuse the clock on every tick. Track if the timer is stopped during
14195 a tick so the clock is not relaunched. Set a default duration so
14196 it's never automatic.
14198 2009-01-11 Chris Toshok <toshok@ximian.com>
14200 * text.h, text.cpp (class Inline): generate accessors for
14201 FontFamily, FontSize, and TextDecoration.
14202 (class Inline, class TextBlock): add an internal DP for the font
14204 (Inline::OnPropertyChanged): the only case that's needed at the
14205 moment is foreground, but that's slated for the axe as well.
14207 * dependencyproperty.g.cpp: regen.
14209 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
14210 make sure we inherit properly across the logical tree if the node
14211 doesn't have a visual parent (this fixes inheritance for non
14212 UIElement's, like Runs). Also, add the FontFilename property to
14213 the list of things that inherit.
14215 * dependencyobject.h,
14216 dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
14217 method. Providers can call this whenever the value at their
14218 precedence level has changed. It contains all the smarts to
14219 correctly generate OnPropertyChanged method calls in the face of
14220 all the provider levels.
14222 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
14224 * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
14225 TextChangedEvent and SelectionChangedEvent. Don't combine those
14226 into the ModelChangedEvent that is only meant for TextBoxView.
14227 (TextBox::OnPropertyChanged): Emit TextChangedEvent and
14228 SelectionChangedEvent appropriately.
14229 (TextBoxView::OnSelectionChanged): New event callback handler.
14230 (TextBoxView::OnTextChanged): Same.
14231 (TextBoxView::OnModelChanged): Don't handle text/selection change
14232 notification here anymore, because those 'change' enum types have
14234 (TextBoxView::OnPropertyChanged): Need to listen to more events.
14236 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
14238 * value.cpp (Value::Value): the const char* ctor now takes a bool
14239 argument specifying whether to take ownership of the string
14242 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
14243 don't need to keep a char* selection, we only need it temporarily
14244 while creating the Value*.
14245 (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
14247 (TextBox::ClearSelection): Don't set the TextProperty value
14248 anymore. Also don't bother with the setvalue state variable
14250 (TextBox::OnPropertyChanged): Don't worry about setvalue state
14252 (TextBox::TextBox): Get rid of 'setvalue' state.
14254 2009-01-10 Geoff Norton <gnorton@novell.com>
14256 * media.cpp: surface->filename might be NULL, so we need to guard
14257 against this in our cleanup accordingly.
14259 2009-01-09 Chris Toshok <toshok@ximian.com>
14261 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14262 oops. we still need to seal the style if that's the thing we're
14265 2009-01-09 Chris Toshok <toshok@ximian.com>
14267 * Makefile.am (libmoon_include_headers): add provider.h
14268 (libmoon_la_SOURCES): add provider.cpp
14270 * provider.h, provider.cpp: clean up this some. the only provider
14271 really not being used right now is the Animation value provider,
14272 since the animation code assumes it can just set local values.
14274 * shape.cpp (Shape::OnPropertyChanged): no need to look up the
14275 default value - GetValue will return it now.
14277 * textbox.h, textbox.cpp (class
14278 TextBoxDynamicPropertyValueProvider): new custom provider class to
14279 replace the ::GetValue override. Install it in the ctor.
14281 * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
14282 new custom provider class to replace the ::GetValue override.
14283 Install it in the ctor.
14284 (GetBoundingWidth, GetBoundingHeight): don't use
14286 (SetActualHeight, SetActualWidth): no longer needed.
14287 (textblock_property): no longer needed.
14288 (Inline::GetDefaultValue): no longer needed. the inherited
14289 property provider handles it.
14290 (TextBlock::OnPropertyChanged): no need to deal with
14291 Actual{Height,Width}Property here anymore.
14293 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
14294 remove styles initialization.
14295 (FrameworkElement): remove styles destruction.
14296 (FrameworkElement::ClearValue): this doesn't need any styles stuff
14297 anymore - just clear the binding if we have one, and otherwise
14299 (FrameworkElement::GetLocalValue): I'm not sure why this was
14300 looking things up via a style, as styles are a lower priority than
14301 local values. if there's a binding return that, otherwise chain
14303 (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
14305 (FrameworkElement::UpdateFromStyle): remove. the style lookup is
14306 done in the style provider.
14309 * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
14310 public Style* field and use SetStyle to set it.
14311 (Style::GetPropertyValue): new method. this should probably be a
14312 hash lookup instead of the linear lookup, but for now this will
14314 (SetterBaseCollection::ValidateSetter): make this a static method
14315 on the class instead of just a C function.
14317 * dependencyobject.h: add a couple more GetValue overrides to deal
14318 with precedence levels. Remove GetDefaultValue, as it's no longer
14319 needed - we can finally use DependencyProperty::GetDefaultValue as
14320 it's meant to be used.
14322 * dependencyobject.cpp (DependencyObject::GetLocalValue): change
14323 this to just call the LocalValue provider.
14324 (DependencyObject::GetValue (DependencyProperty* property)): call
14325 the overload that lets us specify a starting precedence (start at
14326 the highest precedence level).
14327 (DependencyObject::GetValue (DependencyProperty *property,
14328 PropertyPrecedence startingAtPrecedence)): new method. loop over
14329 the providers until one of them gives us a value.
14330 (DependencyObject::GetValueSkippingPrecedence): we need this for
14331 looking up the value of FrameworkElement::StyleProperty from
14332 inside the style provider.
14333 (DependencyObject::GetValueNoDefault): reimplement this for the
14334 time being using the providers.
14335 (DependencyObject::DependencyObject): register all the default
14336 providers. we leave a DynamicValue slot open for subclasses who
14337 want to implement "computed" properties.
14338 (DependencyObject): free all the providers.
14340 * dependencyproperty.g.cpp: regen
14342 2009-01-09 Geoff Norton <gnorton@novell.com>
14344 * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
14346 2009-01-09 Geoff Norton <gnorton@novell.com>
14348 * media.cpp: Ensure that we actually do change the value of the
14349 Source property when we call MediaBase::SetSource (char*)
14351 2009-01-09 Jeffrey Stedfast <fejj@novell.com>
14353 * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
14354 with layout-hint changes (including TextWrapping hints).
14355 (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
14356 anymore. Also no need to set the wrapping mode here anymore as it
14357 is set in OnProeprtyChanged() now.
14359 * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
14360 it doesn't make sense to have them separate.
14362 * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
14363 we'll pass changes directly to the View as they get updated.
14364 (TextBox::OnPropertyChanged): If the layout hints change, set
14365 changed to the appropriate TextBoxModelChanged hint enum. Also
14366 pass the PropertyChangedEventArgs to the ModelChangedEventArgs
14367 ctor so that TextBoxView can grab the new value to update its
14369 (TextBoxView::OnModelChanged): Handle the new enums.
14370 (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
14371 a new TextBox gets set.
14373 2009-01-09 Alan McGovern <amcgovern@novell.com>
14375 * dependencyproperty.cpp: 'validator' should never be null - it should
14376 be default_validator instead. Regression caused by previous change to
14379 2009-01-09 Alan McGovern <amcgovern@novell.com>
14381 * validators.cpp: Validator only converts -1 to null. All other values
14382 appear to be left the same
14384 2009-01-09 Alan McGovern <amcgovern@novell.com>
14388 * validators.cpp: Add a validator to AudioStreamIndex. This converts
14389 negative values to null, as the unit tests show.
14391 2009-01-09 Alan McGovern <amcgovern@novell.com>
14393 * dependencyproperty.h:
14394 * dependencyproperty.cpp:
14395 * dependencyproperty.g.cpp: Make it possible to use validators with
14396 Nullable properties.
14398 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
14400 * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
14401 (Glyphs::GetFill): Same.
14403 * text.h (class Glyphs): GenerateAccessors for FillProperty too.
14405 * textbox.cpp (TextBox::CursorRight): Implemented.
14406 (TextBox::CursorLeft): Implemented.
14407 (TextBox::GetValue): New override to set the SelectedText property
14408 if the selection has been changed since the last request.
14410 * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
14412 * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
14413 different way so that we don't have to use GetValueNoDefault().
14415 2009-01-08 Larry Ewing <lewing@novell.com>
14417 * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
14419 * geometry.h, geometry.cpp (class RectangleGeometry): remove
14420 GetRadius logic everything is handled property by the properties
14423 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
14425 * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
14428 * keyboard.cpp (Keyboard::KeyIsChar): Removed.
14429 (Keyboard::KeyToChar): Removed.
14430 (Keyboard::KeyIsMovement): Removed.
14432 * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
14433 GetState() to make the purpose clearer.
14434 (KeyEventArgs::IsModifier): New helper method.
14435 (KeyEventArgs::GetKeyVal): New helper method.
14436 (KeyEventArgs::GetUnicode): New helper method.
14438 * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
14439 state, all places that set dirty=true are now handled by
14440 TextBoxView instead. Only call Invalidate() when appropriate. For
14441 selection state changes, check setvalue state to see if we need to
14443 (TextBox::ClearSelection): New helper method to clear the
14445 (TextBox::OnKeyDown): Properly clear the selection using
14446 ClearSelection() so that the DP values get updated.
14448 2009-01-08 Larry Ewing <lewing@novell.com>
14450 * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
14451 replace it with proper NAN state. Remove MixedWidthAndHeight for
14452 c&p checks that will be removed in the layou code.
14454 * frameworkelement.cpp: more nan cleanup.
14457 * control.cpp: handle nan.
14459 2009-01-08 Alan McGovern <amcgovern@novell.com>
14464 * frameworkelement.cpp:
14465 * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
14466 to/from native. This removes a hack in Style where DP's used to be
14467 looked up by name, which couldn't be done with properties registered
14468 through C#. Fixes 2 NUnit tests.
14470 2009-01-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
14473 * validators.cpp: Added DoubleGreaterThanZeroValidator.
14475 * mediaelement.h: Use double validator instead of int validator for
14478 * dependencyproperty.g.cpp: Regenerated.
14480 2009-01-08 Alan McGovern <amcgovern@novell.com>
14482 * dependencyobject.cpp: *Warning - Changing default values* When
14483 DO.ClearValue is called, we always return 'NULL' as the new value.
14484 This is incorrect as the pattern: do.ClearValue (property),
14485 do.GetValue (property) will actually return do.GetDefaultValue
14486 (DependencyProperty*). This change fixes a failing assertion in
14487 StyleTest.cs - ModifyAfterBinding.
14489 2009-01-08 Sebastien Pouliot <sebastien@ximian.com>
14491 * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
14492 Regenerated for ITEM_COLLECTION
14494 2009-01-08 Alan McGovern <amcgovern@novell.com>
14497 * dependencyobject.h:
14498 * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
14499 overridden by Inlines
14501 2009-01-07 Larry Ewing <lewing@novell.com>
14503 * frameworkelement.cpp, frameworkelement.h:
14504 move all the various duplicate versions GetTransformOrigin here.
14506 * mediaelement.cpp: fix GetTransformOrigin for new default values.
14508 * shape.cpp, shape.h:
14509 * canvas.cpp, canvas.h:
14510 * media.cpp, media.h:
14511 * shape.cpp, shape.h:
14512 * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
14516 2009-01-07 Geoff Norton <gnorton@novell.com>
14518 * collection.cpp: Ensure that we call any AddWithError overrides
14519 that might exist in a subclass (like TimelineMarkerCollection) as
14520 it could affect the integer returned.
14522 2009-01-07 Geoff Norton <gnorton@novell.com>
14524 * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
14525 to TextStream::OpenFile
14526 * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
14527 * downloader.cpp: GetResponseText needs to ensure it returns data in
14528 UTF-8, and doesn't handle zip files.
14530 2009-01-07 Jeffrey Stedfast <fejj@novell.com>
14532 * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
14533 input a bit. Cutting a lot of corners for now, but oh well.
14534 (TextBoxView::TextBoxView): Hooked up some cursor blinking
14535 action. We don't actually render the cursor yet tho.
14537 * keyboard.cpp (Keyboard): Moved into it's own source file from
14538 eventargs.cpp. I have a sneaking suspicion that this logic will
14539 get large and complicated someday soon.
14541 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
14543 * dependencyobject.cpp (set_surface): Add null check since the
14544 hashtable can contain Value with a NULL DependencyObject
14546 2009-01-07 Larry Ewing <lewing@novell.com>
14549 * frameworkelement.cpp:
14550 * shape.cpp: Quick hacks to get test 0 passing after the default
14553 2009-01-07 Chris Toshok <toshok@ximian.com>
14555 * textbox.h (class TextBox): add @CallInitialize so we can set the
14558 * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
14559 call to before ApplyTemplate(), as the template isn't applied
14560 until after the Loaded event is fired.
14562 2009-01-07 Geoff Norton <gnorton@novell.com>
14564 * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
14565 memory cache of all downloads <= 64KB that are streamed in 1 shot.
14567 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
14569 * contentcontrol.h|cpp: Remove properties that are not in SL2 final
14570 * dependencyproperty.g.cpp: Regenerated.
14572 2009-01-07 Alan McGovern <amcgovern@novell.com>
14577 * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
14578 it to the default cursor instead.
14580 2009-01-06 Larry Ewing <lewing@novell.com>
14582 * uielement.h (class UIElement): add a default value to
14583 UIElement::CusorProperty, fixes a crossing event crash.
14585 * uielement.cpp (UIElement::ElementRemoved): remove the element
14586 from the dirty list since it is an orphan now.
14588 * runtime.cpp (Surface::PaintToDrawable): add some logging.
14590 2009-01-06 Jeffrey Stedfast <fejj@novell.com>
14592 * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
14593 callbacks so that we can eventually make TextBox receive keyboard
14594 input. Currently the events never seem to fire, tho.
14596 2009-01-06 Sebastien Pouliot <sebastien@ximian.com>
14598 * enums.h: Add enums values for MouseCursorSize[NS|WE]
14599 * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
14601 2009-01-06 Alan McGovern <amcgovern@novell.com>
14603 * frameworkelement.cpp:
14604 * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
14605 again after my previous commit changing the handling of
14606 GetValue/GetLocalValue.
14608 2009-01-06 Alan McGovern <amcgovern@novell.com>
14612 * dependencyobject.h:
14613 * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
14614 DP.GetDefaultValue function. Fixed the implementation of 'null'
14615 Value*. Now a Value* with GetIsNull () == true will be returned as
14616 'NULL' for calls to GetValue or GetValueNoDefault. This makes
14617 Value.GetIsNull opaque to native code so existing null checks will
14618 work as they should. The only function which is aware of GetIsNull is
14619 GetLocalValue, and this correctly handles this case.
14621 2009-01-06 Alan McGovern <amcgovern@novell.com>
14626 * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
14627 null string is passed to PasswordBox.Password. Use correct range
14628 validation for MaxLength.
14630 2009-01-06 Alan McGovern <amcgovern@novell.com>
14632 * frameworkelement.h:
14633 * frameworkelement.cpp:
14634 * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
14637 2009-01-06 Alan McGovern <amcgovern@novell.com>
14641 * frameworkelement.cpp: Implement proper validation of Setters and also
14642 correctly implement behaviour of sealed/unsealed styles. They are now
14643 passing all the NUnit tests except for one.
14645 2009-01-05 Chris Toshok <toshok@ximian.com>
14647 * frameworkelement.h, frameworkelement.cpp: remove all reference
14648 to template_namescope.
14650 * template.cpp (ControlTemplate::Apply): remove call to
14651 FrameworkElement::SetTemplateNameScope - just set it as the
14652 namescope on the root of the applied template. This way name
14653 references within the template resolve correctly.
14655 * control.cpp (Control::GetTemplateChild): with the above change,
14656 this just becomes template_root->FindName ()
14658 2009-01-05 Sebastien Pouliot <sebastien@ximian.com>
14660 * runtime.cpp: Add a null check in Surface::FocusElement since both
14661 the C bindings and the MouseLeftButtonDown event can call it with a
14662 NULL value causing a SIGSEGV.
14664 2009-01-05 Jeffrey Stedfast <fejj@novell.com>
14666 * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
14667 TextBoxView in the appropriate place.
14669 * control.cpp (Control::GetTemplateChild): Now takes a const
14672 2009-01-05 Alan McGovern <amcgovern@novell.com>
14674 * uielement.h: Cursor shouldn't have a default value in SL2.
14677 * dependencyobject.h:
14678 * dependencyobject.cpp:
14679 * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
14680 code calling NameScope::[Un]RegisterName to ignore empty names just
14681 like it ignores null names.
14683 2009-01-05 Alan McGovern <amcgovern@novell.com>
14687 * frameworkelement.h:
14688 * frameworkelement.cpp:
14689 * dependencyproperty.h:
14690 * dependencyproperty.cpp:
14691 * dependencyproperty.g.cpp: We need a reference to the current
14692 DependencyProperty so that write-once properties can be properly
14693 validated. Moved validation of StyleProperty from
14694 FrameworkElement.SetValue into the new StyleValidator.
14696 2009-01-05 Alan McGovern <amcgovern@novell.com>
14700 * dependencyobject.cpp:
14701 * dependencyproperty.h:
14702 * dependencyproperty.cpp: When validating the Value we need a reference
14703 to the current DependencyObject as some properties are
14704 write-once/read-only
14706 2009-01-02 Jeffrey Stedfast <fejj@novell.com>
14708 * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
14709 dirty flag. TextBox is basically just a model now. Also added a
14710 ModelChanged event.
14711 (TextBox::Render): Removed.
14712 (TextBox::GetValue): Removed, dunno why it was ever overridden.
14713 (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
14714 view needs to be updated.
14715 (TextBoxView): New class that renders the contents of a TextBox
14718 * value.cpp (Value::GetIsNull): Fixed compiler warning.
14720 * pipeline.h (class MediaMarker): dtor needs to be virtual.
14722 2009-01-02 Sebastien Pouliot <sebastien@ximian.com>
14724 * validators.cpp: Remove the printf calls (that won't compile under
14725 SLED10 without changing includes).
14727 2008-12-22 Alan McGovern <amcgovern@novell.com>
14732 * dependencyproperty.g.cpp: Add validators for the Border class
14736 * value.h.in: unused_padding is now used as a bitfield. Currently used
14737 to indicate whether an object is null or not
14739 * frameworkelement.cpp: the styles hashtable only indicates if the
14740 current value comes from a style. It does not show if a dp has been
14741 bound to a style. If the current value is cleared, we need to update
14742 from the style to repopulate the styles hashtable and correctly set
14743 the style value. This can be optimised by passing the current dp to
14746 * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
14747 set the null value as opposed to calling do.ClearValue(dp).
14749 2008-12-22 Andreia Gaita <avidigal@novell.com>
14751 * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
14752 Regenerated for DispatcherTimer
14754 * animation.h: Move Completed events to the timeline
14756 * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
14757 clock whose duration is the timer Interval property. The timeline's
14758 completed event is a tick of the timer, and the clock gets restarted
14760 Save the current time when a clock starts so that clocks that are
14761 set to be started on the next tick with BeginOnTick include the time
14762 between the BeginOnTick call and the actual Begin in their elapsed
14763 time. Also, clocks beneath the time manager root clock now track time
14764 since they were started, and not since the time manager started.
14766 2008-12-20 Larry Ewing <lewing@novell.com>
14768 * mediaelement.cpp (MediaElement::UpdateProgress):
14769 * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
14770 to 0.05 which appears to be what the docs actually say.
14772 2008-12-19 Sebastien Pouliot <sebastien@ximian.com>
14774 * cbinding.cpp|h: Regenerated for read-only DP.
14775 * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter
14776 to RegisterManagedProperty.
14778 2008-12-19 Alan McGovern <amcgovern@novell.com>
14782 * dependencyproperty.g.cpp: Add validation + tests for
14783 Storyboard.TargetNameProperty and TargetPropertyProperty
14785 2008-12-18 Chris Toshok <toshok@ximian.com>
14787 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
14788 textbox.h: decorate properties with @Validator attributes which
14789 the generator uses to generate the proper call to
14790 DependencyProperty::RegisterFull.
14792 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
14793 textbox.cpp: Remove the calls to
14794 DependencyProperty::SetValueValidator. They're generated by the
14795 generator now from our metadata.
14797 * dependencyproperty.cpp, dependencyproperty.h: add new parameter
14798 to RegisterFull prototypes so we can supply a validator at
14801 * dependencyproperty.g.cpp: regen.
14803 2008-12-18 Chris Toshok <toshok@ximian.com>
14805 * validators.cpp, validators.h: move these into a class instead of
14806 static C methods, and don't include C methods into every file. we
14807 were getting warnings every time they went unused, and namespacing
14808 with C++ is better than #including them all over the place.
14810 * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
14811 dependencyproperty.cpp, frameworkelement.cpp: track change above.
14813 2008-12-18 Chris Toshok <toshok@ximian.com>
14815 * xaml.cpp (class XamlElementInstanceManaged): this instance can
14816 be a DependencyObject sometimes. we need an instance field to
14818 (XamlElementInstanceManaged::XamlElementInstanceManaged): when
14819 @obj, set is_dependency_object to true. This fixes setting x:
14820 namescope properties on managed DependencyObject subclasses, as in
14821 '<Button x:Name="foo" />'.
14822 (dependency_object_add_child): remove the template case from here.
14823 it'll be handled differently (being parsed at application time,
14826 2008-12-18 Alan McGovern <amcgovern@novell.com>
14831 * mediaelement.cpp:
14832 * multiscaleimage.h:
14833 * multiscaleimage.cpp:
14834 * frameworkelement.cpp: Add validation to DPs
14836 2008-12-18 Alan McGovern <amcgovern@novell.com>
14838 * mediaelement.cpp: Add validation for NaturalVideoHeight and
14841 2008-12-18 Alan McGovern <amcgovern@novell.com>
14848 * dependencyobject.h:
14849 * frameworkelement.h:
14850 * frameworkelement.cpp:
14851 * dependencyproperty.cpp: Move parameter validation for DP's to use the
14852 new ValueValidator callback.
14854 * validators.h: All validators are defined in this header file so they
14855 can be easily reused for different DPs.
14857 2008-12-18 Alan McGovern <amcgovern@novell.com>
14859 * grid.cpp: Correctly set the validators - forgot to revert changes
14862 2008-12-18 Alan McGovern <amcgovern@novell.com>
14865 * dependencyobject.cpp:
14866 * dependencyproperty.h:
14867 * dependencyproperty.cpp: Add the ability to validate the value for a
14868 DependencyProperty before setting it.
14870 2008-12-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
14872 * text.h, text.cpp: Remove some useless code.
14874 2008-12-16 Alan McGovern <amcgovern@novell.com>
14878 * dependencyproperty.h: If a default value has been set in native code,
14879 propagate that to managed code.
14881 2008-12-15 Chris Toshok <toshok@ximian.com>
14883 * template.cpp (ControlTemplate::Apply): make sure we clear the
14884 toplevel namescope from the template tree. instead we keep a
14885 different namescope around (full of the duplicated elements) which
14886 is populated during DuplicateObject.
14888 2008-12-15 Jeffrey Stedfast <fejj@novell.com>
14890 * xaml.cpp: Macroize the static tables.
14891 (create_binding_expression_from_markup): Got rid of
14892 BindingExtension::path.
14893 (xaml_markup_parse_binding): Update the markup pointer before a
14896 2008-12-15 Jackson Harper <jackson@ximian.com>
14898 * xaml.cpp: fix typo.
14899 - remove sneaky debug
14901 2008-12-15 Jackson Harper <jackson@ximian.com>
14903 * xaml.cpp: Always check if we are in buffering mode. (Otherwise
14904 we'll get cdata content at the end of a template or a namespace
14905 handler during a template).
14907 2008-12-15 Alan McGovern <amcgovern@novell.com>
14910 * dependencyproperty.g.cpp: ShowGridLines is true by default.
14912 2008-12-15 Alan McGovern <amcgovern@novell.com>
14914 * control.cpp: Default foreground brush is black
14916 2008-12-12 Jackson Harper <jackson@ximian.com>
14918 * xaml.cpp: Remove some old code.
14920 2008-12-12 Jackson Harper <jackson@ximian.com>
14922 * xaml.cpp: Still need to call setproperty on non managed
14923 attributes, they could be events.
14925 2008-12-12 Jackson Harper <jackson@ximian.com>
14927 * xaml.cpp: A little cleanup so that we only try setting non-dp
14928 attributes on managed objects. (previously we would try but fail,
14929 so the results are basically the same, just less waste).
14931 2008-12-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
14933 * runtime.h: Make DetachDownloaders public so that the plugin can call
14936 2008-12-12 Alan McGovern <amcgovern@novell.com>
14938 * textbox.cpp: Add bounds checking to SelectionStartProperty too
14940 2008-12-12 Alan McGovern <amcgovern@novell.com>
14943 * textbox.cpp: Add range checking for MaxLengthProperty and
14944 SelectionLengthProperty
14946 2008-12-11 Sebastien Pouliot <sebastien@ximian.com>
14948 * dependencyobject.h: Name setter is public in SL2 final.
14950 2008-12-11 Chris Toshok <toshok@ximian.com>
14952 * control.h, control.cpp: hook up TemplateApplied event.
14954 * type-generated.cpp: regen.
14956 2008-12-11 Chris Toshok <toshok@ximian.com>
14958 * control.h (class Control): generate cbinding/pinvoke for
14961 * cbinding.h, cbinding.cpp: regen.
14963 2008-12-11 Alan McGovern <amcgovern@novell.com>
14965 * textbox.cpp: Unbreak the build.
14967 2008-12-11 Alan McGovern <amcgovern@novell.com>
14969 * textbox.cpp: It should not be possible to set a null value as the
14972 2008-12-11 Alan McGovern <amcgovern@novell.com>
14975 * dependencyproperty.g.cpp: Fix several issues with default values for
14976 TextBox and PasswordBox
14978 2008-12-11 Andreia Gaita <shana@jitted.com>
14980 * cbinding.h|cpp, clock.h: Framerate accessors
14982 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
14984 * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
14985 remove some stale code.
14987 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
14989 * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
14990 audio field. Added comments/explicit verification in every method
14991 describing which methods must be thread-safe and which aren't.
14993 2008-12-10 Jeffrey Stedfast <fejj@novell.com>
14995 * xaml.cpp (parser_error): Now takes varargs to simplify
14996 things. Fixed all callers to not strdup/g_strdup_printf (and leak)
14997 the message argument.
14998 (create_binding_expression_from_markup): Check that the source is
14999 a DO before casting.
15001 2008-12-10 Alan McGovern <amcgovern@novell.com>
15005 * type-generated.cpp:
15006 * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
15007 is represented by an int32 in unmanaged code.
15009 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15011 * audio-pulse.cpp: Fix int->enum conversion.
15013 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15015 * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
15016 random constants for the connected variable.
15018 2008-12-10 Jackson Harper <jackson@ximian.com>
15020 * xaml.cpp: Add a buffering mode to the parser, this mode is used
15021 for templates and simply buffers all the text without doing
15022 any real parsing. So everything between a
15023 <DataTemplate>..</DataTemplate> block is turned into a string.
15025 2008-12-10 Alan McGovern <amcgovern@novell.com>
15028 * textbox.cpp: Implement the SelectAll function and raise an event when
15029 the Password changes
15035 * type-generated.cpp:
15036 * dependencyproperty.g.cpp: Commit the files from the generator.
15038 2008-12-10 Alan McGovern <amcgovern@novell.com>
15040 * textbox.h: Partial implementation of the PasswordBox control
15042 2008-12-09 Chris Toshok <toshok@ximian.com>
15044 * template.h, template.cpp: add DataTemplates.
15046 * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
15049 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15051 * xaml.cpp (create_binding_expression_from_markup): Converter can
15052 also take a StaticResource.
15054 * playlist.cpp: Don't use ctype is*() with a char argument, these
15055 functions are meant to take unsigned char values cast to an
15056 int. Use the g_ascii_is*() functions instead.
15058 * xaml.cpp (create_binding_expression_from_markup):
15059 ConverterParameter can either be a string or a StaticResource. If
15060 it is a StaticResource, lookup the resource object.
15062 * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
15063 takes a Value* since we need to handle either string or
15066 2008-12-09 Jackson Harper <jackson@ximian.com>
15068 * xaml.cpp: Don't use the cpp initializers.
15069 - More consistent naming.
15071 2008-12-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
15073 * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
15074 pulseaudio to initialize - keep waiting if we get spurious wakeups.
15076 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15078 * xaml.cpp (create_binding_expression_from_markup): Lookup the
15079 StaticResource property for Source.
15081 * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
15083 (BindingExpressionBase::*): No longer do dynamic lookup of the
15086 2008-12-09 Sebastien Pouliot <sebastien@ximian.com>
15088 * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to
15089 false in C++ constructor.
15091 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15093 * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
15095 (xaml_markup_parse_binding): Fixed to handle
15096 "Source={StaticResource ...}" syntax.
15098 2008-12-08 Sebastien Pouliot <sebastien@ximian.com>
15100 * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
15101 for UserControl while it's true for Control
15103 2008-12-08 Jeffrey Stedfast <fejj@novell.com>
15105 * xaml.cpp: A bit of refactoring...
15107 * binding.cpp (BindingExpressionBase::SetConverterParameter):
15109 (BindingExpressionBase::SetConverterCulture): Same.
15110 (BindingExpressionBase::SetConverter): Same.
15111 (BindingExpressionBase::SetSourceName): Same.
15112 (BindingExpressionBase::AttachListener): Lookup the source by name
15113 if we don't already have it.
15114 (BindingExpressionBase::GetValue): Same.
15115 (BindingExpressionBase::UpdateSource): Same.
15117 * xaml.cpp (binding_expression_from_str): Finished implementing.
15119 2008-12-07 Jeffrey Stedfast <fejj@novell.com>
15123 Patches by Argiris Kirtzidis
15125 * dependencyobject.h: Fix forward declarations of classes declared
15128 * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
15129 point constant to make sure we get the correct overload in MSVC.
15131 * playlist.cpp (duration_from_asx_str): Same.
15133 * value.cpp (Value::FreeValue): Free corner radius.
15135 2008-12-05 Geoff Norton <gnorton@novell.com>
15137 * audio-pulse.cpp: PulseAudio sometimes gives us errors sync,
15138 and sometimes async. Lets ensure we can actually connect before
15141 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
15143 * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
15145 * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
15148 * binding.h (class Binding): Added more bool members.
15150 * xaml.cpp (binding_expression_from_str): New method to
15151 parse {Binding} markup syntax into a BindingExpression.
15152 (handle_xaml_markup_extension): Parse Binding markup extensions.
15154 2008-12-05 Chris Toshok <toshok@ximian.com>
15156 * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
15157 the GenerateAccessors thing the right way.
15159 * dependencyproperty.g.cpp: regen.
15161 2008-12-05 Jackson Harper <jackson@ximian.com>
15163 * xaml.cpp: Move the markup extension handler out of
15164 set_attributes, ideally each markup extension will get it's own
15165 function eventually.
15167 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
15169 * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
15172 * xaml.cpp: Conditionally define DEBUG, which I guess is a
15173 temporary thing, in a way which will not spew gcc warnings.
15175 2008-12-05 Jackson Harper <jackson@ximian.com>
15177 * xaml.cpp: Let managed code own it's Value pointers.
15179 2008-12-04 Jackson Harper <jackson@ximian.com>
15181 * xaml.cpp: We can store the Value* in the base element instance
15182 now, since they all use a Value.
15184 2008-12-05 Fernando Herrera <fherrera@novell.com>
15187 * playlist.h: Don't check duration at playlist level but let MediaPlayer
15188 handle it. Don't do a delayed element->Play() for repeats because that
15189 can broke js doing "e.Play();e.Stop()"
15191 2008-12-04 Fernando Herrera <fherrera@novell.com>
15193 * playlist.cpp (Playlist::Open): Check duration properly.
15195 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
15197 * binding.cpp: Get rid of excessive use of 'this' keyword.
15199 2008-12-04 Geoff Norton <gnorton@novell.com>
15201 * playlist.cpp: 100ms not 10s should be when we start playing the
15204 2008-12-04 Larry Ewing <lewing@novell.com>
15206 * layout.cpp (RenderLine): do all the filling in one pass rather
15207 than adding a stroke at the end. Tidy up the path creation and
15208 modification logic.
15210 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
15212 We only support vector fonts, so get rid of the TextFont::Render()
15213 API that is only useful as an abstraction over rendering as bitmap
15214 vs pathing. Leave the *Path() APIs which are the only ones
15217 * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
15218 fonts are scalable for now.
15220 * font.cpp (TextFont::RenderGlyphPath): Removed.
15221 (TextFont::Render): Same.
15223 2008-12-04 Sebastien Pouliot <sebastien@ximian.com>
15225 * control.h: Changed my mind and moved DefaultStyleKeyProperty and
15226 IsEnabledProperty to the managed world
15227 * dependencyproperty.g.cpp: regenerated
15229 2008-12-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
15231 * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
15232 size using video and audio streams. Fixes #456154.
15234 2008-12-04 Jackson Harper <jackson@ximian.com>
15236 * xaml.cpp: The element instance now has ownership of the Value
15239 2008-12-03 Jackson Harper <jackson@ximian.com>
15241 * xaml.cpp: Cleanup managed namespaces when we shutdown.
15242 - Reduce the number of Value's we are creating. These still aren't
15243 being freed properly, but at least there isn't as many of them.
15245 2008-12-03 Geoff Norton <gnorton at novell.com>
15247 * media.cpp: Ensure we null our reference to the image loader in
15248 all the failure cases to avoid a possible double free/unref.
15250 2008-12-03 Alan McGovern <amcgovern@novell.com>
15253 * frameworkelement.h:
15254 * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
15255 the binding when the context is altered.
15257 2008-12-03 Alan McGovern <amcgovern@novell.com>
15259 * frameworkelement.h:
15260 * dependencyproperty.g.cpp: DataContext should take 'object'
15262 2008-12-03 Jackson Harper <jackson@ximian.com>
15264 * xaml.cpp: Call setproperty for all the children in the property
15265 block, this is needed because we aren't doing as much magic
15266 collection handling in addchild anymore.
15268 2008-12-02 Sebastien Pouliot <sebastien@ximian.com>
15270 * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
15271 * dependencyproperty.g.cpp: regenerated
15273 2008-12-02 Jackson Harper <jackson@ximian.com>
15275 * xaml.cpp: Map in enumerations in 2.0. So you can do something
15276 like <Visibility>Collapsed</Visibility>
15277 * enums.h|cpp: Expose a function so we can check if a certain enum
15280 2008-12-02 Jackson Harper <jackson@ximian.com>
15282 * xaml.cpp: We can map in non-DO managed elements now, so check to
15283 make sure it's actually a dependency object.
15284 - Pass NULL for the property name if we weren't able to query for
15285 a content property name. The managed backing might be able to
15286 find a name some other way.
15288 2008-12-02 Jackson Harper <jackson@ximian.com>
15290 * xaml.cpp: Return false if the base content property setter didnt
15293 2008-12-02 Alan McGovern <amcgovern@novell.com>
15297 * dependencyproperty.h:
15298 * dependencyproperty.cpp: Ensure the default value of a CustomDP is
15299 propagated to the unmanaged
15301 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
15303 * dependencyobject.cpp: We need to raise changed events when clearing
15305 * cbinding.cpp, cbinding.h: Regenerated.
15307 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
15309 * dependencyproperty.h: Added a IsNullable setter (instead of adding
15310 yet another parameter to the Register methods).
15312 2008-12-02 Andreia Gaita <shana@jitted.com>
15314 * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
15316 2008-12-02 Andreia Gaita <shana@jitted.com>
15318 * panel.cpp: Fix debugging messages
15320 2008-12-01 Larry Ewing <lewing@novell.com>
15322 * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
15323 we can handle image and video brush opacity properly.
15329 * src/text.cpp: use the new Fill and Stroke methods when using
15330 brushes. Fixes test-imagebrush-opacity* when the masters are
15333 2008-12-01 Chris Toshok <toshok@ximian.com>
15335 * frameworkelement.h: add decl for ClearBindingExpression.
15337 * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
15338 factor out the 2 operations (Detach + hash_remove) here since
15339 we'll be calling it in a couple places.
15340 (binding_destroy): this should delete value, not call ValueFree.
15341 (FrameworkElement::SetBindingExpression): call
15342 ClearBindingExpression if there's a current one, and don't ref the
15343 expression. Value will hold one.
15344 (FrameworkElement::ClearValue): a couple of changes.
15346 1. Call ClearBindingExpression instead of just removing the
15347 binding from the hash (and not detaching it...)
15349 2. don't remove the style value from the style has.
15351 3. instead of looping over all the setters in the style just set
15352 the value back to the value in the styles hash.
15354 4. if we're going to be resetting the value to the style, don't
15355 notify listeners in UIElement::ClearValue. it'll happen in
15358 2008-12-01 Geoff Norton <gnorton@novell.com>
15360 * audio.cpp: Fix a logic error that prevented falling back to alsa when
15361 built with both pulse and alsa support.
15365 2008-12-01 Chris Toshok <toshok@ximian.com>
15367 * template.cpp, template.h: when copying the tree over, register
15368 the template element names to their instantiated counterparts.
15369 and build up a NameScope object as we go.
15371 * frameworkelement.cpp: add a "template_namescope" which maps
15372 names that were registered in the template itself to elements in
15373 the instantiated visual tree.
15375 * control.cpp (Control::GetTemplateChild): look the child up in
15376 the template namescope, not against the visual tree.
15378 2008-12-01 Jackson Harper <jackson@ximian.com>
15380 * xaml.cpp: Value types can not have properties set on them.
15382 2008-12-01 Fernando Herrera <fherrera@novell.com>
15384 * mediaelement.cpp:
15388 * playlist.h: Implement Server side playlists. Still missing duration based
15391 2008-12-01 Alan McGovern <amcgovern@novell.com>
15393 * border.h: ChildProperty should not be exposed
15395 2008-12-01 Alan McGovern <amcgovern@novell.com>
15397 * frameworkelement.cpp: If a null value is being set to a DP when using
15398 databinding, clear the value instead. Makes test pass. (left this out
15399 of the last commit)
15401 2008-11-28 Alan McGovern <amcgovern@novell.com>
15407 * frameworkelement.cpp: DataBinding now works for one-way, one-time and
15408 two-way bindings with managed objects.
15410 2008-11-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
15412 * audio.cpp: Remove a print_stack_trace.
15414 2008-11-27 Andreia Gaita <shana@jitted.com>
15416 * runtime.cpp: enable debug #if that was disabling the D key.
15418 2008-11-27 Alan McGovern <amcgovern@novell.com>
15420 * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
15422 2008-11-27 Alan McGovern <amcgovern@novell.com>
15428 * frameworkelement.cpp: Allow the Binding class to be mapped between
15429 managed and unmanaged code.
15431 2008-11-26 Larry Ewing <lewing@novell.com>
15433 * shape.cpp (Shape::IsCandidateForCaching): add more logic to
15434 avoid the cache in special cases.
15436 2008-11-26 Jackson Harper <jackson@ximian.com>
15438 * xaml.cpp|h: clean up the managed/plugin interface, use Values
15439 for most things instead of expected DependencyObjects.
15440 * deepzoomimagetilesource.h|cpp: Add the uri property and a public
15441 constructor so we can parse these from attributes.
15443 * dependencyproperty.g.cpp: regen
15445 2008-11-26 Alan McGovern <amcgovern@novell.com>
15447 * frameworkelement.cpp: Store a Value * rather than
15448 BindingExpressionBase in the bindings hashtable to allow
15449 GetLocalValue to work.
15451 2008-11-26 Alan McGovern <amcgovern@novell.com>
15453 * frameworkelement.h:
15454 * dependencyobject.h:
15455 * frameworkelement.cpp: Styles are now used/ignored correctly when local
15456 values are set/unset. Added tests for this.
15458 * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
15460 * shape.cpp: args->new_value will be null if DO.ClearValue has been
15461 called. In this case use DP.DefaultValue
15463 2008-11-26 Alan McGovern <amcgovern@novell.com>
15469 * frameworkelement.h:
15470 * dependencyobject.h:
15471 * frameworkelement.cpp:
15472 * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
15473 unmanaged code. Only handles databindings.
15475 2008-11-26 Alan McGovern <amcgovern@novell.com>
15481 * frameworkelement.cpp: Rename the members of BidningExpressionBase to
15482 better reflect their actual usage.
15484 2008-11-26 Alan McGovern <amcgovern@novell.com>
15489 * collection.cpp: InsertWithError should return a bool to match Insert
15492 * media.cpp: Fix regression introduced in r119963 when changing which
15493 collection functions were virtual
15495 2008-11-25 Larry Ewing <lewing@novell.com>
15497 * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
15500 * media.cpp (Image::GetCoverageBounds): be slightly smarter about
15501 computing coverage.
15503 2008-11-25 Geoff Norton <gnorton@novell.com>
15505 * cbinding.(cpp|h): Regenerate
15506 * downloader.h: Expose the status code and status text to the
15507 DownloaderResponse object.
15509 2008-11-25 Alan McGovern <amcgovern@novell.com>
15517 * dependencyproperty.g.cpp: Added full support for sealing styles.
15519 2008-11-25 Stephane Delcroix <sdelcroix@novell.com>
15521 * multiscaleimage.h: element_to_logical_point
15523 2008-11-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
15525 * cbinding.cpp, cbinding.h: Regenerated.
15527 2008-11-24 Larry Ewing <lewing@novell.com>
15529 * media.cpp (MediaBase::SetSource): only queue a tick if we need
15530 to, fixes regression on mediaelement downloaders.
15534 2008-11-24 Larry Ewing <lewing@novell.com>
15536 * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
15537 precise about the coverage bounds. Use the coveragebounds when
15538 invalidating based on position so that we don't invalidate a lot
15539 more area than we need to. Only use CAIRO_FILTER_FAST when
15540 playing use the default when in other states.
15542 2008-11-24 Geoff Norton <gnorton@novell.com>
15544 * media.cpp: If we do a SetSource on a image element with a
15545 completed downloader, short circuit the async call, as the downloader
15546 theoretically can be immediately reused in javascript after the call.
15547 Also remove the internal completed event after its been fired, for the
15548 same reason (downloader reuse). Fixes halo3
15552 2008-11-24 Larry Ewing <lewing@novell.com>
15554 * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
15555 them where appropriate.
15557 * mediaplayer.cpp: use MOON_FORMAT_RGB.
15559 2008-11-24 Larry Ewing <lewing@novell.com>
15561 * brush.cpp, brush.h: add IsAnimating member to indicate if the
15562 brush is expected to change each render tick.
15564 * shape.cpp: don't cache animating brushes.
15566 2008-11-22 Jeffrey Stedfast <fejj@novell.com>
15568 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15569 Set the destination element and property on the binding expression
15570 so that we can easily get at them in the callback when the source
15571 property changes. Instead of passing 'this' as the user_data
15572 argument to the property change handler, pass the expression.
15573 (FrameworkElement::BoundPropertyChanged): No longer need to
15574 iterate thru the hash table, we now are able to get all the info
15575 we need from the binding expression.
15576 (FrameworkElement::bound_property_changed): Updated.
15578 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
15580 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15581 Implemented properly (I think/hope).
15583 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
15585 * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
15586 callback and user data.
15587 (BindingExpressionBase::DetachListener): Now takes a callback.
15589 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
15590 Moved here from binding.cpp.
15591 (FrameworkElement::SetBindingExpression): Made protected instead
15593 (FrameworkElement::GetBindingExpression): Same.
15595 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
15597 * frameworkelement.cpp: Fixed to build w/o SL2 support.
15599 2008-11-21 Larry Ewing <lewing@novell.com>
15601 * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
15602 filter in videobrush when scaling.
15606 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
15608 * binding.cpp (changed_cb): Implemented... but it's
15609 wrong. Committing anyay with a big FIXME explaining why it's
15612 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
15613 New method to set a binding expression for a property.
15614 (FrameworkElement::GetBindingExpression): Get the binding
15615 expression for a property.
15616 (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
15617 stuff to make the logic a bit clearer.
15619 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
15621 * binding.cpp (BindingExpressionBase::AttachListener): We want to
15622 use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
15623 we want to provide our own callback, not re-use
15624 OnSubPropertyChanged() for a purpose it wasn't meant for.
15626 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
15627 #if 0'd out, we might not need this afterall.
15629 * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
15630 chaining up if the property change wasn't handled.
15632 * text.cpp (Inline::OnSubPropertyChanged): Same.
15633 (TextBlock::OnSubPropertyChanged): Same.
15634 (Glyphs::OnSubPropertyChanged): Same.
15636 2008-11-21 Larry Ewing <lewing@novell.com>
15638 * shape.cpp: disable custom layout code as it seems to have
15639 changed in 2.0 final.
15641 2008-11-21 Alan McGovern <amcgovern@novell.com>
15643 * frameworkelement.cpp: If a style is already set, you cannot set it
15646 2008-11-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
15648 * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
15649 create such a Value.
15651 2008-11-21 Alan McGovern <amcgovern@novell.com>
15653 * frameworkelement.cpp: Implement initial support for using a Style when
15656 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
15658 * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
15659 (TextBlock::OnSubPropertyChanged): Always chain up.
15660 (Glyphs::OnSubPropertyChanged): Always chain up.
15662 * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
15664 * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
15666 * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
15668 * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
15669 might not be correct.
15671 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
15674 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
15676 * binding.cpp (BindingExpressionBase::AttachListener): Now takes
15677 an FE argument as the listener.
15678 (BindingExpressionBase::DetachListener): Same.
15680 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15683 2008-11-20 Alan McGovern <amcgovern@novell.com>
15688 * frameworkelement.cpp: Add more support code for databinding.
15690 2008-11-19 Geoff Norton <gnorton@novell.com>
15692 * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
15693 giving up on media entirely.
15697 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
15699 Note: the way this is abstracted will probably go thru several
15700 iterations of change.
15702 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15703 Do special handling if setting a binding expression or if the
15704 value is replacing a binding expression.
15706 * dependencyobject.cpp (DependencyObject::IsValueValid): Made
15707 protected, no reason for this to be public.
15708 (DependencyObject::SetValueWithErrorImpl): New virtual method, has
15709 all the code logic of the old SetValueWithError().
15710 (DependencyObject::SetValueWithError): Call IsValueValid() and
15711 then SetValueWithErrorImpl().
15713 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
15715 * frameworkelement.cpp (FrameworkElement::IsValueValid):
15716 Overridden so that we can check if the Value is a
15717 BindingExpression. All DependencyProperties of FrameworkElements
15720 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
15722 * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
15723 Rendered/DroppedFramesPerSecond DP.
15724 * pipeline.cpp: Fix warning.
15726 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
15728 * dependencyproperty.g.cpp: Regenerated.
15729 * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
15730 * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
15731 and DroppedFramesPerSecond.
15733 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
15735 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
15736 type-generated.cpp, value.h: Added InputMethod.
15738 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
15740 * geometry.cpp: Fix breakage in r119300.
15742 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
15744 * dependencyproperty.g.cpp, transform.h: Corcompare.
15745 * geometry.h: Move FillRule from Geometry to
15746 PathGeometry/GeometryGroup.
15748 2008-11-18 Jeffrey Stedfast <fejj@novell.com>
15750 * expression.h, binding.cpp|h: added to the build
15752 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
15754 * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
15756 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
15758 * uielement.h: Define UseLayoutRounding accessors to unbreak build.
15760 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
15762 * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
15763 uielement.h: More corcompare work.
15765 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
15767 * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
15768 value.h: Add TriggerBase, make EventTrigger inherit from it and
15771 2008-11-17 Jeffrey Stedfast <fejj@novell.com>
15773 * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
15775 2008-11-17 Michael Dominic K. <mdk@mdk.am>
15777 * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple
15778 repeats when seeking anims with RepeatBehavior >= 2.0).
15780 2008-11-17 Michael Dominic K. <mdk@mdk.am>
15782 * clock.cpp: When running without idle hint (runtime init) do not apply it
15783 here. Makes the idle hint switch actually do something and makes debugging
15786 2008-11-14 Michael Dominic K. <mdk@mdk.am>
15789 * animation.h: The KeySpline quadratics used to generate interpolation
15790 values are generated dynamically = faster and less mem.
15792 2008-11-14 Michael Dominic K. <mdk@mdk.am>
15795 * animation.h: Slightly more nice value caching.
15797 2008-11-14 Geoff Norton <gnorton@novell.com>
15800 * codec-url.h: Update to the final URLs for beta 1
15804 2008-11-14 Geoff Norton <gnorton@novell.com>
15806 * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to
15807 handle the pango markup we're using.
15811 2008-11-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
15813 * mediaelement.cpp: SetMedia: when getting the playlist for an
15814 asxdemuxer, set the media for it. Fixes a memory leak (the media
15815 should get disposed with the playlist gets disposed).
15816 * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
15817 * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
15818 add a parameter to PlaylistEntry::SetMedia to specify whether the
15819 entry should start playing the media or not.
15821 2008-11-13 Sebastien Pouliot <sebastien@ximian.com>
15823 * runtime.cpp (running_on_nvidia): Fix leak of Display
15826 2008-11-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
15828 * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
15829 request even if we're currently playing, there might be a PauseNow
15830 request already queued.
15832 2008-11-11 Sebastien Pouliot <sebastien@ximian.com>
15834 * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
15837 2008-11-11 Geoff Norton <gnorton@novell.com>
15839 * Makefile.am: Only build the appropriate pipeline-ui based on wether
15840 we're building on a os/arch combo that supports the SMP.
15841 * codec-url.h: Set the appropriate CODEC_URL for our target platform
15842 * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
15843 of the codec install pipeline.
15845 2008-11-11 Geoff Norton <gnorton@novell.com>
15847 * debug.h: Its unlikely that debug flags will be set.
15851 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
15853 * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
15854 Plugs a memory leak.
15856 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
15858 * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
15861 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
15863 * pipeline.cpp, pipeline.h: Plug a memory leak.
15865 2008-11-10 Geoff Norton <gnorton@novell.com>
15867 * runtime.cpp: Do not enable debug features by default, and remove a
15868 superflous warning.
15871 2008-11-10 Geoff Norton <gnorton@novell.com>
15873 * runtime.cpp: Force NVIDIA binary driver to go to the image backend
15874 to work around serious performance problems when we use accelerated
15878 2008-11-10 Chris Toshok <toshok@ximian.com>
15880 * runtime.cpp (copy_input_list_from_node): rename
15881 copy_input_list_with_visibility_check to this method. the
15882 caller (HandleMouseEvent) already walks over the list to determine
15883 if an element has total render or hittest visibility == false. By
15884 definition, everything before that in the input list (the input
15885 list is ordered from most deeply nested to the root) also has
15886 those == false, so we can short circuit things by traversing from
15887 the tail of the list, and then only copying the nodes we've seen
15888 before (but which come after) the offending one.
15890 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15892 * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
15893 pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
15894 move that to Playlist(Entry) and Dispose of the playlist instead.
15895 This makes re-playing already played content in playlists work
15898 2008-11-10 Michael Dominic K. <mdk@mdk.am>
15901 * animation.h: Cache some vals internally in *Animation for better
15902 performance in loop-called routines.
15904 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15906 * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
15907 Implement MediaElement.AudioStreamIndex.
15909 2008-11-07 Michael Dominic K. <mdk@mdk.am>
15911 * clock.cpp: Fixing one broken block in the AnimationMatrix2 test.
15912 It was broken but diff was too small to be picked by the test runner.
15914 2008-11-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
15916 * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
15917 need to keep decoding until the entire input has been consumed.
15919 2008-11-06 Geoff Norton <gnorton@novell.com>
15921 * pipline(-ui).cpp: Move the codec location on more time.
15924 2008-11-05 Michael Dominic K. <mdk@mdk.am>
15927 * animation.h: Fixing one more mem-leak case. Fixes #436068.
15929 2008-11-06 Stephane Delcroix <sdelcroix@novell.com>
15931 * downloader.h: change the signature of downloaderRequestFinishedHandler
15932 to pass the resulting uri.
15934 * downloader.cpp: validate the returned uri against redirection policies
15938 2008-11-05 Jeffrey Stedfast <fejj@novell.com>
15940 Patches by Argiris Kirtzidis to fix bug #441687
15942 * audio.cpp: Use g_alloca() to create dynamically sized arrays on
15943 the stack rather than relying on g++ features.
15945 * clock.cpp: Applied MSVC portability patch which implements
15948 2008-11-04 Fernando Herrera <fherrera@novell.com>
15950 * mediaplayer.cpp: Add logging information about selected streams
15953 2008-11-03 Jeffrey Stedfast <fejj@novell.com>
15955 See tests/xaml/test-textblock-actualheight.html and
15956 test-textblock-hittest.html as compared with Microsoft
15959 * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
15960 actually do count toward ActualHeight metrics.
15962 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15964 * audio-pulse.cpp: OnContextStateChanged: always print an error message
15965 if we fail to connect to pa daemon.
15967 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15969 * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
15970 invalidate when that flag is set.
15972 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15974 * runtime.cpp: get_flags: take the default flags as an argument, this
15975 way the environment variables can disable flags which are enabled
15978 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15980 * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
15981 codecs by default for browsers.
15983 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15985 * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
15986 because of a buffer underflow and we're waiting for the initial
15987 frame, enqueue a request for another frame. Fixes #440317.
15989 2008-11-03 Larry Ewing <lewing@novell.com>
15991 * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
15992 extreme exposure issues in popfly.
15994 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
15996 * runtime.h: Remove #include <config.h> from headers
15998 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16000 * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
16001 reading a header, try to sync to one. FindMpegHeader: Return proper
16002 error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
16003 #426440 (slideshow doesn't go beyond the first slide).
16005 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16007 * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
16008 opened, the final state is Stopped, not Paused. When media finish,
16009 the final state is Paused, not Stopped. Fixes #365827.
16011 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16013 * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
16014 external reference.
16016 2008-11-03 Fernando Herrera <fherrera@novell.com>
16024 * dependencyobject.cpp:
16027 * http-streaming.cpp:
16030 * mediaelement.cpp:
16032 * mms-downloader.cpp:
16033 * pipeline-asf.cpp:
16034 * pipeline-ffmpeg.cpp:
16043 * yuv-converter.cpp: Change debug macros to runtime conditionals based
16044 on MOONLIGHT_DEBUG env variable of compile time. Checks are only
16045 enabled if configured with --with-debug=yes option.
16047 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16049 * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
16052 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16054 * pipeline-ffmpeg.cpp: Revert r117547 and related.
16056 2008-11-02 Chris Toshok <toshok@ximian.com>
16058 * text.cpp (TextBlock::InsideObject): textblocks are hit only in
16059 their ActualWidth/ActualHeight, not in the full bounding
16060 rectangle. Fixes bug #434258.
16062 2008-10-31 Chris Toshok <toshok@ximian.com>
16064 * runtime.h, runtime.cpp: remove transparency from properties of
16066 (Surface::PaintToDrawable): add a @transparent argument to this
16069 * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
16070 transparency to Surface::PaintToDrawable.
16072 * window.h: move the idea of transparency here from Surface.
16074 2008-10-31 Jeffrey Stedfast <fejj@novell.com>
16076 Portability patch by Argiris Kirtzidis.
16078 * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
16080 * xaml.cpp (start_element): strchr() returns const.
16081 (repeat_behavior_from_str): Same.
16083 2008-10-31 Larry Ewing <lewing@novell.com>
16085 * runtime.cpp (Surface::PaintToDrawable): instead of the content
16086 type check if active_window is fullscreen. This is uglier but the
16087 mozilla hands us rgb drawables not rgba drawables so until we have
16088 a better plan this will solve the problem.
16090 2008-10-31 Larry Ewing <lewing@novell.com>
16092 * runtime.cpp (Surface::PaintToDrawable): only follow the
16093 transparent path if our target supports it.
16095 2008-10-31 Sebastien Pouliot <sebastien@ximian.com>
16097 * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
16098 a bad stream so we dont include NULL holes streams[]
16100 2008-10-31 Michael Dominic K. <mdk@mdk.am>
16102 * runtime.cpp: Reverting for now the recent crossing events
16103 changes -- causes issues with Ink Journal.
16105 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16107 * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
16108 * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
16109 complex ifs on the GetType return value.
16111 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16113 * debug.cpp: dlopen libmono too for our stack walking methods.
16115 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16117 * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
16118 present in older ffmpeg version (r10885).
16120 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16122 * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
16125 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16127 * pipeline-ffmpeg.cpp: dlopen ffmpeg.
16129 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16131 * pipeline.cpp: Fix warning (variable might be used uninitialized).
16133 2008-10-30 Jeffrey Stedfast <fejj@novell.com>
16135 Fix for bug #435815.
16137 * stylus.cpp (StrokeCollection::AddedToCollection): Override so
16138 that we can avoid aborting if a stroke already has a logical
16139 parent (not an error for strokes).
16141 * error.h (MoonError::Clear): New convenience method.
16143 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16145 * libmoon.h: Fix build.
16147 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16149 * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
16150 Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
16151 mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
16152 src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
16153 into its own mediaelement.[cpp|h].
16155 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16157 * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
16158 mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
16159 mplayer.[cpp|h] -> mediaplayer.[cpp|h].
16161 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16163 * cbinding.cpp, cbinding.h: Regenerated.
16165 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16167 * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
16168 mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
16169 pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
16170 pipeline.[h|cpp] to pipeline-asf.[h|cpp].
16172 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16174 * pipeline.h: IMediaDemuxer: Add Source getter.
16175 * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
16176 account streams which aren't selected. IMediaStream::AppendFrame:
16177 update last available pts with the frame's pts.
16178 * media.cpp: MediaElement::CalculateBufferingProgress: never use last
16179 available pts to calculate buffering progress for streams which can
16180 seek to directly to the requested pts. Fix math to check for
16181 negative values to avoid weird results.
16183 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16185 * media.cpp, media.h: MediaElement: fix buffering progress after
16186 seeking regression - don't only use the buffer level in the
16187 pipeline to report buffering progress, but take into accout the
16188 point from where we seek.
16189 * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
16190 the stream's LatestAvailablePts field whenever we read a frame.
16191 Also rename the previous 'stream' (IMediaSource*) field to 'source'
16192 to avoid confusion with AudioStream.
16193 * pipeline.cpp, pipeline.h: Add a last_available_pts field to
16194 IMediaStream and the corresponding GetLastAvailablePts to
16195 IMediaDemuxer, enabling the calculation of correct buffering
16196 progress after a seek. This also requires a codec abi version bump.
16198 2008-10-29 Sebastien Pouliot <sebastien@ximian.com>
16200 * clock.h: Change MilliSeconds_[From|To]Pts to use the new
16201 PTS_PER_MILLISECOND define.
16202 * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
16203 resulting in zero (and the endless loop of #439631).
16205 2008-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
16207 * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
16210 2008-10-28 Jeffrey Stedfast <fejj@novell.com>
16212 * downloader.cpp (scheme_is): Check protocol non-null.
16213 (same_scheme): Same.
16215 * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
16216 instead of file. Also make sure to parse the path in all valid
16219 2008-10-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
16221 * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
16223 * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
16226 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
16228 * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
16229 to parse out the uri scheme.
16231 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
16233 Performance optimization patch for bug #409793
16235 * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
16236 Rect bounds argument so that we can update a bounds of our
16238 (Stroke::ComputeBounds): Updated.
16239 (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
16240 (Stroke::OnCollectionItemChanged): Same.
16241 (InkPresenter::PostRender): Reset stroke dirty regions.
16242 (InkPresenter::OnCollectionItemChanged): Invalidate only the
16243 stroke's dirty region.
16245 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16247 * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
16250 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16252 * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
16254 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
16255 up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
16256 i.e. the decoder output is the input of the previous time we called
16257 avcodec_decode_video, so keep track of pts from previous frame and
16258 properly set pts of the decoded frame.
16260 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16262 * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
16263 frame is above the target pts (previously we only showed the frame
16264 if the start pts was above the target pts, causing us to show one
16265 frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
16267 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16269 * media.cpp: MediaElement::Play: Call Play when in Opening state too.
16271 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16273 * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
16274 we should just work as if there's no audio at all. The video might
16275 play after the audio has stopped if the a/v streams have different
16278 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
16280 * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
16281 queue_mutex unlocked, since the node dtor may cause unrefs, causing
16282 other dtors to be called, and it may all end up in Media::Dispose
16283 which will then try to lock the mutex again (and deadlock).
16285 2008-10-24 Jeffrey Stedfast <fejj@novell.com>
16287 * font.cpp (style_info_parse): Tokenize the style string so that
16288 the individual sub-parsers can be a bit smarter than than
16290 (style_width_parse): Made smarter - now handles lwsp between
16291 multi-word width specifiers (or no lwsp at all).
16292 (style_weight_parse): Same.
16294 2008-10-23 Larry Ewing <lewing@novell.com>
16296 * media.cpp: remove compute bounds since it mirrors
16297 FrameworkElement now.
16299 2008-10-23 Larry Ewing <lewing@novell.com>
16301 * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
16304 2008-10-23 Jeffrey Stedfast <fejj@novell.com>
16306 * textbox.cpp (TextBox::Paint): Updated.
16308 * text.cpp (TextBlock::Paint): Updated.
16310 * layout.cpp (TextLayout::Render): Swapped origin & offset
16311 arguments which feels more natural to me.
16313 2008-10-23 Sebastien Pouliot <sebastien@ximian.com>
16315 * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
16316 width over 2048 pixels since this is likely to be corrupted values.
16317 * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
16318 someday people will laugh at me for proposing such a small value)
16320 2008-10-23 Larry Ewing <lewing@novell.com>
16322 * layout.cpp, layout.h: Change the Render api to drop the uielement argument.
16325 * text.cpp: call layout with the new arguments.
16327 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
16329 * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
16330 fast-forwarding video when seeking to a position which hadn't been
16331 downloaded (since we automatically pause the video then). Fixes
16334 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
16336 * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
16337 DroppedFramesPerSecond. Only in SL 2.0, but very useful for
16340 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
16342 * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
16343 changed size). IMediaStream: Remove msec_per_frame, it's already in
16344 VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
16345 loose less precision.
16346 * mplayer.cpp: Calculate advance frame timeout based on video fps.
16348 2008-10-22 Chris Toshok <toshok@ximian.com>
16350 * runtime.cpp (Surface::HandleUICrossing): disable the crossing
16351 check from r116528 in the case of a windowless plugin (where
16352 event->window == NULL). Also, active_window->GetGdkWindow should
16353 never be trusted to return the actual window - it's use is
16354 strictly to find the screen/monitor for full-screening. In the
16355 windowless case it returns the toplevel netscape window.
16357 2008-10-22 Larry Ewing <lewing@novell.com>
16359 * brush.cpp, brush.h: remove the uielement references from the api
16360 pass the required information as a rect to SetupBrush instead.
16362 * shape.cpp, shape.h:
16368 * broder.cpp: update SetupBrush callers for the new signature.
16370 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
16372 * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
16373 last_current_pts to their max value, to detect when they haven't
16374 been set yet. Properly reinitialize these variables (to their max
16375 values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
16377 * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
16378 current pts, handle this. Fixes fast-forwarding issue in #435908.
16380 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
16382 * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
16383 use random memory if we don't have a reader.
16385 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
16387 * mms-downloader.cpp: Add logging methods.
16389 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
16391 * media.cpp: Sprinkle Dispose calls to plug leaks.
16393 2008-10-20 Chris Toshok <toshok@ximian.com>
16395 * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
16396 before reassigning (and reallocating memory for) it.
16398 * dependencyobject.h, dependencyobject.cpp: add an optional
16399 argument to all the EventObject::AddHandler* overloads, called
16400 data_dtor, which is invoked just before the EventClosure is
16401 destroyed so that the data can be freed.
16403 2008-10-20 Chris Toshok <toshok@ximian.com>
16405 * window-gtk.h, window-gtk.cpp: move the Surface conversion from
16406 MouseCursor -> GtkCursor here.
16408 * runtime.h, runtime.cpp: surface only deals with MouseCursors
16409 anymore. the gtk support is in window-gtk now.
16411 * window.h: remove SetCursor (GdkCursor) and add
16412 SetCursor (MouseCursor), so subclasses of MoonWindow can do their
16415 2008-10-20 Jeffrey Stedfast <fejj@novell.com>
16417 * media.cpp (MediaElement::MediaOpened): If the stream decoder is
16418 null, use null for the decoder_name. Fixes a segfault.
16420 2008-10-20 Sebastien Pouliot <sebastien@ximian.com>
16422 * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
16423 since a lot of loops don't handle NULL values.
16425 2008-10-20 Michael Dominic K. <mdk@mdk.am>
16427 * runtime.cpp: More fixes to crossing events: when entering fullscreen
16428 ignore the crossing events coming from previous window. Otherwise we get
16429 double enter/leave pair.
16431 2008-10-20 Michael Dominic K. <mdk@mdk.am>
16433 * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case
16434 correctly (no parent window).
16436 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
16438 * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
16439 nothing if not DEBUG is set, removing the need for surrounding all
16440 print_stack_trace calls with #if DEBUG.
16442 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
16444 * pipeline.cpp: Remove debugging code.
16446 2008-10-17 Michael Dominic K. <mdk@mdk.am>
16450 * applier.h: Fixing one more osbcure case of Storyboard transitions where
16451 stopping a prev sboard makes the next one starting from bad base value.
16453 2008-10-17 Michael Dominic K. <mdk@mdk.am>
16455 * runtime.cpp: Make sure we get the new pointer motion notify when
16456 entering/leaving fullscreen. This fixes the fullscreen-enter-leave test
16457 but interestingly doesn't fix the original problem of #434267.
16459 2008-10-17 Sebastien Pouliot <sebastien@ximian.com>
16461 * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
16462 when using "backend=image".
16464 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
16466 * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
16467 now, not tiled), and fix inner loop, we were including one pixel
16468 too many for width and height.
16470 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
16472 * pipeline.cpp: RegisterMSCodecs: if there's no codec in
16473 ~/.mozilla/plugins, use just the filename of the codec library and
16474 make dlopen search for it. This makes it easier to run parallell
16475 tests from different revisions without having the codecs from each
16476 revision overwrite eachother in user's home.
16478 2008-10-16 Geoff Norton <gnorton@novell.com>
16480 * pipeline.cpp: Dont tile our logo, it looks like ass. Lets
16481 center it in the available window instead.
16483 2008-10-16 Geoff Norton <gnorton@novell.com>
16485 * pipeline-ui.cpp: Avoid a resize when realizing which causes an
16486 annoying flicker in the codec window.
16488 2008-10-16 Geoff Norton <gnorton@novell.com>
16490 * pipeline.cpp: Unbreak the world.
16492 2008-10-16 Geoff Norton <gnorton@novell.com>
16494 * pipeline(-ui).cpp: Use the updated mscodec name and location.
16496 2008-10-16 Fernando Herrera <fherrera@novell.com>
16498 * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
16500 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
16502 * text.cpp (TextBlock::Layout): Delay allocation of List so that we
16503 don't leak when TextBlock::TextProperty is NULL.
16505 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
16507 * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
16508 on the window. Fix one more leak.
16510 2008-10-16 Jb Evain <jbevain@novell.com>
16512 * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
16513 mark managed constructor internal.
16515 2008-10-16 Jb Evain <jbevain@novell.com>
16517 * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
16518 instead of an ArgumentException when providing an out of range index.
16520 2008-10-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
16522 * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
16524 2008-10-15 Chris Toshok <toshok@ximian.com>
16526 * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
16527 is already down, and if so, don't emit another event. (really?
16528 there's a test for this? ugh.). also, let Keyboard know the key
16530 (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
16532 * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
16533 quite a bit -- it might soon deserve its own file. It now
16534 maintains a static hashtable of keys that are pressed/released
16535 inside the moonlight plugin, and has logic to map a gdk keyval to
16536 Key, and query if a particular key is pressed.
16538 2008-10-15 Larry Ewing <lewing@novell.com>
16540 * uielement.cpp: fix the transform ordering.
16542 * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
16544 2008-10-15 Larry Ewing <lewing@novell.com>
16546 * uielement.cpp, uielement.h: remove UpdatePosition and
16547 ComputePosition, all transform changes are handled in
16548 ComputeTransform now.
16550 * shape.cpp, shape.h: update for the new transform api.
16552 * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
16554 * canvas.cpp: Use UpdateTransform.
16556 * point.h: add a (lame) == operator.
16558 2008-10-15 Larry Ewing <lewing@novell.com>
16560 * geometry.cpp, geometry.h: add shape bounds caching to all
16561 geometry classes apply the transform when retrieving the bounds.
16562 Make GetBounds the public bounds interface and make the
16563 computation interface protected.
16565 * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
16567 2008-10-14 Larry Ewing <lewing@novell.com>
16569 * geometry.cpp, geometry.h: remove unused arguments to
16570 ComputeBounds remove caching from PathGeometry.
16572 * uielement.cpp, shape.cpp: call with correct arguments.
16574 2008-10-14 Larry Ewing <lewing@novell.com>
16576 * uielement.cpp, uielement.h: make ComputeTransform virtual and
16577 have it return a bool.
16579 * shape.cpp, shape.h: override ComputeTransform and optimize the
16580 bounds computations. Use a general ComputeShapeBounds for actual
16581 drawn bounds compuations for now.
16583 * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
16584 circuit path to DirtyTransform for elements that can recompute
16585 without updating bounds.
16587 2008-10-13 Larry Ewing <lewing@novell.com>
16589 * geometry.cpp, geometry.h: remove unused arguments from function
16592 * uielement.cpp, shape.cpp: update calls.
16594 2008-10-15 Jeffrey Stedfast <fejj@novell.com>
16596 Fix for bug #435798
16598 * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
16599 that we are setting the default brush/inlines.
16600 (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
16603 2008-10-14 Chris Toshok <toshok@ximian.com>
16605 * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
16607 (MoonWindowGtk::InitializeFullScreen): unref the return value of
16610 * cbinding.h, cbinding.cpp: regen so we don't have to use void*
16611 for the parent parameter to MoonWindowGtk.
16613 2008-10-14 Sebastien Pouliot <sebastien@ximian.com>
16615 * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
16616 the hashtable while we're flushing it on shutdown. Add a few more
16617 checks and avoid re-creating the hashtable on flush.
16619 2008-10-14 Geoff Norton <gnorton@novell.com>
16621 * pipeline-ffmpeg.cpp: FFMpeg changed the API with version #52, no
16622 longer requiring the bits_per_pixel.
16624 2008-10-14 Stephane Delcroix <sdelcroix@novell.com>
16626 * window.h: GetGdkWindow () method
16628 * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
16629 taking the parent window reference. Only go fullscreen on the monitor
16630 moonlight is running on.
16632 * runtime.cpp: call the new MoonWindowGtk ctor
16634 2008-10-14 Fernando Herrera <fherrera@novell.com>
16636 * pipeline-ui.cpp: Override codecs download URL with
16637 MOONLIGHT_CODEC_URL env variable if present.
16639 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
16641 * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
16642 variable expecting it to be the value returned from read(), don't
16643 modify it inside the loop, use another variable for that. Before
16644 eating leading whitespace, make sure we have data.
16646 2008-10-13 Fernando Herrera <fherrera@novell.com>
16648 * audio.cpp: Fix AudioSources::GetNext iteration for next playing
16649 source logic. Fixes bug #433267
16651 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
16653 * media.cpp (MediaElement::Play): Don't add a TickCall to start
16654 playing if we haven't even opened the media yet. Fixes bug
16657 2008-10-13 Michael Dominic K. <mdk@mdk.am>
16659 * dependencyproperty.cpp: Fixing a mem leak.
16661 2008-10-13 Michael Dominic K. <mdk@mdk.am>
16663 * animation.cpp: Reverting the whole attaching-to-prev storage in Begin.
16664 This fixes some recent problems in PopFly.
16666 2008-10-10 Jeffrey Stedfast <fejj@novell.com>
16668 * downloader.cpp (validate_policy): Made static so we don't export
16671 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
16673 * dependencyproperty.cpp (detach_target_func): Fix bad function
16674 signature for GHFunc.
16675 * dependencyobject.cpp (unref_object): Fix bad function signature
16678 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16680 * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
16681 start buffering until this is set to true (starts out as false).
16682 * media.cpp: Only enable buffering on the media after reading the
16683 markers, otherwise we may loose markers in the beginning of the
16684 media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
16685 tick call to notify the MediaElement that a marker has been added,
16686 always check in AdvanceFrame.
16687 * mplayer.cpp: Add a null check in a printf.
16689 2008-10-10 Larry Ewing <lewing@novell.com>
16691 * media.cpp (Image::DownloaderComplete): handle the case where the
16692 sureface uri and the new uri are the same.
16694 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16696 * pipeline-logo.cpp: New logo.
16698 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16700 * media.cpp: MediaElement::Reinitialize: Dispose the media to break
16702 * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
16703 get non-decoded frames anymore. Open: Handle null demuxers,
16704 shouldn't happen, but at least we won't crash if it happens.
16705 * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
16706 Media::Open: unref the decoder after giving it to the stream, the
16707 stream now take a ref on the decoder. Media::EnqueueWork:
16708 queued_requests might be nothing if we're disposed. IMediaStream:
16709 move cleanup to dispose and take a ref on the decoder. Add decoder
16710 getter/setters, and update code to use them.
16712 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
16714 * applier.cpp: Fix another bad function signatures for GFunc.
16716 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16718 * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
16719 FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
16720 stuttering when using ffmpeg.
16722 2008-10-09 Jackson Harper <jackson@ximian.com>
16724 * runtime.cpp: The resize event is only emitted when switching
16725 from fullscreen to non fullscreen.
16727 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
16729 * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
16732 2008-10-09 Jackson Harper <jackson@ximian.com>
16734 * runtime.cpp: When we change to/from fullscreen there should be a
16737 2008-10-09 Sebastien Pouliot <sebastien@ximian.com>
16739 * media.cpp (Image::CreateSurface): Protect against a NULL
16740 filename (valid value). This will avoid crash like bug #433810
16741 even if, in this case, the problem lies elsewhere (bad downloader
16742 which looks related to #433814).
16744 2008-10-09 Jeffrey Stedfast <fejj@novell.com>
16746 * font.cpp (FontFace::LoadDefaultFace): Pass the families to
16747 LoadDefaultFont() for font name comparison, we need to match the
16748 font names exactly or fall back to the next font.
16750 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
16752 * audio.cpp: Add a nullcheck.
16754 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
16756 * media.cpp (Image::IsSurfaceCached): Don't leak (actually
16759 2008-10-08 Jeffrey Stedfast <fejj@novell.com>
16761 * font.cpp: Add fallback for Liberation fonts.
16763 * pipeline.cpp (Media::Warning): Replacement for both
16764 Media::AddMessage() methods.
16766 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
16768 * applier.cpp: Fix function signatures for GFunc and GHFunc.
16769 Fix random crash when closing silverlight world #433461
16771 2008-10-08 Larry Ewing <lewing@novell.com>
16772 * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
16773 any existing render_cb attachments before adding new ones in case
16774 our realize wordering is out of sync.
16776 Fixes the rest of b.n.c #432975
16778 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
16780 * mp3.cpp: Fix boolean->MediaResult logic.
16782 2008-10-08 Jackson Harper <jackson@ximian.com>
16784 * playlist.cpp|h: When we encounter invalid characters in an
16785 attribute try to patch them and reparse the document.
16787 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
16789 * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
16790 block sizes instead of hard-coded almost-matching values. Make
16791 mpeg_frame_length return a floating point value, and in ReadHeader
16792 calculate total duration using floating point. Fixes
16793 test-mp3-media-properties.html
16795 2008-10-08 Stephane Delcroix <stephane@delcroix.org>
16797 * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
16798 1.8.0, changing the error msg.
16800 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
16802 * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
16803 on bad XAML input when no (NULL) dependecy property is returned.
16805 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
16807 * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
16808 MediaMarker refcounted. Fix a couple of crashing leakfixes, and
16809 simplify cleanup code a tiny bit.
16811 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
16813 * audio-pulse.h: Remove unused method definition.
16815 2008-10-07 Jeffrey Stedfast <fejj@novell.com>
16817 * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
16818 the old baseValue before allocating a new one.
16820 * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
16821 delete dx_info when we're done with it. Also get rid of the
16822 unneeded parser pointer since we're just using this->parser
16825 2008-10-07 Sebastien Pouliot <sebastien@ximian.com>
16827 * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
16828 GdkColor unless we need them. Unref the pixmap after the call to
16829 gdk_cursor_new_from_pixmap.
16831 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
16833 * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
16834 a MediaFrame leak-per-node whenever the queue is cleared.
16836 * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
16837 frame->bufefr before updating it to point to a new malloc'd
16839 (ASFDemuxer::TryReadFrame): Delete the frame on error.
16840 (IMediaStream::PopFrame): After getting the node's frame, set the
16841 node->frame to NULL.
16843 2008-10-06 Larry Ewing <lewing@novell.com>
16845 * media.cpp, media.h: rework image code to skip using a downloader
16846 when a cached image surface is available. Fix a crash where
16847 multiple loading errors occur for a single image. Rewrite
16848 existing SetSourceAsync ticks when the source changes again before
16849 the initial tick was processed.
16851 The goal here is to greatly reduce the work we do in cases where
16852 existing sources are moved between images. Future work should
16853 consist of moving things to the ImageSource model internally.
16855 2008-10-06 Sebastien Pouliot <sebastien@ximian.com>
16857 * text.cpp (Glyphs::Layout): Handle NULL values coming from
16858 GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did
16859 not come up before today or why it now fails anyway).
16861 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
16863 * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
16864 stuff, it's too expensive for what we need.
16865 (ImageBrush::TargetUnloaded): Same.
16867 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
16869 * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
16871 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
16873 * pipeline.cpp: Reorganize some code.
16875 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
16877 * audio.cpp, audio.h: Access the Media directly to enqueue frames,
16878 avoiding the need for a tick call on the main thread. If audio
16879 underflowed and we don't have more data available, set buffer
16880 underflow flag on the media player.
16881 * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
16882 the data available, return MEDIA_NOT_ENOUGH_DATA.
16883 * downloader.cpp, downloader.h: Remove RequestPosition methods, no
16885 * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
16886 use that value to determine if we should seek or not.
16887 * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
16888 audio/video needs more data, but the buffer is empty.
16889 * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
16890 have an in-memory buffer of demuxed frames (one queue for frames
16891 for each stream), and calculate buffer size from that.
16892 ProgressiveSource: open an additional file descriptor for writing,
16893 makes locking unnecessary. Change al io to return failure if there
16894 is not enough data, this allows us to remove all the
16895 blocking/waiting logic. MemoryQueueSource: push seeks to
16896 MmsDownloader, instead of waiting for MmsDownloader to check for
16897 pending seeks. FileSource: don't reinvent the wheel and use stdio
16898 to get buffered io instead of having buffering logic ourselves.
16899 * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
16900 underruns correctly.
16901 * media.cpp: MediaElement: Retrieve buffer size from the demuxer
16902 instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
16903 trying to open media and retry later on.
16905 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16907 * src.mdp: Updated.
16909 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16911 * dependencyobject.cpp: Use atomic operations with
16912 objects_created|destroyed.
16914 2008-10-02 Chris Toshok <toshok@ximian.com>
16916 * resources.cpp (glib_is_stupid): we need to cast value in order
16919 2008-10-02 Geoff Norton <gnorton@novell.com>
16921 * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
16922 Add some headers needed to compile when #undef DEBUG
16924 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
16926 * xaml.cpp: Fix mixup between delete and g_free
16928 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
16930 * value.cpp: Fix == for KeyTime (padding too). Add comments and
16931 indent method correctly.
16933 2008-10-02 Jeffrey Stedfast <fejj@novell.com>
16935 * xaml.cpp: Move the definition of XamlElementInfo to the top so
16936 that g++ doesn't complain about deleting an incomplete type inside
16937 the XamlElementInstance dtor. Also gets rid of other g++ compiler
16940 * list.cpp (List::InsertAfter): New convenience function to sort
16941 of balance the API.
16943 * font.cpp (FontFace::Load): Don't ref the default face, it is
16944 returned to us with a ref already.
16946 2008-10-02 Jackson Harper <jackson@ximian.com>
16948 * xaml.cpp: Now that Info's aren't shared, Instance's can free
16949 them. Also properties need to free their name.
16951 2008-10-02 Larry Ewing <lewing@novell.com>
16953 * geometry.cpp (Geometry::OnSubPropertyChanged): move
16954 OnSubPropertChanged to Geometry to pick up transform changes until
16955 a better solution is devised. Fixes updated
16956 test-clip-invalid-update.htm.
16958 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
16960 * value.cpp: Fix == for Duration and RepeatBehavior. We can't
16961 use memcmp to compare them since they include (unassigned)
16962 padding. Both structs overrides their == operator so we use that.
16964 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
16966 * resources.cpp: Free the values (not only their content) when
16967 the hash table is destroyed. Correctly (delete) free the value
16968 when compiled against glib < 2.12 (e.g. SLED10).
16970 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
16972 * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
16973 mess clipping. Add similar fill rule setting code in Geometry::Draw
16974 because Shape::Fill is not called for clipping (but the fill rule
16975 still applies). Comment both so I don't mess with them again :)
16977 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
16979 * font.cpp (FontFace::LoadGlyph): We need to force the font size
16980 if we don't own it, since we don't know what the current size is
16982 (FontFace::Kerning): Same.
16983 (FontFace::GetExtents): Here too.
16985 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
16987 Attempt #2 at fixing bug #430766.
16989 * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
16990 - this helps us do better fallback for bug #430766.
16991 (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
16992 try to use the Microsoft Lucida Sans font if available. If not,
16993 fall back to GNOME's Bitstream Vera Sans font. Then fallback to
16994 DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
16995 render many of the glyphs in bug #430766, hence why it is last
16996 choice). If the user doesn't have the X.Org fonts, he's SOL.
16998 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17000 * value.h[.in],value.cpp: Fix operator == to work for non-DO and
17001 non-string values. This fix the issue of removing stuff from a
17002 ResourceDictionary (while a copy still exists in the underlying
17005 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17007 Attempt #1 at fixing bug #430766.
17009 * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
17010 argument to LoadFontFace() so that we don't fail when matching the
17011 loaded family name.
17013 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17015 * font.cpp (FontFace::OpenFontDirectory): Now a static class
17017 (FontFace::LoadFontFace): New static method which tries to load an
17018 FT_Face given an FcPattern and a list of families.
17019 (FontFace::FontFace): No longer tries to load an FT_Face, instead
17020 we have it passed to us as an argument.
17021 (FontFace::LoadDefaultFace): New static method to load a global
17022 FT_Face representing the default system font.
17023 (FontFace::GetDefault): Instantiates a new FontFace using the
17024 global system default FT_Face.
17025 (FontFace::Load): Now takes only a TextFontDescription (much
17026 cleaner/simpler). If we are loading the default system font or if
17027 loading the requested font fails, simply return a new FontFace
17028 based on the global system default FT_Face.
17029 (TextFont::TextFont): Now takes fewer arguments (cleaner API,
17031 (TextFont::Load): Now only takes a TextFontDescription argument to
17032 make the API simpler/cleaner.
17033 (TextFontDescription::CreatePattern): Now public and takes a
17034 'sized' argument specifying whether or not the created pattern
17035 should include the size field. This is needed because TextFont
17036 caches based on all attributes while FontFace caches on everything
17037 but size. Also, don't include weight, width, or slant if our font
17038 family is the default (Portable User Interface is not allowed to
17039 have any of those attributes).
17040 (TextFontDescription::IsDefault): New method to decide if our
17041 family is the default or not.
17042 (TextFontDescription::GetFamilies): New convenience method to
17043 strsplit the family string into an array.
17044 (TextFontDescription::SetFamily): If the value "Portable User
17045 Interface" is set, set our family to NULL instead.
17047 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17049 * geometry.cpp (GeometryGroup::Draw): Make sure the original
17050 fill rule is still in effect at the end of drawing the group.
17052 2008-10-01 Chris Toshok <toshok@ximian.com>
17054 * geometry.cpp (GeometryGroup::Draw): reinstate the call to
17055 cairo_set_fill_rule removed in r105643. This fixes
17056 http://mapul.com/Tutorials.html.
17058 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17060 * shape.cpp: (Shape::InsideObject) Move cairo_save after the
17061 extents.PointInside check since there was no cairo_restore
17062 if false was returned. Looks likely that false was not much
17063 returned (if ever).
17065 2008-09-30 Chris Toshok <toshok@ximian.com>
17067 * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
17068 recompute our bounds when an item (can only be a stylus point)
17069 changes its properties. Fixes stroke bounds in the face of
17070 dragging text in inkjournal.
17072 2008-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
17074 * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
17075 pa_stream_[cork|trigger|flush|drain] since the audio source might
17076 have gotten deleted by the time the callback is called.
17078 2008-09-30 Chris Toshok <toshok@ximian.com>
17080 * dirty.cpp (Surface::ProcessDownDirtyElements): use
17081 AddDirtyElement instead of |= to set flags, since it might require
17082 dirty list manipulation.
17084 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17086 * xaml.cpp: Fix (again) the leaks in dependency_object_add_child,
17087 this time with new/delete to make it work with non-DO.
17089 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17091 * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
17093 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17095 * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
17098 2008-09-30 Stephane Delcroix <sdelcroix@novell.com>
17100 * downloader.cpp: fix the leak in validate_policy.
17102 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17104 * debug.cpp: Make sure allocated 'binary' is freed in every case
17105 inside addr2line_offset.
17107 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17109 * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
17110 ensures that the dtor won't be called while playing or that we'll
17111 be playing destructed sources, but Close might be called at any
17114 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17116 * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
17117 underflows and /0 errors.
17119 2008-09-29 Chris Toshok <toshok@ximian.com>
17121 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
17122 if during the course of traversing the tree, we come across a temp
17123 namescope, merge that up instead of recursing down even further.
17124 (DependencyObject::SetLogicalParent): only clear the namescope if
17125 we're merging ourselves into a parent namescope.
17127 * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
17128 here. the parser does it for us if we're parsing an element, and
17129 programmatically created objects don't seem to have them.
17131 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
17133 * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
17134 to get the download policy based on the uri. By default, returns
17136 (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
17138 (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
17139 of hardcoding mms:// check.
17140 (MediaBase::OnPropertyChanged): Same.
17142 * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
17143 (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
17144 image once we have at least 1 target which is loaded in the visual
17146 (ImageBrush::TargetUnloaded): Disallow image downloads once our
17147 loaded_count falls back to 0.
17148 (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
17150 (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
17151 and Unloaded events placed on the target object.
17153 * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
17155 * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
17156 AddTarget()/RemoveTarget() on DO property values as they are
17158 (DependencyObject::AddTarget): New virtual method which gets
17159 called on DependencyObject property values when they are set on a
17161 (DependencyObject::RemoveTarget): Same but when unset.
17163 * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
17164 state-change of allowing new downloads vs not.
17165 (MediaBase::OnLoaded): Call SetAllowDownloads(true).
17167 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
17169 * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
17170 state. Fixes some regressions introduced by moving the async
17171 downloading logic from MediaBase::SetSurface() into
17172 ImageBase::OnLoaded().
17174 2008-09-29 Sebastien Pouliot <sebastien@ximian.com>
17176 * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
17178 2008-09-28 Chris Toshok <toshok@ximian.com>
17180 * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
17181 SetValue (NameProperty) - just set the NameProperty, it'll update
17182 the proper namescope automatically.
17183 (get_parent): remove.
17184 (set_parent): remove. we no longer need to maintain a temporary
17185 chain while parsing. there's also no need for set_parent(NULL)
17187 (XamlElementInstance::TrySetContentProperty): if there was an
17188 error in DependencyObject::SetValueWithError or
17189 Collection::AddWithError, raise a parser error.
17190 (dependency_object_add_child): call
17191 Collection/ResourceDictionary::AddWithError, and raise a
17192 parser_error if it fails. also, remove set_parent (NULL) calls.
17194 * dependencyobject.h,
17195 dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
17196 (DependencyObject::RegisterAllNamesRootedAt): this now takes a
17197 MoonError argument so we can signal when there's been a conflict.
17198 (DependencyObject::SetLogicalParent): this also now takes a
17199 MoonError argument, and this is where ALL the namescope merging
17200 code lives. It's been removed from everywhere else. Also, this
17201 change means we can no longer be setting/clearing the parent in
17202 xaml.cpp, as it destroys temp namescopes.
17204 * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
17205 a MoonError parameter, so we can communicate back an
17206 error (conflicting names) properly.
17207 (NameScope::Dump): new method.
17209 * collection.h, collection.cpp (Collection::AddWithError): new
17210 method, generate a binding for this instead of Add. This allows
17211 us to check for name conflicts when a DOCollection is updated.
17212 (Collection::InsertWithError): same. Also, this method has
17213 something quirky about it - it calls AddedToCollection *before*
17214 the collection is modified. suck, but the logic in that code
17215 needs to be run before the change occurs.
17216 (Collection::AddedToCollection): add a MoonError arg so we can
17217 properly pass errors back up.
17218 (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
17220 (DependencyObjectCollection::AddedToCollection,
17221 DependencyObjectCollection::RemovedFromCollection): remove
17222 namescope handling from here.
17225 animation.cpp (KeyFrameCollection::AddedToCollection): track api
17226 change to Collection::AddedToCollection.
17228 * resources.h, resources.cpp: track changes to AddedToCollection,
17229 RegisterAllNamesRootedAt, and AddWithError. Also, remove
17230 namescope handling code from here.
17232 * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
17234 2008-09-28 Chris Toshok <toshok@ximian.com>
17236 * geometry.cpp (Geometry::OnPropertyChanged): this method was
17237 never chaining up to DependencObject::OnPropertyChanged, which it
17238 must do for properties whose ownerType != Geometry.
17240 2008-09-28 Chris Toshok <toshok@ximian.com>
17242 * media.cpp (TimelineMarkerCollection::Add): no need to check the
17243 element type of the value, by the time it makes it here it should
17244 already be the right type.
17246 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
17248 * media.cpp (MediaBase::OnLoaded): Logic moved here from
17250 (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
17251 should start the downloader yet.
17253 * xaml.cpp: Revert the hydrating check for SetSurface() from the
17254 previous commit. This is causing a bunch of failures :(
17256 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
17258 * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
17259 parser_info->hydrating and parser_info->hydrate_expecting based on
17260 whether or not we are really doing a HydrateFromString() vs
17261 CreateFromString().
17262 (create_element_info_from_imported_managed_type): Only
17263 SetSurface() if we are hydrating.
17264 (XamlElementInstanceNative::CreateItem): Same.
17265 (XamlElementInfoManaged::CreateElementInstance): Here too.
17266 (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
17267 (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
17268 (XamlElementInfoImportedManaged::CreateElementInstance): Same.
17269 (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
17270 (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
17272 2008-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
17274 * dependencyobject.cpp, dependencyobject.h: Make objects_created and
17275 objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
17276 track a specific type, might be useful when the id varies from run
17277 to run. Make Dispose public.
17278 * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
17280 * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
17281 cleanup properly there instead of in the dtor. This breaks a
17282 circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
17284 2008-09-26 Stephane Delcroix <sdelcroix@novell.com>
17286 * downloader.cpp: use StreamingPolicy for streaming
17288 2008-09-25 Jeffrey Stedfast <fejj@novell.com>
17290 * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
17291 g_str_has_prefix() on NULL strings.
17293 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17295 * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
17296 only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
17298 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17300 * downloader.cpp: validate_policy: Fix boolean logic according to
17301 comment, fixes crash.
17303 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17305 * media.cpp: Plug one more leak.
17307 2008-09-25 Stephane Delcroix <sdelcroix@novell.com>
17309 * downloader.cpp: neforce security policies on Open ()
17311 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17313 * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
17314 for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
17317 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17319 * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
17321 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17323 * downloader.cpp: Fix a potential leak.
17325 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17327 * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
17328 delete the listener link, not only remove it. Plugs a leak.
17330 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17332 * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
17333 yuv-converter.h: Sprinkle virtual on some destructors.
17335 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17337 * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
17340 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17342 * audio-pulse.cpp: Another leak plugged.
17344 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17346 * debug.cpp: Fix stack traces.
17348 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17350 * audio-pulse.cpp: Add a missing unref.
17352 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17354 * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
17356 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17358 * pipeline-ui.cpp: Hush.
17360 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
17362 * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
17365 2008-09-24 Aaron Bockover <abockover@novell.com>
17368 * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG
17369 in regards to header messages, detail messages, spacing, padding, and
17370 button layout; use a GtkDialog instead of a GtkWindow, and take all
17371 input through the dialog's response signal; require the user to explicitly
17372 tell us that they never want to see the installer again instead of
17373 assuming on cancel; fix crash when cancelling while downloading
17375 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
17377 * dependencyproperty.cpp (resolve_property_path): Fixicated.
17379 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
17381 * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is
17382 given to g_file_test
17384 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
17386 * dependencyproperty.cpp (resolve_property_path): Cleaned up the
17387 code, robustified, and fixed bug #429396.
17389 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
17391 * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
17395 2008-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
17397 * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
17398 * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
17399 pipeline-logo.cpp and made it an extern variable to avoid
17400 duplicating the entire image in the binary for every time we want
17402 * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
17403 codecs from our configuration, and always register ms codecs first
17404 in the list. NullDecoder: fix a buffer overrun and update according
17405 to pipeline-logo changes.
17406 * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
17407 to store our configuration.
17408 * media.cpp: MediaElement::MediaOpened: if any of the streams is
17409 handled by a nulldecoder, it means we don't have ms codecs
17410 installed. If so, show the codec downloader UI.
17411 * Makefile.am, src.mdp: Updated.
17413 2008-09-23 Chris Toshok <toshok@ximian.com>
17415 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17416 back out (#if false) this change for now.
17418 2008-09-23 Stephane Delcroix <sdelcroix@novell.com>
17420 * runtime.h|cpp: Surface::GetSourceLocation()
17422 2008-09-23 Sebastien Pouliot <sebastien@ximian.com>
17424 * uielement.cpp: Delete the temporary region before returning on an
17425 invisible element (common in defiwind).
17427 2008-09-22 Chris Toshok <toshok@ximian.com>
17429 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17430 another case we hadn't addressed - if the object we're merging
17431 *from* doesn't have a namescope, we iterate over the entire tree,
17432 registering names into our (possibly temporary, if it didn't exist
17433 before) namescope. Fixes firstfloorsoftware.com (bug #425268).
17435 * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
17438 2008-09-22 Jeffrey Stedfast <fejj@novell.com>
17440 * dependencyobject.cpp (merge_namescope): Return the parent_ns so
17441 that our caller doesn't have to call FindNameScope() in case it
17443 (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
17446 2008-09-22 Larry Ewing <lewing@novell.com>
17448 * geometry.cpp (Geometry::Draw): fix the transform brokeness that
17449 crept in. Fixes test-geometry-transform.xaml
17451 2008-09-22 Michael Dominic K. <mdk@mdk.am>
17455 * clock.h: 0-time animations are valid (as in: passing the timeline
17456 validation test) but do nothing. Fixes the clock11 test.
17458 2008-09-22 Michael Dominic K. <mdk@mdk.am>
17461 * animation.h: Attach storage only once. Fixes a crash in clock21.html.
17463 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
17465 Fix for bug #427560
17467 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
17468 Use FindNameScope() to get the scope to merge into, and only call
17469 this once - don't re-get it ever loop.
17471 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
17473 * dependencyobject.cpp (EventObject::AddXamlHandler): New method
17474 to add a handler from XAML so that we can force the listener token
17475 to be 0, like Silverlight does.
17477 2008-09-19 Michael Dominic K. <mdk@mdk.am>
17480 * animation.h: Attach the storage to the prev storage on the
17481 partuclar AnimationClock/Storage Begin, not when the parent
17482 storyboard begins. That fixes: #412074 .
17484 2008-09-19 Stephane Delcroix <sdelcroix@novell.com>
17486 * src/downloader.cpp:
17487 * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
17488 argument. Drop downloder_open method.
17490 * src/playlist.cpp:
17491 * src/deepzoomimagetilesource.cpp:
17492 * src/text.cpp: use the new Open with the corresponding policy.
17494 2008-09-19 Sebastien Pouliot <sebastien@ximian.com>
17496 * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
17497 offenders are gone now but it's still leaking in a few cases.
17499 2008-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17501 * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
17502 any custom Cleanup methods (allowing the Cleanup method to free
17503 buffer if g_free isn't the way to do it).
17505 2008-09-18 Jeffrey Stedfast <fejj@novell.com>
17509 * dependencyobject.cpp (class EventLists): Init current_token to
17510 1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
17511 apps use 0 to mean that a g_signal is not connected).
17513 2008-09-18 Geoff Norton <gnorton@novell.com>
17515 * media.cpp: Stop leaking pixbuf loaders.
17517 2008-09-18 Sebastien Pouliot <sebastien@ximian.com>
17519 * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
17520 g_free-ing it later.
17522 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17524 * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
17525 RUNTIME_INIT_CODECS_DEBUG.
17526 * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
17529 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17531 * src.mdp: Updated.
17532 * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
17533 moonlight logo for video and plays silence for audio.
17534 * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
17535 * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
17537 * pipeline-logo.inc: Added.
17539 2008-09-17 Larry Ewing <lewing@novell.com>
17544 * frameworkelement.cpp: start filling in InvalidateArrange and
17545 InvalidateMeasure calls.
17550 * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
17551 change handling here from panel since it is a Canvas property.
17553 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17555 * pipeline.h: Remove some dead code.
17557 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17559 * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
17560 add flags to disable both ffmpeg and ms codecs and include them by
17562 * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
17563 (until it gets integrated in libmscodecs.so), and register the mp3
17564 codec. Media::Initialize: Update according to runtime init flag
17565 changes, and always register null encoders.
17567 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17569 * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
17570 delete downloaded media files.
17572 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17574 * dependencyobject.cpp: Add TODO.
17576 2008-09-17 Jackson Harper <jackson@ximian.com>
17578 * xaml.cpp: Don't try setting the content prop in managed if there
17579 is no cdata content (we're just dealing with spaces).
17581 2008-09-17 Larry Ewing <lewing@novell.com>
17583 * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
17584 use the right index value.
17586 2008-09-17 Sebastien Pouliot <sebastien@ximian.com>
17588 * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
17589 SizeChangedEventArgs.
17591 2008-09-17 Michael Dominic K. <mdk@mdk.am>
17594 * clock.h: Separate raising events from raising completed events.
17595 In certain clock hierarchies this would cause us to emit completed event
17596 before raising animation setter events.
17598 * applier.cpp: Enabling the applier again.
17599 * applier.h: Animation resets don't have INSTANT precedence. The just
17600 have higher precedence than normal animation setters.
17602 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17604 * audio-pulse.cpp: Remove stray characters.
17606 2008-09-16 Chris Toshok <toshok@ximian.com>
17608 * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
17610 * frameworkelement.h, frameworkelement.cpp
17611 (FrameworkElement::UpdateLayout): override
17612 UIElement::UpdateLayout, and if that base class method returns
17613 true, emit LayoutUpdatedEvent.
17615 * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
17617 (UIElement::InvalidateArrange): add DirtyArrange.
17618 (UIElement::DoMeasure): this should drive the measure process -
17619 needs filling in, though.
17620 (UIElement::DoArrange): this should drive the arrange
17622 (UIElement::UpdateLayout): change return type to bool. call
17623 DoMeasure and DoArrange synchronously, and return true if we
17626 * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
17629 * cbinding.h, cbinding.cpp: regen.
17631 2008-09-16 Larry Ewing <lewing@novell.com>
17633 * clock.cpp: make AddTimeout take a priority. Make the render
17634 timeout slightly lower than default so that we process gdk events
17637 * media.cpp: raise the priority of the media timeout so that it
17638 doesn't drop below default or the render tick.
17640 2008-09-16 Chris Toshok <toshok@ximian.com>
17642 * dirty.h, dirty.cpp: add a priority queue-like setup for the
17643 dirty lists, where priority == level in the visual hierarchy.
17644 Processing the down dirty list proceeds from lower "priority" to
17645 higher, and the up dirty list proceeds from higher to lower.
17646 * runtime.h, runtime.cpp: use the new dirty lists.
17648 * uielement.h, uielement.cpp: add a visual_level field, which is
17649 updated when the element is added to the
17650 hierarchy (this->visual_level = parent->visual_level + 1).
17652 2008-09-16 Jackson Harper <jackson@ximian.com>
17654 * xaml.cpp: keys should be a property of the instance.
17656 2008-09-16 Fernando Herrera <fherrera@novell.com>
17658 * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
17659 has codecs=microsoft.
17660 * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
17661 in RUNTIME_INIT_BROWSER.
17663 2008-09-16 Jackson Harper <jackson@ximian.com>
17665 * xaml.cpp: Move cdata handling code into the content property
17666 setters, allow managed content property setters to set values from
17669 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17671 * audio-pulse.cpp: dlsym another method previously forgotten.
17673 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17675 * multiscaleimage.h, textbox.h: Use quotes to include our headers.
17677 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17679 * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
17680 don't link with alsa anymore
17682 2008-09-16 Jb Evain <jbevain@novell.com>
17684 * template.h (TemplateBinding): decorate with a SLVersion=2.
17686 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17688 * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
17689 link with pulseaudio anymore. Hopefully fixes #425560.
17691 2008-09-16 Fernando Herrera <fherrera@novell.com>
17693 * asf/asf-structures.h:
17697 * pipeline.h: Don't use relative paths in #includes.
17698 * Makefile.am: Add -Iasf
17700 2008-09-15 Michael Dominic K. <mdk@mdk.am>
17702 * src/applier.cpp: Disabling the applier for now, it seems there are still
17703 some tiny 'issues' with it.
17705 2008-09-15 Chris Toshok <toshok@ximian.com>
17707 * dependencyobject.h, dependencyobject.cpp: add real
17708 PropertyChange callbacks (so we can implement listeners without
17709 the listener being a dependencyobject - which is nice for
17710 TemplateBindings, which don't need all that overhead.)
17712 * template.h, template.cpp: switch over to using this new listener
17715 2008-09-15 Chris Toshok <toshok@ximian.com>
17717 * xaml.cpp (dependency_object_set_attributes): add the
17718 TemplateBinding to the item, not the containing template.
17720 2008-09-15 Larry Ewing <lewing@novell.com>
17722 * applier.h: really disable the applier to make changes instant,
17723 fixes page turn and the test regressions.
17725 * applier.cpp: ref and unref the object to avoid crashes on
17728 2008-09-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
17730 * src.mdp: Updated with new files.
17732 2008-09-12 Larry Ewing <lewing@novell.com>
17734 * grid.cpp (Grid::Measure): accumulate colspan width and pass
17735 pixel size restrictions on to the children.
17737 2008-09-11 Michael Dominic K. <mdk@mdk.am>
17741 * applier.h: Adding some defines for applier precedences + a way
17742 to instant apply with precedence == 0.
17744 2008-09-10 Michael Dominic K. <mdk@mdk.am>
17746 * clock.cpp: Properly emit the Completed event after the properties have
17749 2008-09-09 Michael Dominic K. <mdk@mdk.am>
17752 * applier.cpp: Removing debug messages, adding proper free code.
17754 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17758 * applier.cpp: Do not set the values, instead move them to applier.
17760 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17766 * runtime.h: Moving the Applier instance to TimeManager.
17768 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17771 * runtime.h: Adding Applier to Surface.
17773 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17776 * applier.h: Adding a basic Flush method, totally bad for now.
17778 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17781 * applier.h: Adding basic Apply function that applies all the changes
17784 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17787 * applier.h: Adding basic method to add property to apply on object.
17789 2008-09-08 Michael Dominic K. <mdk@mdk.am>
17793 * applier.h: Introducing the applier helper class. Will be used
17794 to apply property changes in order.
17796 2008-09-11 Jackson Harper <jackson@ximian.com>
17798 * xaml.cpp: Move some of the content property setting logic into
17799 the XamlElementInstance's.
17801 2008-09-11 Stephane Delcroix <sdelcroix@novell.com>
17803 * multiscaleimage.cpp: draw a pattern that should look like
17804 a MSI (currently still wrong)
17806 2008-09-10 Jeffrey Stedfast <fejj@novell.com>
17808 * text.h (class Run): Apparently Run's TextProperty is internal in
17811 2008-09-10 Larry Ewing <lewing@novell.com>
17814 * frameworkelement.cpp:
17815 * shape.cpp, shape.h:
17816 * canvas.cpp: update to pass the new more extensive tests.
17818 2008-09-10 Larry Ewing <lewing@novell.com>
17820 * size.h: Tweak to match updated tests.
17822 2008-09-09 Chris Toshok <toshok@ximian.com>
17824 * style.h (class Setter): make ValueProperty's PropertyType
17825 'object' instead of 'Managed'.
17827 * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
17828 little more bulletproof.
17829 (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
17830 NULL, don't create a TemplateBindingNode (and add it to the list)
17833 * type.h.in (class Type): remove OBJECT - it gets autogenerated
17836 * xaml.cpp (start_element): we need to set inst->parent before
17837 setting the attributes, as the attributes might include a
17838 StaticResource (or TemplateBinding) that requires us to walk back
17840 (XamlElementInfoNative::CreateElementInstance): create a
17841 XamlElementInstanceTemplate if the type is a subclass of
17843 (dependency_object_set_attributes): return out of this after
17844 adding the templatebinding (so we don't end up in the managed xaml
17845 loader code trying to set properties to "{TemplateBinding ...}"
17846 Also, if the property type is OBJECT, call into the loader (like
17847 we do with MANAGED), and fix the logic check on
17848 p->loader->SetAttribute in that case.
17850 * type.h, type-generated.cpp: regen.
17852 2008-09-09 Sebastien Pouliot <sebastien@ximian.com>
17854 * xaml.cpp: Don't unref NULL collections. Fix regression when
17855 parsing invalid points (or doubles).
17857 2008-09-08 Chris Toshok <toshok@ximian.com>
17859 * xaml.h, xaml.cpp: stopgap before jackson gets the completely
17860 managed approach to managed object parsing going. a few key
17863 1) xaml_load_managed_object takes an out bool
17864 parameter (is_dependency_object) so the managed code can create
17865 non-DO subclasses, and then the parser will pass that GCHandle
17866 back to managed code in set_attribute.
17868 2) added an add_child callback to the loader so that managed DO
17869 subclasses (and non-subclasses) can deal with collection
17870 properties. theres no ContentProperty handled in managed code,
17873 2008-09-08 Geoff Norton <gnorton@novell.com>
17875 * audio-*.(cpp|h): The Alsa code requires us to join the play
17876 thread before we remove the audio sources otherwise we can
17877 end up in a race accessing closed pcm's when shutting down.
17879 2008-09-08 Geoff Norton <gnorton@novell.com>
17881 * audio.cpp: Ensure that we dont enter an infinite loop before
17882 we actually start playing a source.
17884 2008-09-08 Larry Ewing <lewing@novell.com>
17886 * frameworkelement.cpp: make things 1.0 safe.
17888 2008-09-08 Larry Ewing <lewing@novell.com>
17890 * frameworkelement.cpp (FrameworkElement::Arrange): rework to
17891 match some of the Measure logic
17894 * canvas.cpp, canvas.h:
17895 * control.cpp, control.h: rework arrange implementation to match
17896 the measure logic and the current thinking on arrange.
17898 * uielement.cpp, uielement.h: expose render_size accessor.
17900 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
17902 * tilesource.h|cpp: keep the source and tiles info on the c++ side
17904 * multiscaleimage.cpp: draw a cairo pattern instead of nothing
17906 2008-09-08 Larry Ewing <lewing@novell.com>
17908 * grid.cpp: Chain collection changed up properly.
17910 2008-09-07 Larry Ewing <lewing@novell.com>
17912 * thickness.h (struct Thickness): add +/-/- to thickness to clean
17913 up some of the other code.
17915 * rect.h: remove ShrinkBy now that we can negate thickness
17917 * size.h: clean things and make GrowBy stop at 0 now that we can
17918 deal with thickness addition outside of things.
17921 * frameworkelement.cpp:
17923 * border.cpp: subtract the padding and border thickness from
17924 available size before passing it to children. Handle some corner
17925 cases in measure with ugly hacks.
17927 2008-09-07 Larry Ewing <lewing@novell.com>
17929 * canvas.cpp, canvas.h:
17930 * control.cpp, control.h:
17933 * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
17936 * frameworkelement.cpp: Make measure pre and post condition the
17937 output rather than doing it in the overrides themselves.
17939 * size.h: make sure min/max will never set a known size to NAN.
17941 2008-09-07 Chris Toshok <toshok@ximian.com>
17943 * type.h.in: add OBJECT kind.
17945 * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
17947 2008-09-06 Chris Toshok <toshok@ximian.com>
17949 * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
17950 - instead use 'Foo foo(args)'. the former creates 2 objects to
17953 * media.cpp (MediaElement::GetValue): same.
17955 * uielement.cpp: same.
17957 * error.h, error.cpp (class MoonError): make this a class instead
17958 of a struct, add a default ctor, remove Dispose and use ~MoonError
17959 instead, add FillIn methods that take a "code" as well as an
17960 ErrorType to support the parser.
17962 * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
17963 rid of GError and use MonoError exclusively, move the internal
17964 EventLists/EventList types to the .cpp file. Also, remove a few
17965 redundant methods on DependencyObject. The hit at call sites is
17966 negligable (one additional line, perhaps), and the call sites are
17967 few and far between.
17969 * xaml.cpp (dependency_object_set_attributes)
17970 (dependency_object_set_property): call
17971 DependencyObject::SetValueWithError.
17973 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
17974 the property here. the DO api is gone.
17976 2008-09-06 Chris Toshok <toshok@ximian.com>
17978 * grid.h, grid.cpp: flesh out some of the
17979 OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
17980 Also add in a completely broken and unfinished MeasureOverride
17981 implementation. It passes some of the tests, but not for the
17982 right reasons :) Lastly, move the GridUnitType enum to enums.h
17984 * enums.h: move GridUnitType here, and rename its elements to have
17985 a "GridUnitType" prefix.
17987 * xaml.cpp: track GridUnitType enum references.
17989 * dependencyproperty.g.cpp: fix up attached properties getters to
17990 return default values if there is one.
17992 2008-09-05 Jeffrey Stedfast <fejj@novell.com>
17994 * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
17995 actually change the lauout, so no need to set the dirty flag when
17997 (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
17999 (TextBlock::Paint): Same.
18001 2008-09-05 Larry Ewing <lewing@novell.com>
18003 * uielement.cpp: use render bounds rather than bounds to determine
18004 if we have something to draw.
18006 * stylus.h, stylus.cpp: remove the EmptyBackground method.
18008 Fixes the annotation regression in page turn (again).
18010 2008-09-04 Larry Ewing <lewing@novell.com>
18012 * uielement.h (class UIElement): generate managed accessors for
18015 2008-09-04 Chris Toshok <toshok@ximian.com>
18017 * xaml.cpp (dependency_object_add_child): add code here for
18018 FrameworkTemplate, call SetVisualTree with the child.
18020 * control.cpp (Control::Control): init bindings.
18021 (Control::~Control): unref applied_template and delete bindings.
18022 (Control::ApplyTemplate): make sure we return false here from a
18023 few error places (NULL template, a template with a NULL
18026 * template.cpp (FrameworkTemplate::FrameworkTemplate): init
18027 visual_tree to NULL.
18028 (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
18029 (FrameworkTemplate::SetVisualTree): new method, set visual_tree
18031 (ControlTemplate::DuplicateObject): we need to special case a
18032 couple of classes (collections, templates) in order to traverse
18034 (ControlTemplate::Apply): if the visual_tree is null, don't try to
18037 * template.h (class FrameworkTemplate): add SetVisualTree method
18040 2008-09-04 Larry Ewing <lewing@novell.com>
18042 * uielement.cpp, uielement.h: new methods GetSubtreeObject and
18043 ElementAdded ElementRemoved.
18045 * dependencyobject.h: remove ContentAdded, ContentRemoved.
18047 * collection.cpp, collection.h: rename ContentWalker to
18048 VisualTreeWalker use GetSubtreeObject () rather than content for walking.
18050 * template.cpp, template.h: make Apply return the newly created
18053 * panel.cpp, panel.h:
18054 * control.cpp, control.h: add template_root child that isn't
18055 hooked into the normal tree. Start implementing ApplyTemplate and
18058 * usercontrol.cpp: mess around with Content a little in making it
18059 use the ElementAdded ElementRemoved logic since UserControl
18060 doesn't really support template changes.
18062 * border.h: implement GetSubtreeObject.
18066 * frameworkelement.cpp:
18067 * canvas.cpp, canvas.h: update for new treewalker.
18069 2008-09-04 Jeffrey Stedfast <fejj@novell.com>
18071 * layout.cpp (TextLayout::Render): Added some new arguments which
18072 aren't actually used yet but will be eventually (assuming I
18073 continue with this approach).
18075 * textbox.cpp (TextBox::Paint): Don't bother painting the
18076 background, control does this for us.
18078 2008-09-04 Stephane Delcroix <sdelcroix@novell.com>
18080 * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
18081 own file, implement the downloader.
18083 2008-09-03 Chris Toshok <toshok@ximian.com>
18085 * dependencyobject.h: as much as i hate this, add
18086 GetCurrentValues() for the template stuff.
18088 * xaml.cpp: add XamlElementInstanceTemplate and initial support
18089 for TemplateBindings.
18091 * template.h, template.cpp: add a bunch of stuff for templates.
18093 * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
18094 watch for template property changes, and apply the template in
18095 OnLoaded (or if we're already loaded). Also, add accessors for
18098 * dependencyproperty.g.cpp: regen.
18100 2008-09-03 Larry Ewing <lewing@novell.com>
18102 * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
18103 the new Size methods.
18105 * border.cpp, border.h: add some initial (broken) rendering
18106 support, rework measure to use some of the new rect and size
18109 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
18111 * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
18112 property chanegs, no need to re-layout or invalidate - according
18113 to my little test program, Silverlight 2 Beta 2 does not change
18114 the rendered text when this property changes - any newlines in the
18115 input text stay there.
18117 2008-09-03 Sebastien Pouliot <sebastien@ximian.com>
18119 * resources.cpp: (ContainsKey) Don't crash if a null key is
18120 supplied. (Remove) same. (Add) same.
18122 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
18124 * enums.cpp (initialize_enums): Map Horizontal and
18125 VerticalScrollBarVisibility properly.
18127 * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
18128 think we need this for TextBox controls since their
18129 ActualWidth/Height aren't based on the text extents afaik.
18130 (TextBox::Paint): Implemented, sorta.
18132 2008-09-03 Chris Toshok <toshok@ximian.com>
18134 * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
18137 2008-09-03 Larry Ewing <lewing@novell.com>
18139 * uielement.cpp, uielement.h:
18140 (UIElement::FrontToBack): Make FrontToBack non-virtual and move
18141 the generic logic here.
18143 * control.cpp, control.h:
18144 * panel.cpp, panel.h: Remove ftb logic, everything is handled in
18147 2008-09-03 Larry Ewing <lewing@novell.com>
18149 * uielement.cpp, uielement.h:
18150 * media.cpp, media.h:
18151 * panel.cpp, panel.h:
18152 * shape.cpp, shape.h: Add GetCoverageBounds virtual method
18153 to let elements compute their own opaque coverage.
18155 2008-09-03 Stephane Delcroix <sdelcroix@novell.com>
18157 * multiscaleimage.h|.cpp: new MultiScaleImage type
18159 2008-09-02 Chris Toshok <toshok@ximian.com>
18161 * resources.h, resources.cpp: constify this.
18162 (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
18165 * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
18167 (dependency_object_set_attributes): add support for StaticResource
18168 lookups. going to refactor all this to add support for
18171 2008-09-02 Jeffrey Stedfast <fejj@novell.com>
18173 * eventargs.h (class CollectionChangedEventArgs): Implemented
18174 accessor methods to get/set the event arg values.
18176 * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
18177 strdup the event_name string and also updated to use an accessor
18178 method to prevent a possible NULL dereference.
18180 2008-09-02 Michael Dominic K. <mdk@mdk.am>
18183 * animation2.h: Reworking the animation hookup storage fix. Checking for
18184 subclass is plain dumb. Just make an exception for ObjectAnimation.
18186 2008-09-02 Michael Dominic K. <mdk@mdk.am>
18188 * animation.cpp: Fixing a problem in animation hookup
18189 storage -- the type/kind that the animation generates has to be the subclass
18190 of the type/kind the target property is ready to accept.
18192 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
18194 * multiscalesubimage.h: fixing code generation decorators
18196 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
18198 * multiscalesubimage.h: new type
18200 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
18202 * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
18203 end so that we can fall back to that position as the line
18204 width (we don't want to include trailing spaces unless
18206 (TextLayout::Render): If the line width is greater than the
18207 allowable width, keep the line left-aligned like Silverlight does.
18209 2008-08-29 Chris Toshok <toshok@ximian.com>
18211 * resources.cpp (ResourceDictionary::Clear): call
18212 Collection::Clear after we've cleared the hash so the hash will be
18213 empty in event handlers.
18215 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
18217 * layout.cpp (TextLayout::Layout): Do a slightly better job of
18218 keeping track of line->width - still not 100% correct.
18220 2008-08-28 Chris Toshok <toshok@ximian.com>
18222 * Makefile.am: add resources.h and resources.cpp
18224 * xaml.cpp (class XamlElementInfo): add x:Key field (since this
18225 can't set a field on the object -- it might be a value type).
18226 (class XamlElementInstanceValueType): remove the empty
18227 implementation of SetAttributes. we'll define it later.
18228 (XNamespace::SetAttribute): handle name/key behavior here. Only
18229 allow one of them to be set on an object. Also, only attempt to
18230 set DependencyObject::NameProperty on an item if it's not a value
18232 (start_element): don't add value type children to their parent in
18233 start_element (as we haven't read the data that will allow us to
18234 create the value typed object.) we need to push this off to the
18235 end_element handler. also return early if there are problems
18236 setting attributes.
18237 (end_element_handler): if we're creating a value typed ELEMENT,
18238 add the child to the parent here.
18239 (dependency_object_add_child): add some ResourceDictionary
18240 validation here (if there's no key, etc), and actually call
18241 dict->Add(key, child).
18242 (XamlElementInstanceNative::CreateItem): don't crash if we failed
18243 to create an item. (fixes one of the crashes caused by the
18244 ResourceDictionaryTests - ParseDouble)
18245 (XamlElementInstanceValueType::SetAttributes): call
18246 value_type_set_attributes.
18247 (value_type_set_attributes): stripped down version of
18248 dependency_object_set_attributes, as there are only a handful (is
18249 it really only x:Name and x:Key?) attributes we handle on value
18251 (globally): always call set_parent as opposed to
18252 ->SetLogicalParent. we might not be dealing with a DO-subclass.
18254 * xaml.h (class XamlLoader): remove the explicit C api calls
18255 xaml_create_from_file, xaml_create_from_str, and
18256 xaml_hydrate_from_str. Replace them with instance methods on
18257 XamlLoader (CreateFromFile, CreateFromString, and
18258 HydrateFromString, respectively) Add WithError variants of the
18259 these, and have the generator generate bindings for them so we can
18260 throw parse exceptions into managed code.
18262 * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
18264 * value.h.in (struct Value): add Is overload with
18267 * uielement.h: include resources.h.
18269 * collection.h, collection.cpp: change the api in a few ways to
18270 make ResourceDictionary easier to write - make Count virtual,
18271 remove all the type checks for element type from methods, and add
18272 that check to Collection::CanAdd. ResourceDictionary overrides
18273 that and always returns true. Make Clear return a bool.
18275 * animation.h, animation.cpp: track collection changes.
18277 * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
18278 implementations to the .cpp file.
18280 * resources.h, resources.cpp: split out the code for
18281 ResourceDictionary here. ResourceDictionary is an odd fish. In
18282 1.0 land, it provides the same api as a collection, and things can
18283 be looked up by name via findName. In 2.0 land, items in
18284 ResourceDictionaries have to have either an x:Key or x:Name
18285 attribute. If both are lacking it's an error. If the former is
18286 specified you can only get at it through Resources["name"]. If
18287 the latter is specified, you can use both Resources["name"] or
18290 * dependencyobject.cpp, dependencyobject.h: add Is and GetType
18291 overloads that take additional_types. Make IsValueValid take an
18292 additional_types parameter too. Expose ClearValue to managed code
18293 so we can actually clear the Value* to null without using
18294 the (unsupported from the generator) old method of passing
18295 IntPtr.Zero (Value* now maps to "ref Value" in generated
18296 pinvokes.) Lastly add a SetValueWithError method so we can throw
18297 exceptions in managed code.
18299 * border.h: add defaults for Padding and BorderThickness.
18301 * border.cpp: simplify things a bit since we don't have to worry
18302 about padding/border thickness being NULL.
18304 * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
18306 2008-08-28 Jeffrey Stedfast <fejj@novell.com>
18308 * layout.cpp (TextLayout::Render): Respect TextAlignment.
18310 2008-08-26 Chris Toshok <toshok@ximian.com>
18312 * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
18313 rid of this g_assert, it's crashing the moon-unit tests. just
18315 (DependencyObject::SetSurface): don't do anything if the surface
18316 is already set to the same value.
18318 * animation.cpp (Storyboard::SetSurface): don't do anything if
18319 GetSurface() == surface.
18321 * text.cpp (Glyphs::SetSurface): same.
18323 * uielement.cpp (UIElement::SetSurface): same.
18325 * brush.cpp (ImageBrush::SetSurface): same.
18329 * collection.cpp (DependencyObjectCollection::SetSurface): same.
18330 (Collection::RemoveAtWithError): this (against logic) raises
18331 ArgumentException, not ArgumentOutOfRangeException.
18333 2008-08-25 Chris Toshok <toshok@ximian.com>
18335 * rect.h, rect.cpp: rename the w/h fields to width/height, since
18336 every other instance of similar fields are named that.
18338 * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
18339 uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
18340 brush.cpp: track rect change.
18342 2008-08-25 Chris Toshok <toshok@ximian.com>
18344 * border.h, border.cpp: implement ArrangeOverride, and fix up some
18345 test failures in MeasureOverride.
18347 * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
18348 also set the desired size here (to the final size we get from
18351 2008-08-25 Michael Dominic K. <mdk@mdk.am>
18353 * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
18354 proper kinds of values (TYPE::DEPENDENCY_OBJECT).
18356 2008-08-25 Michael Dominic K. <mdk@mdk.am>
18359 * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
18360 Also adding validation methods.
18362 2008-08-25 Michael Dominic K. <mdk@mdk.am>
18365 * animation2.h: Base work for ObjectAnimationUsingKeyFrames
18368 2008-08-24 Geoff Norton <gnorton@novell.com>
18370 * media.h: Add a new overload to set the SourceProperty from managed land.
18371 * media.cpp: Support async source changing downloader creation for ImageSource
18372 * cbinding.(cpp|h): Regen
18374 2008-08-23 Geoff Norton <gnorton@novell.com>
18376 * mplayer.cpp: Only ref the audio if we have it as well.
18378 2008-08-23 Geoff Norton <gnorton@novell.com>
18380 * bitmapimage.h: Add to the build
18382 2008-08-23 Geoff Norton <gnorton@novell.com>
18384 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
18385 type.h, value.h: Regenerated
18386 * downloader.cpp|h: Return failure state for downloader->GetResponse
18387 * runtime.h: Generate C bindings for IsMainThread.
18389 2008-08-23 Larry Ewing <lewing@novell.com>
18391 * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
18392 properties. Move the quadratic generation into
18393 GenerateQuadratics.
18395 Regenrate and remove the managed wrappers.
18397 2008-08-23 Larry Ewing <lewing@novell.com>
18399 * xaml.cpp (value_from_str): fixed crossed commits with Auto
18402 * collection.cpp (ContentWalker::Step): add some debug logic to
18403 protect against an error case for now.
18405 2008-08-23 Chris Toshok <toshok@ximian.com>
18407 * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
18409 * thickness.h, thickness.cpp: rename thickness_from_str to
18410 Thickness::FromStr, and make it return a bool instead of a
18411 pointer, as Point and Rect do.
18413 * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
18415 * xaml.cpp (value_from_str): use the CornerRadius parsing method,
18416 and track the change to the Thickness one.
18418 2008-08-23 Larry Ewing <lewing@novell.com>
18420 * xaml.cpp (value_from_str): quick auto hack so we can test
18423 * runtime.cpp (RenderNode::Render): fix typo in merge
18425 2008-08-23 Larry Ewing <lewing@novell.com>
18427 * uielement.cpp, uielement.h: move basic ftb logic here from
18428 panel. Start storing extents allong with bounds.
18430 * panel.cpp, panel.h: move most ftb logic to uielement.cpp. Use
18433 * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
18434 to uielement in front_to_back mode unconditionaly.
18436 * runtime.cpp, runtime.h: make RenderNode members private and move
18437 the ftb override logic here and out of the PostRender call.
18439 * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
18442 * control.cpp, control.h: implement basic functionality.
18444 2008-08-22 Chris Toshok <toshok@ximian.com>
18446 * color.h, rect.h, point.h: remove the copy ctors. we don't need
18447 them, and they were causing crashes (!)
18449 2008-08-22 Chris Toshok <toshok@ximian.com>
18451 * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
18452 take the margins into account, even when we're childless.
18454 * panel.h, panel.cpp: add MeasureOverride which always returns
18457 * border.h (class Border): add property accessors for everything.
18459 * border.cpp (Border::MeasureOverride): new implementation.
18461 * value.h.in, value.cpp: add CornerRadius support, and remove the
18462 unnecessary casts (and in the Rect/Point cases, calls to the copy
18465 * value.h, dependencyproperty.g.cpp: regenerate.
18467 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
18469 * textbox.h (class SelectionChangedEventArgs): Added
18470 Text/SelectionChangedEventArgs.
18472 2008-08-22 Chris Toshok <toshok@ximian.com>
18474 * frameworkelement.cpp (FrameworkElement::Measure): instead of
18475 always calling MeasureOverride here, we call the registered manage
18476 callback if there is one. So, we proxy into managed code here,
18477 invoke the virtual method FWE.MeasureOverride, and if there's no
18478 subclass override (or if it chains up for some reason), we end up
18479 in MeasureOverride by virtue of the pinvoke in
18480 FrameworkElement.cs.
18481 (FrameworkElement::MeasureOverride): move all the logic for the
18482 default MeasureOverride implementation here. it's pretty
18483 braindead - takes margins into account, measures our child, makes
18484 sure our size is between Min/Max. That's about it.
18485 (FrameworkElement::Arrange): same drill as ::Measure.
18486 (FrameworkElement::ArrangeOverride): still (incorrectly) return
18489 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
18491 * textbox.h: Made ArrangeOverride() virtual and added
18492 SelectionChangedEvent.
18494 2008-08-22 Chris Toshok <toshok@ximian.com>
18496 * dependencyobject.cpp (DependencyObject::GetContent): guard
18497 against the value being NULL.
18499 2008-08-22 Larry Ewing <lewing@novell.com>
18501 * collection.cpp (ContentWalker::ContentWalker): make
18502 ContentWalker understand directions (Logical, ZForward, ZReverse).
18504 2008-08-22 Larry Ewing <lewing@novell.com>
18506 * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
18507 when drawing in the image backend.
18509 2008-08-22 Chris Toshok <toshok@ximian.com>
18511 * frameworkelement.h, frameworkelement.cpp: add in the layout foo
18512 - provide implementations of Measure and Arrange that just call
18513 MeasureOverride and ArrangeOverride. These are virtual and meant
18514 to be overridden either in unmanaged code (by simply overriding
18515 them), or in managed code (RegisterManagedOverrides is called in
18516 FWE.Initialize.) Decorate the class with @CallInitialize so the
18517 managed ctor calls it.
18519 * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
18520 ctor, and add the layout methods. Measure and Arrange are pure
18523 * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18525 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
18527 * textbox.cpp (TextBox::Layout): Implemented rough layout.
18529 * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
18531 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
18533 * textbox.cpp (TextBox::ArrangeOverride): Added.
18535 * frameworkelement.h (class FrameworkElement): Changed default
18536 Width/Height values to NAN.
18538 * textbox.cpp: Initial implementation of TextBox, Layout and
18539 Rendering logic still missing.
18541 2008-08-22 Larry Ewing <lewing@novell.com>
18543 * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
18546 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
18548 * audio-alsa.cpp: Call Underflowed () when we run out of data.
18550 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
18552 * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
18553 VideoEnded and AudioEnded states. Implement handling of VideoEnded
18554 state, and call MediaElement::MediaEnded when both states have been
18556 * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
18557 all media finished (both video and audio) logic there.
18559 2008-08-21 Larry Ewing <lewing@novell.com>
18561 * uielement.cpp (UIElement::ComputeLocalTransform): clean up
18562 accumulated transform logic. Keep the parent TransformFor out of
18563 the local_transform.
18565 2008-08-21 Larry Ewing <lewing@novell.com>
18567 * uielement.cpp (UIElement::Dispose): add logic removed from
18570 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
18573 2008-08-21 Chris Toshok <toshok@ximian.com>
18575 [ fixes annotations not showing up in pageturn due to a NULL
18576 background on the ink presenter ]
18578 * stylus.h, stylus.cpp (class InkPresenter): add an override of
18579 EmptyBackground(). If we have a non-empty stroke bounding
18580 rectangle, return false. Otherwise fall back to
18581 Panel::EmptyBackground.
18583 * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
18584 method. the panel implementation returns true if GetBackground()
18585 returns NULL. Use this virtual method instead of an explicit
18586 GetBackground() call in Panel::FrontToBack.
18588 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
18590 * enums.cpp: Added ScrollBarVisibility enum
18592 * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
18593 invalidate if the TextWrappingProperty changes too.
18595 2008-08-21 Chris Toshok <toshok@ximian.com>
18597 * border.h, border.cpp, cornerradius.h: add new
18600 * Makefile.am: add border/cornerradius to the file list.
18602 * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
18603 dependencyproperty.g.cpp: regen.
18605 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
18607 * textbox.h (class TextBox): The TextBox namespace should be
18608 System.Windows.Controls
18610 * stackpanel.h (class StackPanel): #include panel.h
18612 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
18614 * textbox.h: Initial implementation of the TextBox class (just
18617 * value.h.in (struct Value): Don't use int32_t or uint64_t,
18618 etc. Be consistent and use the glib types.
18620 * layout.cpp (TextLayout::Layout): Fixed
18621 LineStackingStrategy/LineHeight issues. If we are using
18622 BlockLineHeight & the specified LineHeight is not Auto, then we
18623 need to use 0.0 as the descender.
18625 2008-08-21 Chris Toshok <toshok@ximian.com>
18627 * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
18628 accessors to all the subclasses. They're autogenerated from the
18629 respective class's DP's.
18631 * animation2.h: same.
18633 * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
18635 * control.h (class Control): add some more GenerateAccessors.
18637 * control.cpp: and remove the manual implementations here.
18639 * dependencyproperty.g.cpp: regen.
18641 2008-08-21 Larry Ewing <lewing@novell.com>
18643 * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
18646 * xaml.cpp (value_from_str): unref the collections we create after
18649 2008-08-21 Jackson Harper <jackson@ximian.com>
18651 * xaml.cpp: Can't rely on the type for getting a managed element's
18652 name, we have to pull it from the element name provided to the
18655 2008-08-21 Chris Toshok <toshok@ximian.com>
18657 * dependencyobject.cpp (DependencyObject::HasProperty): pass
18658 additional_types to IsSubclassOf.
18660 * type.h, type.cpp: add IsSubclassOf variants that take
18661 additional_types. Fixes lookup problems of non-custom DP's on
18662 managed subclasses.
18664 2008-08-21 Chris Toshok <toshok@ximian.com>
18666 * value.h.in (struct Value): make all single arg primitive value
18667 typed ctors "explicit" so c++ won't do any magic implicit
18668 conversion from value type to Value.
18672 * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
18673 Value()'s explicitly.
18675 * collection.cpp (DoubleCollection::FromStr): same.
18677 2008-08-20 Larry Ewing <lewing@novell.com>
18679 * dependencyobject.cpp (create_temp_namescope): don't leak the
18680 temporary namescope we create. Also don't create it over and over
18683 2008-08-20 Larry Ewing <lewing@novell.com>
18685 * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
18686 virtual methods so that we can begin to simplify content rules.
18688 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
18689 GetContent to handle the children in a generic way.
18691 * uielement.cpp|h: start moving generic uielement content logic
18692 here. Implement OnLoaded and deal with content directly.
18694 * canvas.cpp|h: remove obsolete methods. Move most of zindex
18695 property logic from panel to here.
18697 * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
18700 * control.cpp|h: generate accessors, start remove OnLoaded and
18703 * dependencyproperty.g.cpp: regen.
18705 2008-08-20 Chris Toshok <toshok@ximian.com>
18707 * text.cpp, text.h: generate accessors for Glyph properties.
18709 * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
18710 shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
18711 xaml.cpp: make another pass through files switching to C++
18712 accessors from GetValue(FooClass::FooProperty)->AsFoo().
18714 * dependencyproperty.g.cpp: regen.
18716 2008-08-20 Chris Toshok <toshok@ximian.com>
18718 * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
18719 canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
18720 frameworkelement.cpp, frameworkelement.h, geometry.cpp,
18721 geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
18722 namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
18723 shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
18724 text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
18725 uielement.h, xap.cpp, xap.h:
18727 mostly, decorate almost all DependencyProperties with
18728 @GenerateAccessors, add in lots of new ones that weren't present
18729 before (to the .h), and remove all those implementations from
18732 Also, don't use #if SL_2_0 in the headers. we can't depend on
18733 that being defined (especially once we install). Any
18734 2.0-specific behavior needs to be done in the .cpp files. There
18735 are still a few things that are wrong wrt
18736 this (dependencyproperty.g.cpp needs to define the DP's
18737 regardless of version, they can just be NULL in the 1.0 case for
18738 2.0 properties, for instance.)
18740 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
18742 2008-08-20 Chris Toshok <toshok@ximian.com>
18744 * uielement.h (ClearLoaded): use &=, not |=, here. fixes tests.
18746 2008-08-20 Jeffrey Stedfast <fejj@novell.com>
18748 * layout.cpp (TextLayout::Layout): Updated to take a
18749 TextLayoutHints argument for providing hints like text alignment
18750 and line stacking/height.
18752 * text.cpp (class TextBlock): Updated a bit for Silverlight
18753 2.0. All of the properties added in 2.0 are now there, although
18754 only 2 of them are respected at the moment (line stacking strategy
18757 * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
18759 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18761 * audio.cpp: NULL out the player instance after deleting it.
18763 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18765 * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
18766 called and if so, do nothing.
18768 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18770 * audio.cpp: We only support 1 or 2 channels for the moment.
18772 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18774 * media.cpp, media.h: Fix buffering progress to take into account that
18775 the first pts isn't necessarily 0 (happens for live media).
18777 2008-08-20 Chris Toshok <toshok@ximian.com>
18779 * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
18780 Focus events on click in a 1.0 context.
18782 2008-08-20 Jackson Harper <jackson@ximian.com>
18784 * xaml.cpp|h: Setting properties requires the xaml namespace so it
18785 can lookup managed types. TODO: It also needs the default
18786 assembly, but I am thinking of moving that to the loader.
18788 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18790 * mplayer.cpp: Properly ref/unref the AudioSource.
18792 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18794 * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
18796 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18798 * media.cpp, media.h, runtime.cpp: Remove media_init, just make
18799 runtime_init call Media::Initialize directly.
18801 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18803 * media.h, media.cpp: Remove media_element_advance_frame from header,
18804 no need to make it public.
18806 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18808 * mplayer.cpp: AdvanceFrame: only return true if we actually processed
18809 any frames. SeekCallback: clear the queue of audio frames as well.
18810 * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
18811 Don't change previous_position while we're seeking, and don't make
18813 * audio.cpp, audio.h: Added AudioSource::ClearFrames.
18815 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18817 * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
18819 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18821 * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
18824 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
18826 * canvas.h, canvas.cpp:
18827 * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
18828 from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
18830 * panel.cpp, collection.cpp: related changes.
18832 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
18834 * uielement.h: change the generator instructions so the
18835 NameProperty is generated in FrameworkElement.
18837 2008-08-19 Chris Toshok <toshok@ximian.com>
18839 * dependencyobject.h,
18840 dependencyobject.cpp (DependencyObject::GetContent): ripped this
18841 out of a hack, should prove useful for the work coming up.
18843 2008-08-19 Chris Toshok <toshok@ximian.com>
18845 * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
18847 2008-08-19 Chris Toshok <toshok@ximian.com>
18849 * control.h, control.cpp (class Control): generate a binding for
18850 Control::InitializeFromXaml and drop the 2 manual C bindings.
18852 * cbinding.h, cbinding.cpp: regen.
18854 2008-08-19 Chris Toshok <toshok@ximian.com>
18856 * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
18857 autogenerate our binding for it.
18859 * cbinding.h, cbinding.cpp: regen.
18861 2008-08-19 Chris Toshok <toshok@ximian.com>
18863 * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
18864 real class, and remove the implementation of
18865 keyboard_get_modifiers. instead, provide a c++ method (both a
18866 getter and setter) and annotate the Getter with
18867 GenerateCBinding/GeneratePInvoke.
18869 * collection.h, collection.cpp: reorder the class decls (why do
18870 people put private first?) and make CollectionIterator a real
18871 class, with annotated methods. Also, move
18872 double_collection_from_str and point_collection_from_str to
18873 DoubleCollection::FromStr and PointCollection::FromStr
18874 respectively. move double_garray_from_str out of here (to
18877 * utils.h, utils.cpp: new (hopefully last) home for
18878 double_garray_from_str.
18880 * point.h, point.cpp (struct Point): rename point_from_str to
18881 Point::FromStr. no reason to have a C method for that.
18883 * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
18885 * window-gtk.h (class MoonWindowGtk): mark the ctor and
18886 GetWidget() with GenerateCBinding/GeneratePInvoke.
18888 * window-gtk.cpp: and remove their implementations.
18890 * xaml.cpp: convert over to all the new ::FromStr methods.
18892 * thickness.cpp: track new home of double_garray_from_str.
18894 * cbinding.h, cbinding.cpp: regen.
18896 2008-08-19 Chris Toshok <toshok@ximian.com>
18898 * uielement.h, uielement.cpp: make almost all data
18899 private/protected. Add a couple of methods to aid in
18900 this (IsLoaded, ClearLoaded, TransformPoint). Get rid of the
18901 cbinding for transform_point - it's never used. Also, re-order
18902 the header to put public things first, then protected then
18905 * runtime.cpp: use IsLoaded.
18907 * panel.cpp: use ClearLoaded.
18909 * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
18912 2008-08-19 Chris Toshok <toshok@ximian.com>
18914 * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
18915 lists, as we will almost always have identical lists. compare the
18916 head of the new list to focused_element to determine if focus
18919 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18921 * pipeline.cpp: Beautify error messages.
18923 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18925 * media.cpp: test-inexistent-media(s) were failing due to ISP's
18926 tendency to return search pages for failed dns lookups. Fixed tests
18927 after testing with sane DNS settings and did the appropiate change
18928 in code (raise correct error message/number).
18930 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
18932 * runtime.h: Make RUNTIME_INIT values sequential.
18934 2008-08-19 Chris Toshok <toshok@ximian.com>
18936 * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
18937 of the object before parsing so that objects don't switch from the
18938 loader's surface to NULL as they're added to the hierarchy while
18941 2008-08-19 Larry Ewing <lewing@novell.com>
18943 * shape.cpp (Shape::InsideObject): check the extents first, then
18944 reorder the stroke/fill tests to test for the most likely first.
18946 Helps speed up sliverlight.net/world a bit.
18948 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18950 * mplayer.h, pipeline.h: No need to surround GetTypeName with
18951 OBJECT_TRACKING anymore.
18953 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18955 * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
18956 audio-pulse.h: Added, our new audio abstraction/implementation.
18957 * Makefile.am, src.mdp, type-generated.cpp: Updated.
18958 * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
18959 * runtime.cpp, runtime.h: Add runtime overrides for audio.
18961 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
18963 * xap.cpp (xap_unpack): Fixed compiler warning.
18965 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18967 * media.cpp: Include headers mplayer.h doesn't include anymore.
18968 MediaElement::SetMedia: only set audio data on the MediaPlayer if
18969 the media has audio. TImelineMarkerCollection::Add: don't call the
18970 base class' Add, call base's Insert instead. Fixes a stack overflow
18971 since base class' Add calls Insert, which TimelineMarkerCollection
18972 overrides to call Add.
18974 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18976 * enums.cpp: Wrap 2.0-only code in SL_2_0.
18978 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
18980 * zip/unzip.c: Get rid of unused variable.
18982 * value.cpp (Value::ToString): Get rid of unused variable.
18984 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18986 * dependencyobject.h: EventObject::ref: print a stack trace before the
18987 abort if we can, and fix typo in the abort message.
18989 2008-08-19 Geoff Norton <gnorton@novell.com>
18991 * xap.cpp: Ensure we can actually enter the directory we're creating.
18993 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
18995 * mplayer.cpp: Silence the compile warning.
18997 * color.cpp (color_from_str): Got rid of unused variable.
18999 * xaml.cpp (dependency_object_set_attributes): Don't need to use
19000 strlen(str) == 0 to figure out if the string is empty, just check
19002 (wrap_type): Removed. Doesn't seem to be used any longer.
19003 (get_type_for_property_name): Same.
19004 (panel_add_child): Same.
19005 (dependency_object_set_property): Made static.
19006 (dependency_object_set_attributes): Same.
19007 (dependency_object_hookup_event): Same.
19008 (dependency_object_missed_property): Same.
19010 * dependencyproperty.cpp (resolve_property_path): Use proper
19011 integer types and avoid calling strlen if all we care to know is
19012 if the string is empty.
19014 * runtime.cpp (Surface::Paint): Get rid of an annoying debug
19016 (Surface::HandleMouseEvent): Removed unused variable.
19018 2008-08-19 Chris Toshok <toshok@ximian.com>
19020 * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
19021 robust - handle Type.Event notation, making sure that the type is
19022 valid for the target.
19024 2008-08-19 Larry Ewing <lewing@novell.com>
19026 * runtime.cpp|h: add override to use sofware fallbacks for
19029 2008-08-19 Chris Toshok <toshok@ximian.com>
19031 * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
19032 1.0 and 2.0 cases. big oops.
19034 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
19036 * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
19037 of a warning that is no longer valid.
19039 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19041 * downloader.h, downloader.cpp: Add a request field to
19042 DownloaderResponse, and a response field to DownloaderRequest. When
19043 a request is aborted, also abort the response. This fixes a crash
19044 when we aborted the request before receiving a response, the
19045 response had no idea the request had been aborted (since the
19046 request didn't store the response after creating it, it couldn't
19047 notify the response of the abort), and happily accessed deleted
19050 2008-08-18 Chris Toshok <toshok@ximian.com>
19052 * runtime.cpp (Surface::CreateArgsForEvent): new method, create
19053 the right kind of args for a given event. we should probably
19055 (Surface::EmitEventOnList): use CreateArgsForEvent. Only create
19056 one instance of the event args that we use to bubble along the
19057 element list. If it's a RoutedEventArgs subclass, set the source
19058 to be the first element in the list, and check the "Handled"
19059 attribute after every emit to see if we should finish early (this
19060 provides for 2.0 semantics).
19061 (Surface::FocusElement): unfortunately the event generation is
19062 async, so add a tick call if we need to. if we already have a
19063 tick call (meaning >= 1 focus change has happened already in this
19064 tick), we drop the intervening change(s). This is likely wrong.
19065 (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
19066 the proper element lists.
19067 (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
19068 silverlight2 (and we have a focused element), emit the event on
19069 the list of elements from the focused element back up to the root.
19070 Otherwise just emit it on the toplevel.
19072 * runtime.h (class Surface): add GetFocusedElement/FocusElement
19073 methods, which are used to implement
19074 FocusManager.GetFocusElement() and Control.Focus().
19076 * uielement.h, uielement.cpp (class UIElement): remove a bunch of
19077 Emit$Event() methods that were never used.
19079 * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
19080 not just "Loaded". there are parsing rules that we can't make use
19081 of here, so more work will likely have to happen in the parser.
19083 * trigger.h (class EventTrigger): add registered_event_id.
19085 * cbinding.h, cbinding.cpp: regenerate.
19087 2008-08-18 Geoff Norton <gnorton@novell.com>
19089 * type-generated.cpp, cbinding.cpp|h: Rengerated
19090 * dependencyobject.h: Bind DependencyObject .ctor
19092 2008-08-18 Geoff Norton <gnorton@novell.com>
19094 * deployment.h: Move CrossDomainAccess to
19095 * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
19096 can specify values from the enum.
19098 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19100 * cbinding.cpp, cbinding.h, uielement.h: Mark
19101 UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
19103 2008-08-18 Larry Ewing <lewing@novell.com>
19105 * panel.cpp|h: remove SetSurface override, the
19106 DependencyObjectCollection::SetSurface does the work already.
19108 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19110 * uielement.cpp: Autogenerate more of the bindings, make
19111 desired_size private, etc.
19113 2008-08-18 Geoff Norton <gnorton@novell.com>
19115 * eventargs.cpp|h: Change the return type to int, fix the build.
19117 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19119 * uielement.cpp (uielement_get_surface): Removed.
19120 (uielement_invalidate): Removed.
19121 (uielement_set_transform_origin): Removed.
19123 * transform.cpp: Removed manual c-bindings.
19125 * text.cpp: Removed manual c-bindings for property accessors.
19127 2008-08-18 Geoff Norton <gnorton@novell.com>
19129 * type-generated.cpp, cbinding.cpp|h: Rengerated
19130 * uielement.cpp|h, type.h, value.h: Keyboard->Key
19131 * runtime.cpp|h: Move key translation to eventargs, and pass the
19132 raw GdkEventKey to KeyEventArgs.
19133 * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
19134 and remove the old KeyboardEventArgs.
19136 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19138 * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
19140 * size.cpp: Removed manual ctor c-binding.
19142 * shape.cpp: Removed manual c-bindings for property accessors.
19144 2008-08-18 Geoff Norton <gnorton@novell.com>
19146 * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
19147 from managed Streams.
19149 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19151 * runtime.cpp: Removed manual c-bindings for Surface and renamed
19152 Get/SetTrans() to Get/SetTransparent().
19154 * panel.cpp: Removed manual c-bindings for property accessors.
19156 * media.cpp: Removed manual c-bindings for property accessors and
19157 other methods that are now autogenerated.
19159 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19161 * dependencyobject.h: Make the generator happy.
19163 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19165 * geometry.cpp: Removed manual c-bindings for property accessors.
19167 2008-08-18 Michael Dominic K. <mdk@mdk.am>
19169 * runtime.h: Caller is "in main thread" also when the main_thread
19170 pointer equals NULL (no surface has been created).
19172 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19174 * debug.cpp: Fix a leak found by valgrind.
19176 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19178 * dependencyobject.h: Make GetTypeName virtual if we're tracking
19179 objects, enables better output of lost objects.
19181 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19183 * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
19184 more objects to be enqueued for unref, loop until there are none
19187 2008-08-17 Geoff Norton <gnorton@novell.com>
19189 * downloader.cpp|h: Add a method for DownloaderResponse to
19190 support a Header Visitor.
19192 2008-08-17 Geoff Norton <gnorton@novell.com>
19194 * uielement.h: Expose desired_size as public to fix the build.
19196 2008-08-17 Chris Toshok <toshok@ximian.com>
19198 * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
19200 2008-08-17 Chris Toshok <toshok@ximian.com>
19202 * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
19203 INCLUDE_MANAGED_CODE.
19205 2008-08-15 Larry Ewing <lewing@novell.com>
19207 * clock.cpp|h: add methods Jeff removed back.
19209 2008-08-15 Chris Toshok <toshok@ximian.com>
19211 * stylus.h (class DrawingAttributes): all managed DP fields are
19213 (class Stroke): DrawingAttributesProperty and StylusPointsProperty
19214 are private in managed-land.
19216 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
19218 * grid.h: Autogenerate bindings for GetActualWidth/Height
19220 * grid.cpp: Removed manual c-bindings.
19222 * frameworkelement.cpp: Removed manual c-bindings.
19224 2008-08-15 Chris Toshok <toshok@ximian.com>
19226 * eventargs.h (enum CollectionChangedAction): change Reset to
19227 Cleared, and add Clearing to handle the old functionality in
19228 DependencyObject::OnCollectionClear.
19230 * dependencyobject.h (class DependencyObject): remove
19231 OnCollectionClear. we handle that case in OnCollectionChanged
19234 * panel.h, panel.cpp (Panel::OnCollectionChanged): move
19235 OnCollectionClear code to here.
19237 * uielement.cpp (UIElement::OnCollectionChanged): add
19238 ActionClearing code here.
19240 * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
19242 * collection.cpp (Collection::Clear): use
19243 EmitChanged (CollectionChangedActionClearing,...) instead of
19246 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
19248 * eventargs.cpp|h: Same.
19250 * control.cpp: Same.
19252 * contentcontrol.cpp: Removed manual property accessor c-bindings.
19254 * clock.cpp: Removed manual c-bindings for things that can be
19257 * brush.cpp|h: Removed manual c-bindings for property accessors.
19259 * animation.cpp|h: Added some convenience c++ property accessors and
19260 got rid of all of the manual c-bindings. Fixed them to be
19263 * stylus.cpp: Added c++ property accessors and updated the code to
19264 use them (cleans up some code) and also got rid of the c binding
19265 accessors. We'll autogenerate these.
19267 2008-08-15 Sebastien Pouliot <sebastien@ximian.com>
19269 * layout.cpp: Don't add kerning before a dot (.). This match SL
19270 behavior (i.e. it's not a "sliding dot" algorithm like I expected)
19271 and the effect is visible in a few DRT (like #184).
19273 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
19275 * uielement.cpp (UIElement::GetTriggers): Added for convenience.
19276 (UIElement::Dispose): Use the new convenience method.
19278 2008-08-15 Chris Toshok <toshok@ximian.com>
19280 * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
19281 (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
19283 (Panel::OnCollectionChanged): simplify this since the code moved
19284 to ChildAdded/ChildRemoved.
19286 * panel.h, panel.cpp (Panel::Dispose): loop over our children
19287 setting their visual parent to NULL.
19289 * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
19290 trigger collection removing ourselves as the target.
19291 (UIElement::OnPropertyChanged): handle TriggersProperty here -
19292 remove target from the old triggers and set target on the new
19294 (UIElement::OnCollectionChanged): new method, handle
19295 TriggersCollection.
19297 * dependencyobject.cpp: be consistent in our treatment of
19298 LogicalParent - clear it in every place we're removing a DO. Warn
19299 if we're setting it again on the same DO.
19301 * collection.h, collection.cpp: remove triggercollection's
19302 added/removedfromcollection, adn remove uielementcollection's
19303 removedfromcollection. Also, stop using a separate closure. The
19304 collection's LogicalParent always has the same value - use that.
19306 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
19308 * clock.cpp (TimeManager::SourceTick): Instead of always using up
19309 to 1/30 of a second for flushing the async queue, use only the
19310 time remaining in our render pass to flush it.
19312 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
19314 * animation.h: KeyTimeProperty isn't nullable in managed code.
19316 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
19318 * cbinding.cpp, cbinding.h: Regenerated.
19319 * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
19320 to at least open the source.
19321 * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
19323 2008-08-15 Jackson Harper <jackson@ximian.com>
19325 * xaml.cpp: Need to advance after F.
19327 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
19329 * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
19332 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
19334 * dependencyproperty.g.cpp: Regenerated.
19336 2008-08-14 Larry Ewing <lewing@novell.com>
19338 * animation.h (class KeyFrame): remove the KeyTime DP and make
19339 the ctor private this is an abstract class.
19341 * animation.cpp: retrieve the property via name.
19343 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
19345 * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
19346 many times as we can in 1/30th of a second. Major visual
19347 performance improvement for bug #395160.
19349 2008-08-14 Jackson Harper <jackson@ximian.com>
19351 * xaml.cpp|h: We need to pass a pointer to the top level control
19352 when hooking up a managed event, the managed code uses this to
19353 find the method to invoke.
19355 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
19357 * uielement.cpp: Implemented property accessors for ZIndex
19359 * collection.cpp (UIElementZIndexComparer): Use
19360 UIElement::GetZIndex(). If, in the future, we make GetZIndex()
19361 return a cached value, now we'll automagically benefit from it.
19363 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
19365 ZIndex sorting optimization for bug #395160
19367 * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
19368 over the z_sorted list, it might not yet be
19369 populated (e.g. ResortZIndex() may not have been called yet).
19370 (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
19371 new collection is non-null.
19372 (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
19373 (Panel::OnLoaded): Queue a resort here too.
19375 * collection.cpp (UIElementCollection::AddedToCollection):
19376 Removed. We don't want to do the zindex sortign here anymore. Too
19377 slow. Instead, we'll have Panel::OnCollectionChanged() set the
19378 DirtyChildrenZIndices dirty flag so that the renderer forces a
19380 (UIElementCollection::Insert): Removed, no need to override
19381 anymore since we won't be resorting by zindex here anymore.
19382 (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
19383 maintained as items are added/inserted, we need to always init the
19384 z_sorted array here even if we only have 1 item.
19386 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19388 * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
19390 * playlist.cpp: Use DependencyObject::SetName instead of the C method.
19391 * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
19392 well as Name accessors.
19393 * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
19394 * runtime.cpp: Updated according to new method names.
19396 2008-08-14 Jackson Harper <jackson@ximian.com>
19398 * xaml.cpp: We now create property instances from the property's
19399 type info not the property's parent type. This will allow us to
19400 have a managed attached property on a native object.
19402 2008-08-14 Chris Toshok <toshok@ximian.com>
19404 * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
19406 * thickness.h, thickness.cpp: add thickness_from_str.
19408 * xaml.cpp: add thickness parsing.
19410 2008-08-14 Jackson Harper <jackson@ximian.com>
19412 * xaml.cpp: Need to lookup property element name's in their
19413 namespace so that managed attached properties can be set.
19415 2008-08-14 Jackson Harper <jackson@ximian.com>
19417 * xaml.cpp: If there is a dot in the element name we can assume
19418 it's a property (or at least not an element). This should prevent
19419 some extra calls into managed code to try to create types from
19422 2008-08-13 Geoff Norton <gnorton@novell.com>
19424 * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
19425 calls into the time manager.
19427 2008-08-13 Geoff Norton <gnorton@novell.com>
19429 * runtime.cpp|h: Add a binding for g_idle_add.
19431 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19433 * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
19434 MouseEventArgs methods.
19436 2008-08-14 Jackson Harper <jackson@ximian.com>
19438 * type-generated.cpp: Value types.
19440 2008-08-13 Jackson Harper <jackson@ximian.com>
19442 * xaml.cpp: Make sure we set content properties.
19444 2008-08-13 Jackson Harper <jackson@ximian.com>
19446 * xaml.cpp: Add support for parsing value types.
19448 2008-08-13 Chris Toshok <toshok@ximian.com>
19450 * panel.cpp (Panel::OnCollectionChanged): we only need to call
19451 OnLoaded on the new child.
19453 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19455 * stylus.h: StylusInfo doesn't have a managed equivalent.
19457 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19459 * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
19460 * cbinding.cpp, cbinding.h: Regenerated.
19462 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19464 * type.cpp: Remove spew.
19465 * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
19466 we're trying to get values, not set them.
19468 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
19470 * dependencyproperty.g.cpp: Regenerated.
19471 * geometry.h: Added IsFilled property.
19473 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19475 * brush.h: Set correct managed DP access and property types.
19477 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
19479 * *.h: Added GeneratePInvoke attribute to each ctor
19481 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
19483 * text.cpp: s/Inlines/InlineCollection/g
19485 * xaml.cpp: s/Inlines/InlineCollection/g
19487 * collection.h (class InlineCollection): Renamed from Inlines.
19489 * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
19490 and also the ctor. Needed to prevent a crash in test-props.html
19492 2008-08-13 Geoff Norton <gnorton@novell.com>
19494 * runtime.cpp|h: Reuse the old html_timer infrastructure for the
19495 intial DispatcherTimer implementation.
19497 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
19499 * media.h (class MediaElement): Make MarkersProperty internal for
19502 * grid.h (class Grid): Make Column/RowDefinitionsProperties
19503 internal for managed-side.
19505 * text.h (class TextBlock): Make InlinesProperty internal for
19508 * panel.h (class Panel): Update ChildrenProperty managed property
19511 Also added newlines to the end of some files to silence compile
19514 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19516 * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
19517 cbinding.cpp, cbinding.h: Regenerated.
19518 * geometry.h: Annotation fix.
19519 * Makefile.am, src.mdp: Added tilesource.h
19520 * tilesource.h: Added.
19522 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19524 * src.mdp, Makefile.am: Added animation2.h
19525 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
19526 dependencyproperty.g.cpp: Regenerated.
19527 * animation.h: Added missing 2.0 DPs and more annotations.
19528 * animation2.h: Added, contains 2.0 animation classes.
19529 * clock.h: There are no managed equivalent of TimelineGroup and
19530 ParallelTimeline, remove their Namespace annotation.
19532 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19534 * shape.h: Fix warning.
19536 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19538 * shape.h: The managed Shape class must be constructable, so make all
19539 pure virtual methods from the native Shape class just virtual.
19540 * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
19542 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19544 * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
19545 dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
19546 text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
19547 annotations to make gui-compare happier.
19549 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19551 * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
19552 style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
19555 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19557 * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
19558 dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
19559 type-generated.cpp, value.h: Added a native StackPanel class and
19560 generate the managed StackPanel.
19562 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
19564 * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
19565 namescope.h, stylus.h, transform.h: Tweak some annotations.
19567 2008-08-12 Chris Toshok <toshok@ximian.com>
19569 * style.h (class Style): make the "Setters DP" field private.
19571 * template.h (class ControlTemplate): add TargetType DP
19573 * dependencyproperty.g.cpp: regen.
19575 2008-08-12 Chris Toshok <toshok@ximian.com>
19577 * style.h (class Setter): hack for the DependencyProperty valued
19578 property. we need to parse a string DP name in a context where we
19579 don't know the type to apply to it, so we need to have a string
19582 * dependencyproperty.g.cpp: regen.
19584 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19586 * collection.h: Annotate Collection.
19588 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19590 * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
19591 size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
19593 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19595 * src.mdp: Updated.
19597 2008-08-12 Chris Toshok <toshok@ximian.com>
19599 * collection.cpp (Collection::Clear): make a temporary copy of the
19600 array so we can zero out the ptrarray before calling
19601 RemovedFromCollection.
19603 2008-08-12 Jackson Harper <jackson@ximian.com>
19606 * xaml.cpp: Hydrate now passes in the default assembly name and
19607 path (we can probably do away with path's I think that's just a
19608 holdover from 1.1). If no assembly name is specified in the
19609 custom xmlns, the default's are used.
19611 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19613 * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
19614 style.h, uielement.h, grid.h, media.h: Tweaked annotations to
19615 support managed DP accessor generation.
19617 2008-08-12 Jeffrey Stedfast <fejj@novell.com>
19619 * collection.cpp (Collection::SetCount): Convenience function.
19620 (Collection::Clear): Use SetCount().
19621 (Collection::Insert): Same.
19622 (Collection::RemoveAt): Same.
19624 * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
19625 parent class rather than base class - while the
19626 DependencyObjectCollection might not currently override Add/Insert
19627 methods, if at some later point overrides are added, then we need
19628 to do no work here.
19630 * collection.cpp (DependencyObjectCollection::SetValueAt):
19631 Removed (not used anywhere).
19632 (Collection::SetValueAtWithError): This needs to call
19633 SetValueAt(), not GetValueAt().
19634 (Collection::SetValueAt): Delete the removed Value after emitting
19635 the event so we don't leak it.
19637 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19639 * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
19640 deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
19641 trigger.h, uielement.h: Use string instead of char* as
19644 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19646 * animation.h, brush.h, canvas.h, clock.h, collection.h,
19647 contentcontrol.h, control.h, dependencyobject.h, deployment.h,
19648 downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
19649 namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
19650 transform.h, trigger.h, uielement.h, usercontrol.h: Added
19651 @Namespace annotations, and changed @PropertyType which were
19652 declared as gint32 (and are enums) to use the actual enum type.
19653 * dependencyproperty.g.cpp: Updated.
19655 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19657 * src.mdp: Updated.
19659 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
19661 * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
19662 DependencyProperty to the Kind enum.
19664 2008-08-11 Chris Toshok <toshok@ximian.com>
19666 * deployment.h (class Application): add ResourceProperty.
19668 * style.h: add ValueProperty.
19670 * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
19671 after adding the Version=2.0 stuff to the collection api.
19673 * dependencyproperty.g.cpp: regen.
19675 2008-08-11 Chris Toshok <toshok@ximian.com>
19677 * error.h, error.cpp: add an enum to MoonError that lets us
19678 specify which exception to raise.
19680 * collection.h, collection.cpp: a few changes:
19682 1. make most methods take Value* now instead of Value, to ease the
19683 autogenerated bindings. Leave in Add/Remove taking (Value v) so
19684 we can let c++ do some implicit conversion lifting for us. Leave
19685 the (Value) variants as non-virtual, and make the Value* ones
19688 2. Make ::Add call ::Insert, instead of duplicating all the code.
19690 3. Move all calls of AddedToCollection and RemovedFromCollection
19691 to *after* the work has been done (they're past-tense, so do what
19692 their name implies.) This means subclasses can assume the item is
19693 already in the array (or removed from it) when those methods are
19694 called. The one holdout to this utopian ideal is Clear(). we
19697 4. Switch from overriding GetValue to handle CountProperty (and
19698 leaking a Value* every time we get it) to setting the
19699 CountProperty whenever we need to (in Insert/RemoveAt).
19701 5. Add special GetValueAtWithError, SetValueAtWithError, and
19702 RemoveAtWithError methods, that allow us to effectively raise
19703 exceptions from the unmanaged code. Use the new
19704 MoonError::ErrorKind enum to specify which exception.
19706 6. remove a bunch of C api, which is now autogenerated.
19708 * dependencyproperty.g.cpp (dependency_property_g_init): regen to
19709 pick up Collection::CountProperty's default value.
19711 * cbinding.h, cbinding.cpp: autogen'ed collection api.
19713 * stylus.h, media.h, media.cpp: track collection changes.
19715 * dependencyobject.cpp: track MoonError enum change.
19717 2008-08-11 Chris Toshok <toshok@ximian.com>
19719 * dependencyproperty.g.cpp: regen.
19721 * control.h (class Control): add StyleProperty.
19723 2008-08-11 Sebastien Pouliot <sebastien@ximian.com>
19725 * layout.cpp: Compute line's height with more precision. This
19726 removes the cumulative difference (over multiple lines) with
19727 Silverlight implementation. Fix DRT#209 (enough to PASS) and
19728 improve several other ones (already passing but imperfect).
19730 2008-08-11 Chris Toshok <toshok@ximian.com>
19732 * style.h: comment out 2 problematic DP's for now.
19734 * dependencyproperty.g.cpp: regen
19736 2008-08-11 Chris Toshok <toshok@ximian.com>
19738 * style.h, style.cpp: add Style, SetterBase, Setter, and
19739 SetterBaseCollection unmanaged types.
19741 * Makefile.am: add them to the 2.0 build.
19743 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
19744 dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
19746 2008-08-11 Jeffrey Stedfast <fejj@novell.com>
19748 * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
19750 (Polygon::OnCollectionChanged): Same.
19752 * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
19753 the TextDecorationsProperty changes too. Fixes the "underline
19754 hyperlinks" portion of bug #412986.
19756 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
19758 * xaml.cpp: Remove debug spew.
19760 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
19762 * array.cpp, array.h: Removed, no longer needed.
19763 * collection.cpp, collection.h: Moved double_garray_from_str to
19765 * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
19766 shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
19767 xaml.cpp: Remove the double and point arrays, no longer needed.
19768 * type-generated.cpp: Remove the double and point arrays, no longer
19769 needed. Implement support for 2.0 events.
19771 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
19773 * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
19776 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
19778 * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
19780 2008-08-09 Jeffrey Stedfast <fejj@novell.com>
19782 * *.h: Removed *_new() prototypes which are autogenerated in
19785 2008-08-08 Chris Toshok <toshok@ximian.com>
19787 * template.h, template.cpp: new file, stub implementations for
19788 FrameworkTemplate and ControlTemplate.
19790 * Makefile.am: add template.h/cpp.
19792 * control.h: add Template property.
19794 * frameworkelement.h: add some 2.0 events.
19796 * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
19797 value.h, type-generated.cpp: regenerate.
19799 2008-08-08 Chris Toshok <toshok@ximian.com>
19801 * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
19802 parser around in various methods (starting from the public
19803 xaml_set_property_from_str and value_from_str*) in order to get it
19804 down to where it's needed for the enum_* calls.
19806 * enums.h, enums.cpp: add a "sl2" argument so we can resolve
19807 sl1/sl2 specific enum values, and add the 2.0 specific
19808 Horizontal/VerticalAlignment mappings.
19810 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
19812 * runtime.cpp: Remove comments to self :)
19814 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
19816 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19817 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
19818 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
19819 animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
19820 control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
19821 clock.cpp, uielement.h, collection.h, geometry.h,
19822 contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
19823 collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
19824 frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
19825 namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
19826 registration from *_init methods, and remove *_init methods which
19827 turned out to be empty after that.
19829 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
19831 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19832 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
19833 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
19834 animation.h, grid.cpp, downloader.h, shape.h,
19835 dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
19836 control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
19837 Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
19838 clock.cpp, uielement.h, collection.h, geometry.h,
19839 contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
19840 grid.h, collection.cpp, geometry.cpp, shape.cpp,
19841 dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
19842 brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
19843 usercontrol.h: Generate dependency property registration.
19845 2008-08-07 Chris Toshok <toshok@ximian.com>
19847 * collection.h, collection.cpp (double_collection_from_str): new
19849 (point_collection_from_str): new method.
19851 * xaml.cpp (value_from_str): add support for
19852 DoubleCollection/PointCollection properties. leave
19853 DoubleArray/PointArray in for now, although nothing should use it.
19855 * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
19856 PointArray/DoubleArray properties to using
19857 PointCollection/DoubleCollection. This is unfortunately a
19858 necessity due to the 2.0 changes, but it should be transparent for
19861 2008-08-07 Larry Ewing <lewing@novell.com>
19863 * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
19864 on ShiftPosition interaction with the shape cache to fix the
19865 droppings we were seeing in AnimationMatrix and
19866 StoryBoard_ModifyProperty.htm.
19868 2008-08-07 Geoff Norton <gnorton@novell.com>
19870 * media.cpp: When the MediaElement source changes set the
19871 BufferingProgress back to 0 otherwise we may never emit a
19872 BufferingProgressChangedEvent for the new source.
19874 2008-08-07 Sebastien Pouliot <sebastien@ximian.com>
19876 * layout.cpp: Handle negative horiBearingX correctly. This gives
19877 better visual results in DRT #47 (same width value, up to 2
19878 decimal) and #209 (not enough to make it PASS but I doubt the
19879 master is ok, since I can't duplicate its output).
19881 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
19883 * dependencyobject.cpp: HasProperty: accept attached properties for
19886 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
19888 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
19889 control.h, deployment.h, text.h, thickness.h, trigger.cpp,
19890 canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
19891 transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
19892 shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
19893 text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
19894 point.h, collection.h, geometry.h, contentcontrol.cpp,
19895 frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
19896 geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
19897 rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
19898 instructions to generate c constructors in headers and remove *_new
19899 implementations from cpp files.
19900 * dependencyobject.h: Typedef function pointer to avoid making the
19901 generator understand function pointer syntax. Update comments to
19903 * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
19904 * type.h, type.h.in: Updated comments to new syntax.
19905 * mms-downloader.h: Use C++ syntax.
19906 * dependencyproperty.h, dependencyproperty.cpp: Make
19907 dependency_property_register_managed_property a method on the type
19908 and update comments to new syntax.
19909 * type-generated.cpp: Updated by new generator, which did actually
19910 catch a few errors.
19912 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
19914 * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
19917 2008-08-06 Geoff Norton <gnorton@novell.com>
19919 * dependencyproperty.cpp: When registering a clashing DP
19920 return the original so that the code can act on it as it
19921 expects. Fixes about 18 DRT regressions.
19923 2008-08-06 Chris Toshok <toshok@ximian.com>
19925 * uielement.h, uielement.cpp: add GetTransformToUIElement, the
19926 unmanaged equivalent to the managed UIElement.TransformToVisual.
19928 Also change the signature of HitTest to take a Point, not two
19929 doubles. Add a HitTest overload that takes a Rect in
19930 preparation for 2.0.
19932 * panel.h, panel.cpp: track HitTest signature change.
19934 * control.h, control.cpp: track HitTest signature change.
19936 2008-08-06 Chris Toshok <toshok@ximian.com>
19938 * transform.h, transform.cpp: add a convenience ctor for Matrix
19939 that takes a cairo_matrix_t*.
19941 2008-08-06 Chris Toshok <toshok@ximian.com>
19943 * type-generated.cpp (type_infos): fix ctors for UIElement and
19944 UIElementCollection.
19946 2008-08-06 Chris Toshok <toshok@ximian.com>
19948 * frameworkelement.h, frameworkelement.cpp: add
19949 DataContextProperty.
19951 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
19953 * type.cpp: Fix for old glib in sled.
19955 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
19957 * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
19958 type-generated.cpp: Add custom properties to a GSList instead of
19959 the hash table given that several custom properties can be
19960 registered on the same type with the same name.
19962 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
19964 * src.mdp: Make src and plugin projects build.
19966 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
19968 * src.mdp: Updated.
19970 2008-08-05 Chris Toshok <toshok@ximian.com>
19972 * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
19973 superclass of Transform, and move all the current Transform stuff
19976 * type.h, type-generated.cpp, value.h: resync
19978 2008-08-05 Chris Toshok <toshok@ximian.com>
19980 * uielement.h, uielement.cpp, frameworkelement.h,
19981 frameworkelement.cpp: move the UIElement DPs back - the move to
19982 FrameworkElement breaks tests.
19984 * collection.cpp (TriggerCollection::AddedToCollection): quiet
19986 (TriggerCollection::RemovedFromCollection): same.
19988 2008-08-05 Chris Toshok <toshok@ximian.com>
19990 * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
19991 DependencyProperties. we need a way to limit access to these to
19994 * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
19995 TagProperty, TriggersProperty are moved to
19996 frameworkelement.h/.cpp.
19998 * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
19999 moved from UIElement to FrameworkElement.
20001 * size.h, size.cpp: add SizeChangedEventArgs.
20003 * thickness.h: move this type here
20005 * control.h: #include thickness.h
20007 * type.h, value.h, type-generated.cpp: regenerate for
20008 SIZECHANGEDEVENTARGS.
20010 2008-08-05 Chris Toshok <toshok@ximian.com>
20012 * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
20014 * enums.h: add comment about keeping MouseCursors enum in sync
20017 * enums.cpp: make all the mappings use symbols instead of integer
20018 constants. Also, rename enums.c to enums.cpp so it can include
20019 the .h files for enums not in enums.h.
20021 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20023 * src.mdp: Remove visual.cpp|h from here too.
20025 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20027 * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
20028 type-generated.cpp, uielement.cpp, uielement.h, value.h,
20029 visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
20030 libmoon.h: Deleted Visual (moved content into UIElement), and
20031 renamed VisualCollection to UIElementCollection.
20033 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20035 * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
20036 GetValueWithError: Add a parameter to specify the exact type
20037 (including managed subclassing) of the object. HasProperty: use
20038 that parameter to determine if the type has the specified property
20040 * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
20041 a is_custom field to determine if the property is our own or not.
20043 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20045 * cbinding.cpp, cbinding.h: Updated.
20046 * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
20047 dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
20048 type.h.in, type-generated.cpp: Create a Types class which may
20049 contain additional types. Change the DP/DO/Type overloads
20050 containing a Surface to take a Types argument instead.
20052 2008-08-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
20054 * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
20056 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20060 * clock.h: Adding method to store a manual target (instead of a named target)
20061 for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
20063 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20066 * animation.h: A little bit of C API for KeySpline.
20068 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20070 * runtime.cpp: _get_surface can only be called from the main thread.
20072 2008-08-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
20074 * src.mdp, cbinding.h, cbinding.cpp: Updated.
20075 * Makefile.am: Include error.cpp.
20076 * error.h, error.cpp: Added MoonError.
20077 * dependencyproperty.h: Make RegisterFull 2.0 only.
20078 * dependencyobject.h, dependencyobject.cpp: Added and implemented
20079 Get[[No]Default]ValueWithError and a HasProperty method which takes
20080 into account properties registered on a surface.
20082 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20084 * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
20085 * media.cpp: Use property accessors instead of GetValue.
20087 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20089 * cbinding.cpp, cbinding.h: Update.
20090 * dependencyproperty.cpp: RegisterFull: Only wrap method code in
20091 SL_2_0, fixed 1.0 build.
20093 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20095 * dependencyproperty.h: Make GetName return a const char*, and rename
20096 parameters from readonly to read_only (to not conflict with C#
20099 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20101 * src.mdp: Updated.
20102 * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
20103 DependencyProperty's C methods.
20104 * cbinding.cpp, cbinding.h: Added.
20105 * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
20106 moon/generators, and add methodgen to generate pinvokes, and cgen
20107 to generate c bindings.
20109 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20111 * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
20112 Implement property changed callbacks.
20114 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20116 * contentcontrol.h, control.h: Fix includes.
20118 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20120 * pipeline-ffmpeg.cpp: Fix warning.
20122 2008-08-01 Jeffrey Stedfast <fejj@novell.com>
20124 * dependencyobject.cpp (EventObject::Dispose): Call
20126 (EventObject::unref): Don't call SetSurface() here anymore.
20128 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20130 * runtime.cpp|h: Adding few utility functions to modify the flags
20131 at runtime -- provided that there are no surfaces currently
20132 present. Would be nice to be able to somehow do it before calling
20135 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20137 * runtime.cpp|h: Adding an expose handoff custom
20138 function that can be set on surface. It's called just after
20139 render_cb when something has been updated on the screen.
20141 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20143 * runtime.cpp|h: Adding a global surface list and an
20144 ability to access it. I have a bad feeling we need some locking
20145 in the _get_surface_list function.
20147 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20149 * src.mdp: Updated.
20151 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20153 This is the proper fix for bug #412443
20155 * visual.cpp (VisualCollection::Dispose): Implement Dispose()
20157 (VisualCollection::RemovedFromCollection): Now that we know we are
20158 disposing, we can unset VisualParent here instead of in our
20159 dtor/Dispose() method, saving us from having to interate over our
20162 * collection.cpp (Collection::Dispose): Implement a Dispose()
20163 method which does what the dtor used to do.
20165 * dependencyobject.cpp (EventObject::unref): Call Dispose() just
20166 before deleting the object.
20168 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20170 * dependencyobject.cpp (struct Listener): Comment out the listener
20171 reffing from previous commit. I don't think this is correct.
20173 * visual.cpp (VisualCollection): Set z_sorted to NULL after
20174 freeing it so that parent class dtor calling
20175 RemovedFromCollection() will not poke at free'd memory.
20177 2008-07-31 Geoff Norton <gnorton@novell.com>
20179 * Makefile.am: Undo part of the recent Makefile changes as they broke
20182 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20186 * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
20188 (DependencyObject::RemovePropertyChangeListener): Unref the listener.
20190 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20192 * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
20193 this needs to chain up to
20194 DependencyObjectCollection::RemovedFromCollection() rather than
20195 AddedToCollection(). Duh.
20197 2008-07-30 Jeffrey Stedfast <fejj@novell.com>
20199 * contentcontrol.cpp|h: Added.
20201 * enums.h: Moved some font/text enums here from font.h
20203 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20205 * dependencyproperty.cpp: Fix build.
20207 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20209 * runtime.cpp: Fix 1.0 build.
20211 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20213 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
20214 type.cpp, type.h, type.h.in, typegen/typegen.cs,
20215 type-generated.cpp: Store DependencyProperties in the Type* instead
20216 of a hashtable keyed on the kind.
20218 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20220 * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
20221 given that since we might not have access to the surface where the
20222 type was registered, it's not possible to do any type checking
20223 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
20224 Implement registration of managed properties on a surface.
20225 * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
20226 types registered on a surface, added a Type::MANAGED enum value.
20227 * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
20230 2008-07-29 Jeffrey Stedfast <fejj@novell.com>
20232 * text.cpp (inline_new): Added.
20234 2008-07-29 Jackson Harper <jackson@ximian.com>
20236 * xaml.cpp: Add a set_parent call, I need to do some fanagling
20237 there so collection items don't have their parents set.
20238 - Managed items that are being hydrated or created using x:Class
20239 need to get content properties from the managed world.
20241 2008-07-28 Chris Toshok <toshok@ximian.com>
20243 * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
20244 type-generated.cpp: Add Size foo.
20246 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
20248 * value.cpp (Value::FreeValue): Oops, free Thickness.
20250 2008-07-28 Chris Toshok <toshok@ximian.com>
20252 * control.h (struct Thickness): reorder fields to match managed
20255 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
20257 * typegen/typegen.cs: Added Thickness.
20259 * value.h.in, type.h.in: Added Thickness.
20261 * value.cpp: Implemented Thickness value ctor/etc.
20263 * enums.h: Added more 2.0-specific enums.
20265 * control.cpp|h: Implemented property accessors/bindings and
20268 2008-07-28 Michael Dominic K. <mdk@mdk.am>
20270 * animation.cpp: When starting an SB that has been started already make sure to
20271 remove the Completed handler before the teardown. Fixes #405518.
20273 2008-07-28 Chris Toshok <toshok@ximian.com>
20275 * collection.cpp (collection_iterator_next): move the check for
20276 index-in-range to after the increment of it. that way managed
20277 code doesn't step off the end of the list.
20279 2008-07-26 Chris Toshok <toshok@ximian.com>
20281 * eventargs.h, eventargs.cpp: some 2.0 event stuff. Make the
20282 MouseEventArgs and KeyboardEventArgs classes subclasses of a new
20283 class - RoutedEventArgs. Also, add a "Handled" field to both
20284 MouseEventArgs and KeyboardEventArgs. Lastly add a "Keyboard"
20285 class to map to the 2.0 static Keyboard class. it exposes nothing
20286 but a Modifiers property, which isn't updated at present, but will
20287 be by the Surface code (in the key event handler).
20289 * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
20292 2008-07-26 Chris Toshok <toshok@ximian.com>
20294 * enums.h (enum ModifierKey): 2.0 specific enum for use by the
20297 2008-07-26 Jackson Harper <jackson@ximian.com>
20299 * xaml.cpp: If there isn't a managed content property, try looking
20300 for an unmanaged one.
20302 2008-07-26 Jackson Harper <jackson@ximian.com>
20304 * xaml.h|cpp: Create elements for imported managed namespaces.
20306 2008-07-25 Chris Toshok <toshok@ximian.com>
20308 * runtime.h, runtime.cpp: reformat the class decl to put public:
20309 stuff first. add "bool silverlight2" to the surface ctor so we
20310 can start to use it for behavioral differences (routed event
20311 handlers, key events, focus, etc).
20313 2008-07-25 Jeffrey Stedfast <fejj@novell.com>
20315 * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
20316 multiple StrokeCollections at a time but they cannot be added to
20317 the same collection multiple times. Do not default to
20318 DependencyObjectCollection::CanAdd()'s behavior because it checks
20319 that the logical parent is unset (which will not be accurate for
20321 (StylusPointCollection): Same as StrokeCollection.
20323 * xaml.cpp (dependency_object_add_child): Set the logical parent
20324 of items to NULL before adding them to a collection.
20326 * collection.h (class Collection): Removed 'unique' field, it's
20327 not necessary afterall.
20328 (Collection::CanAdd): New virtual method to check if the value can
20329 be added to the collection (by default always returns true).
20330 (DependencyObjectCollection::CanAdd): Override CanAdd() by
20331 checking if the object being added has a logical parent. If it
20332 already has a parent, it cannot be added (this is how Silverlight
20335 * collection.cpp (Collection::Add): There's no such thing as
20336 'unique' anymore. Don't check if the value is already contained
20337 within our collection like the old code used to do, instead call
20338 our new virtual method CanAdd() to see if we can add it.
20339 (Collection::Insert): Check CanAdd().
20340 (Collection::SetValueAt): Check CanAdd().
20342 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20344 * collection.cpp (collection_add): Fixed.
20346 * collection.h: Get rid of convenience wrappers that aren't even
20347 used. Also removes the need for previous commit.
20349 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20351 * collection.h (class DependencyObjectCollection): Add virtual
20352 Add(), Clear() and Insert(). This makes it possible for subclasses
20353 to chain up if they need to override any of these.
20354 (class DoubleCollection): Same.
20355 (class PointCollection): Here too.
20357 * visual.cpp (VisualCollection::Clear): Chain up to
20358 DependencyObjectCollection::Clear() rather than
20359 Collection::Clear().
20360 (VisualCollection::Insert): Don't bother resizing the z_sorted
20361 array here, it will be done inside ResortByZIndex() anyway.
20362 (VisualCollection::Insert): Chain up to
20363 DependencyObjectCollection::Insert() rather than
20364 Collection::Insert()
20366 2008-07-24 Geoff Norton <gnorton@novell.com>
20368 * downloader.cpp: When a downloader is reused reset the completed
20369 state when we get the new Open call.
20371 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20373 * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
20375 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20376 Unregister the NameScope the same way the old Collection::Remove()
20377 way did it. This way seems the most correct (RemoveAt() was
20378 totally broken and SetVal() doesn't seem right afterall).
20380 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20382 * collection.cpp: Added c-wrappers for creating new
20383 collections. Also changed the c-bindings for
20384 setting/adding/inserting/etc items to the collection to take
20385 Value* instead of Value. Should make it simpler for the managed
20388 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20390 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
20391 Unregister the NameScope the same way it was done in the more
20392 common case in the old code (why were there different ways?).
20394 * text.cpp (TextBlock::OnCollectionChanged): Chain up.
20395 (TextBlock::OnCollectionItemChanged): Same.
20397 * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
20398 (GradientBrush::OnCollectionItemChanged): Chain up and notify
20401 * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
20402 (GeometryGroup::OnCollectionItemChanged): Chain up and notify
20404 (PathGeometry::OnCollectionChanged): Chain up.
20405 (PathGeometry::OnCollectionItemChanged): Chain up and notify
20407 (PathFigure::OnCollectionChanged): Chain up.
20408 (PathFigure::OnCollectionItemChanged): Chain up and notify
20411 * shape.cpp (Polygon::OnCollectionChanged): Chain up.
20412 (Polygon::OnCollectionItemChanged): Same.
20413 (Polyline::OnCollectionChanged): Same.
20414 (Polyline::OnCollectionItemChanged): Same.
20416 * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
20417 call NotifyListersOfPropertyChange().
20419 * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
20420 call NotifyListersOfPropertyChange().
20422 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20424 * collection.cp|h: Reworked Collections a lot. Collection is now a
20425 generic collection of Values. Added 3 new collections:
20426 DependencyObjectCollection (which holds DO's like the old
20427 Collection class did), DoubleCollection and PointCollection.
20429 * dependencyobject.h (DependencyObject::OnCollectionChanged):
20430 Changed the way this works to reflect the managed API.
20432 *.cpp|h: Updated to reflect above changes.
20434 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
20436 * utils.cpp (g_ptr_array_insert): New utility function.
20437 (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
20438 find the index where we want to add the item.
20440 2008-07-23 Chris Toshok <toshok@ximian.com>
20442 * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
20443 transform.cpp, grid.cpp, animation.cpp, text.cpp,
20444 dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
20445 geometry.cpp, shape.cpp, dependencyobject.cpp,
20446 frameworkelement.cpp, media.cpp, brush.cpp: a couple of
20447 DependencyPropertyChanges:
20449 1. switch to the Silverlight/WPF naming of the two Types.
20450 type/value_type change to owner_type/property_type.
20452 2. go all gtk-3.0, and make things private with accessors.
20454 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
20456 * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
20457 dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
20458 dependencyproperty.h, deployment.cpp, downloader.cpp,
20459 frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
20460 namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
20461 text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20462 usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
20463 GetDependencyObject from DependencyObject to DependencyProperty.
20465 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
20467 * dependencyobject.h, dependencyproperty.h, Makefile.am,
20468 dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
20469 DependencyProperty to its own file before it grows bigger.
20471 2008-07-21 Jackson Harper <jackson@ximian.com>
20473 * xaml.cpp: Add back in the ability to create elements from
20474 managed elements using the x:Class syntax.
20476 2008-07-21 Jackson Harper <jackson@ximian.com>
20479 * type-generated.cpp: The UserControl's Content Property name is
20480 Content not ContentProperty.
20482 2008-07-21 Jeffrey Stedfast <fejj@novell.com>
20484 * collection.cpp (collection_add): Fixed to return int.
20486 2008-07-21 Jackson Harper <jackson@ximian.com>
20488 * xaml.cpp: Add support for parsing GridLength attribute values.
20490 2008-07-19 Geoff Norton <gnorton@novell.com>
20492 * mms-downloader.(cpp|h): Ensure that we always stream-select a marker
20493 stream when there is one available. Fixes drt #2.
20494 Refactor some code duplication into a utility method.
20496 2008-07-19 Jackson Harper <jackson@ximian.com>
20498 * xaml.cpp: We can't blindly assume an object has a content
20501 2008-07-19 Jackson Harper <jackson@ximian.com>
20503 * type-generated.cpp: UserControl has a content property.
20504 * value.h|.h.in|.cpp: Add GridLength to Value.
20506 2008-07-18 Geoff Norton <gnorton@novell.com>
20508 * media.cpp: Revert InitialBuffer work around as it has some unexpected
20511 2008-07-18 Geoff Norton <gnorton@novell.com>
20513 * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
20514 get a new burst from the mms server with AccelBW.
20516 2008-07-18 Geoff Norton <gnorton@novell.com>
20518 * media.cpp: If we're using a mms source we can attempt to start playing the
20519 first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
20520 Fixes c9 stream start lag.
20522 2008-07-18 Geoff Norton <gnorton@novell.com>
20524 * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
20525 our initial buffer quickly.
20527 2008-07-18 Geoff Norton <gnorton@novell.com>
20529 * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
20530 * Makefile.am: Add mp3.(cpp|h) to the build.
20531 * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
20532 together, so we need to split them up and pass them to avcodec_decode_audio2
20533 one at a time. Its also possible that we could get a partial frame, so we need
20534 to buffer that data. Fixes mms+mp3.
20536 2008-07-18 Jeffrey Stedfast <fejj@novell.com>
20538 Fix for bug #410206
20540 * text.h (TextBlock::GetBoundingHeight): Return the larger of the
20542 (TextBlock::GetBoundingWidth): Same.
20544 2008-07-18 Chris Toshok <toshok@ximian.com>
20546 * Makefile.am (libmoon_include_HEADERS): add window.h and
20548 (libmoon_la_SOURCES): add window-gtk.cpp
20550 * window.h: abstract class for windows, that surface will use to
20551 deal with window/widget level operations.
20553 * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
20556 * runtime.h, runtime.cpp: factor out all the widget stuff from
20557 this file, along with all "width" and "height" fields. now
20558 Surface knows nothing about widgets or windowless. It speaks to
20559 MoonWindow implementations instead. Add several public methods
20560 that the window implementations can call (anything HandleUI*) to
20561 communicate events back to the surface.
20563 * canvas.cpp: surface->Get{Width,Height} ==>
20564 surface->GetWindow()->Get{Width,Height}.
20566 2008-07-18 Michael Dominic K. <mdk@mdk.am>
20569 * media.cpp: Reverting prev change, different solution: process the tick calls
20570 before processing the render.
20572 2008-07-18 Michael Dominic K. <mdk@mdk.am>
20574 * media.cpp: If the downloader is already completed, don't do an extra async
20575 call when setting source. Fixes the downloader-set-source... testcase.
20577 2008-07-18 Michael Dominic K. <mdk@mdk.am>
20579 * media.cpp: Fixing a crasher in case bad parameters passed from js.
20581 2008-07-18 Jackson Harper <jackson@ximian.com>
20583 * xaml.h: New delegates and functions for the loader. We need to
20584 call back into managed code when we import a xaml namespace so
20585 that it knows which objects are available and we need a new
20586 function for creating those objects.
20588 2008-07-18 Jackson Harper <jackson@ximian.com>
20590 * usercontrol.cpp|h: Add C functions for accessing the Content
20593 2008-07-17 Jackson Harper <jackson@ximian.com>
20597 * type-generated.cpp:
20598 * deployment.cpp|h: Add an Application type. This doesnt directly
20599 map to the managed Application because it inherits from
20600 DependencyObject, but it allows us to parse Application XAML files
20601 and then we can pull the values we need.
20603 2008-07-17 Jackson Harper <jackson@ximian.com>
20605 * libmoon.h: Add usercontrol.h, I want access to this in the
20608 2008-07-17 Jackson Harper <jackson@ximian.com>
20610 * xaml.cpp: Had a backwards IsSubclassOf here causing
20611 UserControl's content property to not get set (and I imagine many
20612 other content properties).
20613 * usercontrol.h: Add the ContentProperty metadata.
20615 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
20617 * downloader.h|cpp: provide hooks for DownloadeRequest
20619 2008-07-17 Jeffrey Stedfast <fejj@novell.com>
20621 * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
20623 * runtime.cpp (surface_create_downloader): We need to actually
20624 return the downloader here or our caller will just get garbage ;-)
20626 2008-07-17 Michael Dominic K. <mdk@mdk.am>
20628 * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
20630 * runtime.h: On desktop and browser by default use idle hinting.
20632 2008-07-17 Michael Dominic K. <mdk@mdk.am>
20634 * runtime.cpp: Adding "idlehint" to moonlight overrides that will
20635 control the use of idle hint in the clocks.
20637 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
20639 * runtime.h|cpp: add surface_get_downloader
20641 2008-07-16 Larry Ewing <lewing@novell.com>
20643 * runtime.cpp: try to get the resize logic correct for all cases,
20644 including popfly, ControlState.htm and fullscreen tests.
20646 Fixes the (non)rendering issues in the popfly game creator.
20648 2008-07-16 Geoff Norton <gnorton@novell.com>
20650 * mplayer.cpp: Its possible that extremely small audio files will
20651 never fill the sound buffer enough causing us to never call snd_pcm_open.
20652 Ensure that we open the buffer to play the sound before shutting down
20655 2008-07-16 Geoff Norton <gnorton@novell.com>
20657 * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
20659 2008-07-16 Sebastien Pouliot <sebastien@ximian.com>
20661 * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be
20662 greater than Width. Fix MS DRT#184 and #208. ALso makes #206
20663 looks better (but it already passed)
20665 2008-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
20667 * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
20668 class doesn't do anything live/mms anymore. LiveSource: removed
20669 completely, never used. Added MemoryNestedSource to wrap another
20670 MemorySource without messing with its current position pointer.
20671 MemoryQueueSource: store already parsed packets instead of
20672 MemorySources in the queue, saves a memory allocation and prevents
20673 parsing each packet twice when buffering (once for the code which
20674 determines the last available pts, and again for the normal
20675 demuxing code path).
20676 * mms-downloader.cpp: Updated to not delete asf parser, unref it
20678 * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
20679 wait a bit longer before ending up waiting for more data (which
20680 causes the MediaElement to go into buffering mode).
20681 * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
20684 2008-07-15 Larry Ewing <lewing@novell.com>
20686 * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
20687 fix a regression in the fullscreen message code.
20689 2008-07-15 Jb Evain <jbevain@novell.com>
20691 * deployment.cpp|h: start updating Deployment to sl2b2.
20693 2008-07-15 Jb Evain <jbevain@novell.com>
20695 * deployment.h: remove SupportedCulture and SupportedCultureCollection
20696 as they no longer exist.
20697 * value.h, type.h, type-generated.cpp: regenerate.
20699 2008-07-15 Jb Evain <jbevain@novell.com>
20701 * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
20703 2008-07-15 Jb Evain <jbevain@novell.com>
20705 * list.cpp: set pointers to NULL instead of 0.
20707 2008-07-14 Geoff Norton <gnorton@novell.com>
20709 * mplayer.cpp: If we've already reached the EOF in the audio stream
20710 don't keep processing GetNextBuffer. This was causing us to emit
20711 MediaEnded more than once, causing failures in the test suite.
20713 2008-07-14 Geoff Norton <gnorton@novell.com>
20715 * downloader.cpp: Change completed to check a bool instead of
20716 filename, as filename can now be set before the downloader is in fact
20719 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20721 * media.cpp: Initialize Media with our downloader.
20722 * pipeline.cpp: Media::Open: Check if the source has ended while
20723 waiting for an asfparser. Remove print_stack_traces.
20725 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20727 * internal-downloader.h: Add InternalDownloader::GetType to allow the
20728 derived internal downloader to tell what kind of internal
20730 * file-downloader.h: Implement InternalDownloader::GetType.
20731 * downloader.h: Make the internal downloader publicly accessible. Add a
20732 Downloader::IsAborted method.
20733 * mms-downloader.h, mms-downloader.cpp: Implement
20734 InternalDownloader::GetType. Store the ASFParser we create in the
20735 class instance, so that the pipeline can get it. No need to write
20736 the header packet to the stream anymore.
20737 * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
20738 calculation of buffering progress to take into account that the
20739 currently available pts might be before the last played pts.
20740 * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
20742 * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
20743 argument and access the internal mms downloader on that Downloader
20744 to get the asf parser. Remove Read/Seek support from
20745 MemoryQueueSource, and just add a Pop method which returns a
20746 MemorySource for the next packet in the queue. Also add support to
20747 return all the packets in the queue as an array so that the
20748 ASFParser can easily determine the last pts available.
20749 * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
20750 g_mutex. Also make TickCall take a ref to the data parameter until
20751 the tick call has been made. This also ensures that the data
20752 parameter gets unreffed correctly when the tick call is never made
20753 (such as when we skip calls due to the TimeManager getting shut
20755 * dependencyobject.cpp: Don't ref in AddTickCall anymore.
20757 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20759 * playlist.cpp: Fix warning.
20761 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
20763 * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead
20764 of horiAdvance since the later is rounded to an integer. FixMS
20765 DRT#45 and get better results (less differences) on many font
20768 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20770 * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
20772 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
20774 * font.cpp: (font_conic_to) Directly use moon_quad_curve_to
20775 instead of doing it's own second to third order calculation.
20777 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20779 * mplayer.cpp: Don't store target pts from audio thread if we're paused
20780 (audio thread might not have gotten the pause request yet).
20782 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
20784 * pipeline.cpp: Don't Signal more than once. I have no idea why the
20785 waiting thread doesn't wake up though.
20786 * mplayer.cpp: Comment out a printf, and always break the play loop
20787 when we're doing rw access.
20789 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
20791 * geometry.cpp|h: Remove useless code for computing bounds on
20792 PathFigure (now all handled at PathGeometry level).
20794 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
20796 * mplayer.cpp: Fix a couple of leaks.
20798 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
20800 * pipeline.cpp: There's no need to call AudioPlayer::Initialize
20802 * runtime.cpp, runtime.h: Added
20803 RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
20804 * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
20805 addition to the already supported MMAP access mode for alsa. This
20806 also required a major refactoring to only call alsa on the audio
20807 thread due to buggy pulseaudio hanging us (and the rest of the
20808 machine) otherwise.
20810 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
20812 * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
20813 inside each type (and out of the general case).
20815 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
20817 * dependencyobject.cpp: Fix leak.
20819 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
20821 * debug.cpp: Make valgrind happy.
20823 2008-07-09 Geoff Norton <gnorton@novell.com>
20825 * media.cpp: Ensure that we clear our old loader when we set
20828 2008-07-09 Fernando Herrera <fherrera@novell.com>
20830 * pipeline.cpp: Always set MemoryQueueSource element's size
20831 based to offset+n even for live sources.
20833 2008-07-09 Jeffrey Stedfast <fejj@novell.com>
20835 Fixes for bug #406934
20837 * text.cpp (Glyphs::SetSurface): Override so that we can start
20838 downloading the font as soon as the element gets (re)attached.
20839 (Glyphs::OnPropertyChanged): If we aren't attached, set
20840 uri_changed to true so that when we are (re)attached, we can start
20843 * media.cpp (MediaBase::MediaBase): Init new state variable
20844 'source_changed' to false.
20845 (MediaBase::SetSurface): If source_changed and we are being
20846 attached to a surface, initiate a download.
20847 (MediaBase::SetSource): Set source_changed to false.
20848 (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
20850 (MediaElement::OnPropertyChanged): Don't handle SourceProperty
20851 changes anymore, let MediaBase do that for us.
20852 (Image::OnPropertyChanged): Same.
20854 2008-07-09 Geoff Norton <gnorton@novell.com>
20856 * mms-downloader.cpp: Remove the guard we had against copying
20857 random memory and provide the correct amount of data to the
20858 pipeline from each packet.
20860 2008-07-09 Geoff Norton <gnorton@novell.com>
20862 * downloader.(cpp|h): NotifyFinished is now the finished
20863 event. The filename will be set (if available) in SetFilename.
20864 * media.(cpp|h): Change to progressivly loading the image
20865 where available (fixes popfly). We still fallback to file loading
20866 for the JS downloader case for now.
20868 2008-07-09 Larry Ewing <lewing@novell.com>
20870 * runtime.cpp (Surface::motion_notify_callback): don't call
20871 get_pointer when in windowless mode, I don't think we can trust
20874 * runtime.h (class Surface): make widget public so that we can
20875 peek at it in windowless mode.
20877 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
20879 * xaml.cpp: Always do a move after closing a path. Fix DRT test
20880 #138 (even if it was passing too!) for a bad (extra) arc.
20882 2008-07-08 Larry Ewing <lewing@novell.com>
20884 * runtime.cpp, runtime.h: remove a bunch of code rot relating to
20885 temporary cairo surfaces that is no longer used.
20887 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
20889 * shape.cpp: Consider PenLineCap when computing bounds using
20890 cairo. Fix (even if it was passing) some corners in DRT test #7
20892 2008-07-08 Jeffrey Stedfast <fejj@novell.com>
20894 * xaml.h: Reorganized a bit.
20896 2008-07-07 Chris Toshok <toshok@ximian.com>
20898 * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
20899 list if they lack a visual parent (and aren't the toplevel.)
20902 2008-07-07 Larry Ewing <lewing@novell.com>
20904 * shape.cpp (Rectangle::BuildPath): handle some special case
20905 degenerates slightly differently.
20907 Fixes most of test-shape-rectangle-matrix.xaml.
20909 2008-07-07 Larry Ewing <lewing@novell.com>
20911 * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
20912 degenerates in drawing, use the workaround there too.
20914 Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
20916 2008-07-03 Larry Ewing <lewing@novell.com>
20918 * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
20919 rectangle geometry computation. It matches in the sl
20920 implementation now.
20922 * shape.cpp: simplify rectangle and ellipse drawing and bounds so
20923 that they match the sl implementation and deal with degenerate
20924 cases better. Try to avoid setting up a clip rectangle when it
20927 2008-07-07 Chris Toshok <toshok@ximian.com>
20929 [ fixes the media element not showing up in flowers-for-you, bug
20931 * media.h, media.cpp: move Image::use_img_{width,height} and
20932 Image::updating into MediaBase and rename then
20933 use_media_{width,height} and updating_size_from_media.
20934 (MediaElement::OnPropertyChanged) duplicate the
20935 WidthProperty/HeightProperty stuff here (c&p from
20936 Image::OnPropertyChanged - this should probably just be refactored
20937 to MediaBase. will do this later).
20938 (MediaBase::ComputeBounds): we don't need the subclass
20939 ComputeBounds methods. Just put it here, as they share the same
20941 (MediaElement::SetMedia): remove the call to ComputeBounds here,
20942 since the new block of use_media_{width,height} checks will call
20943 UpdateBounds if they need to.
20945 2008-07-07 Fernando Herrera <fherrera@novell.com>
20949 * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
20950 we don't wait for new packets when the downloader has finished.
20951 Also calculate size based on offset + n for mms streams, so the
20952 ASFReader can check Eof based on positions.
20954 2008-07-05 Chris Toshok <toshok@ximian.com>
20956 * dirty.cpp: remove the down_dirty_node_succ and
20957 up_dirty_node_pred code from here. it arguably helped speed up
20958 insertions into the dirty lists, but at the cost of lots of
20959 dangling pointers. we always walk up the tree looking for a
20960 down/up node. works, and is much simpler. and fixes bug #362561.
20962 * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
20963 up_dirty_node_pred code.
20965 2008-07-04 Sebastien Pouliot <sebastien@ximian.com>
20967 * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
20968 when the atchname is invalid.
20970 2008-07-04 Chris Toshok <toshok@ximian.com>
20972 * runtime.cpp (Surface::EmitEventOnList): don't leak the event
20975 2008-07-03 Chris Toshok <toshok@ximian.com>
20977 * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
20978 values need to be initialized in the ctors, not in animation_init.
20980 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
20982 * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
20983 since they are needed for stretching.
20985 2008-07-03 Jeffrey Stedfast <fejj@novell.com>
20987 * text.cpp (TextBlock::Render): Check to see if we need to
20988 calculate layout before painting.
20990 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
20992 * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
20993 Also remove the closing point since it's not needed (but that was
20994 not the problem, just a small memory saving).
20995 [Re-fix bug #391684]
20997 2008-07-02 Jeffrey Stedfast <fejj@novell.com>
20999 * text.h (TextBlock::GetBoundingWidth/Height): Use
21000 GetValueNoDefault() so we don't get 0.0 for the width/height if
21003 Fixes for bug #404858
21005 * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
21007 * layout.cpp: Don't keep track of bbox_width and height anymore,
21008 it was never actually set to anything other than
21009 actual_width/height anyway.
21011 * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
21012 bounding box around the text (this is to aid in debugging text
21013 which may have a transform applied to it).
21015 * text.h (class TextBlock): Removed bbox_width and
21016 bbox_height. These were never anything other than
21017 actual_width/height respectively anyway.
21018 (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
21019 if set, else the ActualWidth.
21020 (TextBlock::GetBoundingHeight): Same.
21022 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
21024 * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
21025 since their callers already do this. Simplify a bit Shape::
21026 InsideObject to check ret only if a Clip is present (instead of
21027 always checking it).
21029 2008-07-02 Chris Toshok <toshok@ximian.com>
21031 * runtime.h, runtime.cpp: get rid of the cursor_func,
21032 invalidate_func, render_func stuff. Instead use 3 virtual
21033 methods: SetCursor(GdkCursor*), Invalidate(Rect), and
21034 ProcessUpdates(). That way the plugin can instantiate a
21035 WindowlessSurface which overrides those methods instead of having
21036 the stupid callback mechanism we had.
21038 2008-07-02 Chris Toshok <toshok@ximian.com>
21040 * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
21041 override the behavior.
21043 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
21045 * moon-path.c: Revert ordering change I made in r105586 to fix
21046 a clipping issue (fillrule bug) as this breaks stroke dash (which
21047 confirm the original behaviour was the correct one).
21048 [Fix most of #404858]
21050 2008-07-01 Jeffrey Stedfast <fejj@novell.com>
21052 Fixes for bug #405514.
21054 * text.cpp (TextBlock::Layout): If the Text property is empty,
21055 default the actualHeight to the font's height.
21056 (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
21057 property changes, we need to set dirty to true (in most cases) so
21058 that the actual width/height values are recalculated.
21060 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
21062 * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect
21063 this change Polyline and Polygon to use Cairo instead of (faster
21064 but less acurate) custom code. In reality PathGeometry (PML) is
21065 much more used than those Poly[line|gon] and (upcoming) caching
21066 negate much of the impact.
21067 * geometry.cpp: Use the more precise (and surviving)
21068 calc_line_bounds function that accept PenLineCap.
21070 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21072 * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
21073 chanegs between null and an actual brush (in either direction),
21074 invalidate the cached path because the shape may need to
21075 recalculate the stroke offsets.
21077 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
21079 * xaml.cpp: Move reading the first point of C|Q beziers into the
21080 loop. Fix quite a few misrendering for http://xmldocs.net/ball
21081 [Partial fix for #404858]
21083 2008-06-30 Chris Toshok <toshok@ximian.com>
21085 * dirty.cpp: add all the ordering smarts to keep the two dirty
21086 lists partially sorted. hopefully this won't be a huge
21089 * uielement.h, uielement.cpp: add 2 new dirty pointers. a "succ"
21090 pointer for the down dirty list, and a "pred" for the up dirty
21093 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21095 * list.cpp (List::InsertBefore): Handle a NULL @before.
21097 2008-06-30 Geoff Norton <gnorton@novell.com>
21099 * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
21100 more sane while we determine how to fix this properly.
21102 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21104 * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
21106 (Ellipse::ComputeShapeBounds): Same.
21108 2008-06-30 Michael Dominic K. <mdk@mdk.am>
21110 * animation.cpp: Make sure our default KeySplines parameters are correct
21111 to generate a linear dynamics curve as Silverlight. Fixes #404850.
21113 2008-06-30 Fernando Herrera <fherrera@novell.com>
21115 * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
21117 2008-06-30 Fernando Herrera <fherrera@novell.com>
21120 * pipeline.cpp: Implement the packet writer MemoryQueueSource.
21124 * media.cpp: Use MemoryQueueSource for all mms streams
21125 * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
21127 2008-06-29 Chris Toshok <toshok@ximian.com>
21129 * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
21130 child changes, invalidate them here.
21132 * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
21133 subtree invalidate from the zindex processing here.
21135 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21137 * pipeline-ffmpeg.cpp: Add debug spew.
21138 * media.cpp: Remove debug spew.
21140 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21142 * media.cpp, media.h: Add streamed markers to the media element on the
21145 2008-06-28 Geoff Norton <gnorton@novell.com>
21147 * downloader.h: The finished event raises a success condition now
21148 so that we can notify failure on unsuccessful downloads.
21150 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21152 * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
21153 has stored, now called by the MediaPlayer when seeking. Execute the
21154 'seeking complete' logic on the main thread (marshalling
21155 SeekCallback to the main thread). Always use the thread-safe
21156 AddTickCallSafe instead of AddTickCall, and override
21157 EventSurface::SetSurface to lock/unlock the required locks.
21158 * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
21159 has stored, now called by the MediaPlayer when seeking. Execute the
21160 'seeking complete' logic on the main thread (marshalling
21161 SeekCallback to the main thread), and set the previous_position on
21162 the MediaElement to the seeked-to position when the seek is
21163 finished. Always use the thread-safe AddTickCallSafe instead of
21164 AddTickCall, and override EventSurface::SetSurface to lock/unlock
21165 the required locks.
21166 * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
21167 thread-safe version (AddTickCallSafe) and don't do any locking in
21168 AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
21169 SetSurface can do the proper locking.
21170 * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
21171 comparing to/from pts, MediaPlayer will now set previous_position
21172 correctly when seeking. AdvanceFrame: only check markers if we
21173 advanced or if we're not seeking. SetSurface: add proper locking,
21174 and use AddTickCallSafe where appropiate.
21176 2008-06-27 Larry Ewing <lewing@novell.com>
21178 * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
21179 affects the subtree as well.
21181 2008-06-27 Larry Ewing <lewing@novell.com>
21183 * uielement.cpp (UIElement::OnPropertyChanged): on things that can
21184 potentially be trapped by the Invalidate visibility check we need
21185 to invalidate the whole subtree before we start processing the
21186 dirty lists to avoid ordering issues.
21188 Fixes test/xaml/assorted/rendering-glitches2.html.
21190 2008-06-27 Chris Toshok <toshok@ximian.com>
21192 * panel.cpp (Panel::FrontToBack): add a special case for
21193 non-translucent (but NULL background) panels - we don't render
21196 2008-06-27 Larry Ewing <lewing@novell.com>
21198 * panel.cpp (Panel::FrontToBack): treat opacity specially for
21199 panel since we need the right subtree render region in PreRender.
21201 2008-06-27 Jeffrey Stedfast <fejj@novell.com>
21203 * downloader.cpp (dummy_downloader_create_web_request): Return
21204 NULL to fix a compile warning about control reaching the end of a
21207 2008-06-27 Stephane Delcroix <sdelcroix@novell.com>
21209 * downloader.[h|cpp]: move browserrequest/response from the plugin
21210 as downloaderrequest/response.
21212 2008-06-26 Chris Toshok <toshok@ximian.com>
21214 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
21217 * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
21218 condition that was keeping small surfaces from being cached, so
21219 bubblemark gets a win from this (from ~38 to 70+ fps on my
21221 (Shape::ShiftPosition): if we have a cached surface, set the
21222 device offset to mirror the new bounds x/y.
21224 2008-06-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
21226 * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
21227 dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
21228 Change AddTickCall to take a TickCallHandler (EventObject*)
21229 function pointer and a EventObject * tick_data instead of untyped
21230 function pointer/tick_data.
21232 2008-06-26 Chris Toshok <toshok@ximian.com>
21234 * dependencyobject.h,
21235 dependencyobject.cpp (DependencyProperty::DependencyProperty):
21236 convert the name to downcase prior to registering and prior to
21237 calling g_hash_table_lookup to remove the casecmp overhead from
21238 our key comparisons. store the converted name in DP::hash_key.
21240 * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
21243 * type.cpp: strcase_equal -> g_strcasecmp.
21245 * playlist.cpp (PlaylistParser::OnStartElement): same.
21247 2008-06-26 Jeffrey Stedfast <fejj@novell.com>
21249 * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
21250 logic/compiler warning and at the same time simplified.
21252 * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
21253 thickness into consideration. Fixes bug #400657.
21254 (Ellipse::ComputeShapeBounds): Same.
21256 2008-06-26 Chris Toshok <toshok@ximian.com>
21258 * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
21259 re-sort the children by zindex.
21261 * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
21263 * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
21264 here. just add it to the dirty list.
21266 * transform.h, transform.cpp: move the OnSubPropertyChanged method
21267 to MatrixTransform, so we can notify our listeners with the right
21270 2008-06-26 Chris Toshok <toshok@ximian.com>
21272 * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
21273 need this to deal with sub-dependencyobjects of transforms (in
21274 this case, MatrixTransform's Matrix object.) when you set
21275 properties on these subobjects, we need to update the transform.
21277 2008-06-26 Chris Toshok <toshok@ximian.com>
21279 * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
21280 think it used to be there and was removed by me in a flurry of
21281 propertychanged event fixing way back) to take care of brushes
21282 properly causing the uielement to invalidate when the Brush's
21283 transform/relativetransform changes.
21285 2008-06-26 Sebastien Pouliot <sebastien@ximian.com>
21287 * geometry.h: #ifdef out GeometryFlags until we start using it.
21288 * shape.cpp: Remove unused global variable.
21290 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
21292 * mplayer.cpp: AudioFinished: Check if we still have audio when the
21293 callback is reached. Fixes test-double-stop.html.
21295 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
21297 * mplayer.cpp: When calculating start_time take into account current
21298 position. Fixes test-video-only-seek.html (and fox seeking without
21301 2008-06-25 Jeffrey Stedfast <fejj@novell.com>
21303 * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
21306 2008-06-25 Sebastien Pouliot <sebastien@ximian.com>
21308 * geometry.cpp: Cache bounds, both logical and "physical" for
21309 PathFigure. This reduce the number of time we need to call
21310 cairo_[path|stroke|fill]_extents functions and speed up many
21312 * geometry.h: Add stuff needed for geometry.cpp changes.
21313 * xaml.cpp: Change geometry_from_str to directly create a
21314 moon_path and avoid the PathFigure[Collection] DO. This match
21315 how Silverlight handle Path Markup Language (PML) and reduce
21316 memory requirements when huge PML are used.
21318 2008-06-24 Chris Toshok <toshok@ximian.com>
21320 * shape.cpp (calc_offsets): we don't want to divide by the sin,
21321 because as angle approaches either 0, PI, or PI/2, the sin will
21322 approach 0, and therefore the deltas will grow very, very large.
21323 Turns out multiplying is what we want.
21325 2008-06-24 Larry Ewing <lewing@novell.com>
21327 * runtime.cpp (Surface::Resize): set the width and height properly
21328 in the windowless case, let the widget resize logic handle it
21330 (Surface:render_cb): don't process dirty elements if we are in a
21331 zombie state, just clear the dirty lists and move on. Fixes a
21332 crash we were seeing when calling ForceRender on a zombie plugin.
21334 2008-06-24 Chris Toshok <toshok@ximian.com>
21336 * runtime.cpp: in the switch from function pointer to integer in
21337 the HandleMouseEvent stuff, I didn't catch that C++ apparently
21338 doesn't flag NULL as different from 0. This was causing the
21339 "HandleMouseEvent (NULL" to become effectively become
21340 "HandleMouseEvent (UIElement::DestroyedEvent" which of course
21341 breaks all sorts of things. In bug 401884 it was causing the
21342 namescope to drop the named item from its hashtable, causing the
21343 tattoo needle to not move vertically.
21345 2008-06-23 Chris Toshok <toshok@ximian.com>
21347 * uielement.cpp (UIElement::PreRender): comment from the code is
21350 we need this check because ::PreRender can (and will) be called
21351 for elements with empty regions.
21353 The region passed in here is the redraw region intersected with
21354 the render bounds of a given element. For Panels with no
21355 width/height specified in the xaml, this region will be
21356 empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
21357 calling node if either the panel background or any of the children
21358 intersect the redraw region.) We can't clip to the empty region,
21359 obviously, as it will keep all descendents from drawing to the
21362 2008-06-23 Chris Toshok <toshok@ximian.com>
21364 * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
21365 the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
21366 other, more specialized bounds that also need updating.
21368 * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
21369 to UIElement::ShiftPosition and also update bounds_with_children.
21371 * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
21372 chain up to Canvas::ShiftPosition, and also update render_bounds.
21374 2008-06-23 Chris Toshok <toshok@ximian.com>
21376 * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
21377 between UpdatePosition and UpdateTransform according to the
21378 updatepos=yes/no override.
21380 * runtime.h, runtime.cpp: add updatepos=yes/no override.
21382 2008-06-23 Michael Dominic K. <mdk@mdk.am>
21384 * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
21386 2008-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
21388 * media.cpp: Don't check markers if from > to, no markers will ever be
21389 found in that interval. Also detect forward seeks by checking the
21390 difference between from and to, if difference > 1s, behave as a
21391 seek (and don't emit markers in that interval).
21392 * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
21394 2008-06-20 Jeffrey Stedfast <fejj@novell.com>
21396 * animation.h: Added "Property Accessor" comments and grouped the
21397 property accessors, etc.
21399 * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
21401 (EventObject::AddTickCall): Same.
21403 * dependencyobject.h (EventObject::GetSurface): Don't amke this
21404 virtual, nothing overrides it currently.
21406 2008-06-20 Michael Dominic K. <mdk@mdk.am>
21411 * clock.h: When detaching/reattaching to Surface execute a special
21412 handler on clocks that (in case of animation clocks) removes the update
21413 property handler. This fixes the (regressed some time ago)
21414 StoryboardEnterLeave semantics test.
21416 2008-06-19 Jackson Harper <jackson@ximian.com>
21419 * type-generated.cpp: Make sure the content property is set.
21421 2008-06-19 Larry Ewing <lewing@novell.com>
21423 * uielement.cpp (UIElement::PreRender): work around what appears
21424 to be a bug in the ftb logic by not clipping to the render region.
21426 * clock.cpp (SystemTimeSource::Start): make the timer priority
21427 DEFAULT again since otherwise we can get into starvation
21430 * uielement.cpp (UIElement::PreRender): don't save/restore around
21431 the clip changes, they restrict the group bounds and speed up
21432 opacity related masking substantially. (See bubblemark).
21434 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
21436 * font.cpp (FontFace::GetExtents): Only set face pixel size if the
21437 requested size is not what we already have set.
21438 (FontFace::LoadGlyph): Same.
21439 (FontFace::Kerning): Need to set pixel sizes here or our kerning
21442 2008-06-19 Chris Toshok <toshok@ximian.com>
21444 * canvas.cpp (Canvas::OnSubPropertyChanged): call
21445 ui->UpdatePosition instead of UpdateTransform. Since
21446 UpdateTransform calls UpdateBounds, this should save us a
21447 sometimes costly (in the case of Shape's) trip through
21450 * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
21451 node) and ComputePosition (called from ProcessDownDirtyElements.)
21452 (UIElement::ComputePosition): Apply the inverse absolute transform
21453 to the bounds x/y, compute the new transform, then reapply it to
21454 the bounds x/y to compute our new position.
21455 (UIElement::UpdateTransform): clear the DirtyPosition flag.
21456 (UIElement::UpdatePosition): only add the DirtyPosition flag if
21457 the Dirty*Transform flags aren't already set.
21460 * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
21461 Clip, LocalClip, and Position (only Position is implemented).
21463 * dirty.h: clean up the enum some, and add 3 new passes (only one
21464 of which, DirtyPosition, is implemented).
21466 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
21468 * transform.cpp: Started adding property accessor methods.
21470 * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
21471 (Canvas::[G,S]etTop): Same.
21473 * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
21474 (UIElement::[G,S]etTop): Same.
21476 2008-06-19 Chris Toshok <toshok@ximian.com>
21478 * rect.h: add Get{Top,Bottom}{Left,Right} methods.
21480 * point.h, point.cpp: add Transform method.
21482 2008-06-19 Michael Dominic K. <mdk@mdk.am>
21484 * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
21485 keyframes specified the duration is 0, not Automatic. This fixes the
21486 http://www.etonline.com/silverlight/grammys50/ website.
21488 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
21490 * geometry.cpp: Use the new moon-path functions for ArcSegment
21491 and QuadraticBezierSegment
21492 * moon-path.c: Change some validation to use g_return_if_fail
21494 2008-06-18 Jeffrey Stedfast <fejj@novell.com>
21496 * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
21499 * control.cpp (Control::GetTransformFor): Simplified.
21501 * uielement.cpp (UIElement::SetLeft): Added for setting
21502 Canvas.Left property.
21503 (UIElement::GetLeft): Same.
21504 (UIElement::SetTop): Same.
21505 (UIElement::GetTop): Same.
21507 * canvas.cpp (Canvas::GetTransformFor): Simplified.
21509 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
21511 * shape.cpp: When possible (i.e. if we won't change the bounds
21512 anyway) avoid the second pass inside Shape::ComputeStretchBounds.
21513 This reduce (but does not eliminate) a BIG bottleneck for SL
21514 applications with many path using stretch (e.g. SL world).
21516 2008-06-18 Geoff Norton <gnorton@novell.com>
21518 * media.cpp: The state when Seeking should not be changed to Stopped.
21519 Fixes another test.
21521 2008-06-17 Jeffrey Stedfast <fejj@novell.com>
21523 Partial fix for bug #400657.
21525 * dependencyobject.cpp (DependencyObject::IsValueValid): If the
21526 value is a null dependency object, don't check that the types
21527 match - it doesn't matter.
21529 * color.cpp (color_to_string): New convenience utility function to
21530 aid in debugging. Returns a pointer to a static string buffer, so
21533 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
21535 * playlist.cpp, playlist.h: Only unref/null out the media in
21536 PlaylistEntry::Stop if we're a playlist and not if we're a single
21539 2008-06-17 Sebastien Pouliot <sebastien@ximian.com>
21541 * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
21542 can be reused without a PathFigure-derived instance. Refactor
21543 code to expand/realloc paths to reduce duplication.
21545 2008-06-16 Chris Toshok <toshok@ximian.com>
21547 * uielement.cpp (UIElement::OnPropertyChanged): call
21548 Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
21550 (UIElement::OnSubPropertyChanged): same.
21552 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
21554 * playlist.cpp: When Merging items only merge duration if the source
21556 * media.cpp: MediaElement::MediaOpened: when setting the media on the
21557 current item in the playlist, make sure we set the media on a
21558 PlaylistEntry, not on a (nested) Playlist.
21560 2008-06-16 Jeffrey Stedfast <fejj@novell.com>
21562 * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
21563 g_error() with g_warning(). There's really nothing else we can do
21565 (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
21566 allocating it again? Maybe some resources have been released since
21567 the ctor was called?
21569 * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
21570 g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
21572 * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
21573 g_warning() and return fail.
21575 2008-06-16 Michael Dominic K. <mdk@mdk.am>
21577 * clock.cpp: Don't do the ExtraRepeat action when seeking.
21579 2008-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
21581 * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
21583 * playlist.cpp: When we stop, clear out our media. This fixes an issue
21584 where we didn't correctly download a file if it was stopped after
21585 it was opened, but before fully downloaded, and then restarted.
21587 2008-06-13 Jeffrey Stedfast <fejj@novell.com>
21589 * dependencyobject.cpp (include): stdlib.h for strtol()
21591 Fix for jumping to the last page in PageTurn.
21593 * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
21594 UpdateTotalRenderVisibility() when the clip changes.
21596 2008-06-13 Michael Dominic K. <mdk@mdk.am>
21600 * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
21602 2008-06-13 Michael Dominic K. <mdk@mdk.am>
21608 * moon-curves.h: First version of the new algho for calculating the "y
21609 at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
21610 AnimationMatrix2 test.
21612 2008-06-12 Jackson Harper <jackson@ximian.com>
21614 * xaml.cpp: Remove some cruft.
21615 - Rename Custom to Managed
21616 - We don't need element maps for the namespaces anymore
21617 - Deploy can go into the default list of namespaces.
21619 2008-06-12 Fernando Herrera <fherrera@novell.com>
21621 * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
21622 terminated strings. Also keep any uri paramson the mms Ref.
21624 2008-06-12 Jackson Harper <jackson@ximian.com>
21626 * xaml.cpp: Use the new stuff for creating wrapped types.
21627 - make XamlElementInstance pure virtual.
21629 2008-06-12 Jackson Harper <jackson@ximian.com>
21631 * xaml.cpp: Clean up API for creating wrapped dependency objects.
21633 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21635 * type.cpp: Fix type verification to not check 2.0 types for 1.0
21638 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21640 * media.cpp, media.h: Don't AutoPlay playlists which have already been
21641 autoplayed. Make Play/Pause/Stop/Seek async.
21642 * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
21644 2008-06-12 Chris Toshok <toshok@ximian.com>
21646 * control.cpp, control.h, deployment.h, frameworkelement.h,
21647 grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
21648 uielement.h, value.h, xaml.cpp: I was a little too aggressive. we
21649 can't use SL_2_0 in most places in headers (or rather, shouldn't).
21650 It might be a good idea to remove all references to it, but this
21651 at least gets the ms-tests running and passing again --with-mono.
21652 Switch to using SL_2_0 around the #includes in the .cpp files, and
21653 in value.h/type.h just include the 2.0 types.
21655 * usercontrol.h, usercontrol.cpp: split out the code from
21656 control.h, control.cpp here.
21658 * Makefile.am: add usercontrol.[h,cpp]
21660 * typegen/typegen.cs: fix up the header emission.
21662 2008-06-12 Sebastien Pouliot <sebastien@ximian.com>
21664 * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
21665 ComputeBounds to avoid creating/destroying a new cairo context for
21666 each figure (it's now shared). Refactor PathFigure::Build not to scan
21667 the path list twice and rely on moon-path automatic size increase.
21668 Also avoid cairo_fill_extents if the path can't be filled or no fill
21671 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21673 * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
21674 can't get a surface, nor if the surface is a zombie.
21675 * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
21676 return NULL now, add a null check.
21678 2008-06-11 Jackson Harper <jackson@ximian.com>
21680 * xaml.cpp: Move GetKind to the info. Doesn't make sense for
21681 Instances to have a kind (they can access their kind from their
21684 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
21686 * geometry.cpp: Remove unneeded cairo_save|restore inside Draw
21687 methods (since Shape::Draw already does it) and remove
21688 cairo_set_fill_rule (since Shape::Fill does it).
21690 2008-06-11 Jackson Harper <jackson@ximian.com>
21692 * xaml.cpp: Clean up the namespace map when destroying the parser.
21694 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
21696 * geometry.h: Fix GeometryGround::ComputeBounds so it does
21697 not always returns 0,0,0,0 (from Geometry).
21699 2008-06-11 Geoff Norton <gnorton@novell.com>
21701 * downloader.cpp: Only Abort if we have a surface.
21702 * runtime.cpp: Detach the downloaders when we zombify.
21704 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
21706 * moon-path.c: Reorder ellipse points so the fill rule can be
21707 applied correcly (e.g. filling or clipping).
21709 2008-06-11 Michael Dominic K. <mdk@mdk.am>
21711 * clock.cpp: Fixing seeking on nested storyboards. Fixes
21712 seek-test-nested-storyboard.xaml in assorted and one more
21713 AnimationMatrix2 block. Now only one left to fix...
21715 2008-06-10 Geoff Norton <gnorton@novell.com>
21717 * mms-downloader.cpp: Reset our internal state after seeking so
21718 we can resume the stream in the right place.
21720 2008-06-10 Geoff Norton <gnorton@novell.com>
21722 * mms-downlodaer.cpp: Remove some improperly commited debug code
21724 2008-06-10 Chris Toshok <toshok@ximian.com>
21726 * control.h, control.cpp, deployment.h, uielement.h,
21727 uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
21728 runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
21729 now. I'll be changing that ifdef soon.) Also, mark all 2.0
21730 specific types with the following typegen pragma: /*
21731 @SilverlightVersion="2" */ so that the generated files contain the
21732 proper ifdefs as well.
21734 * type-generated.cpp, type.h, value.h: resync with new ifdefs.
21736 2008-06-10 Jackson Harper <jackson@ximian.com>
21738 * dependencyobject.cpp: Add todo for Name validation.
21740 2008-06-11 Fernando Herrera <fherrera@novell.com>
21742 * xaml.cpp: Accept numbers and strings representing numbers as
21743 values for BOOL properties. Also accept "true" and "false" case
21745 * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
21746 ending uris, so just check for "MSWMExt=.asf".
21747 Fixes hsn.tv, bug #362328.
21749 2008-06-10 Jackson Harper <jackson@ximian.com>
21751 * xaml.cpp: ContentProperty should be on the ElementInfo not the
21752 ElementInstance, since you can only have one content property per
21755 2008-06-10 Geoff Norton <gnorton@novell.com>
21757 * mms-downloader.cpp: Fix some looping logic when seeking (partially
21758 fixed). Fix a typo when enumerating the streams array to not exceed
21761 2008-06-10 Jackson Harper <jackson@ximian.com>
21763 * xaml.cpp: Remove default prefix override check. This must have
21764 only been in one of the early versions of SL because I can't get
21765 SL to do it anymore. This helps fix video page turn.
21767 2008-06-10 Jackson Harper <jackson@ximian.com>
21769 * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
21771 2008-06-10 Chris Toshok <toshok@ximian.com>
21773 * dependencyobject.h, dependencyobject.cpp: split the Emit()
21774 machinery up into 3 methods. StartEmit, DoEmit, and FinishEmit.
21775 StartEmit returns a context object passed to the other two
21778 * runtime.h, runtime.cpp: use the new
21779 EventObject::{Start,Do,Finish}Emit methods to make event bubbling
21780 more transactional - any changes made to the listener list for the
21781 event we're bubbling up, for any element in our input list, are
21782 delayed until after the event has propagated. Fixes our test id
21783 191 (test-bubbling.html) as well as bug #351568.
21785 2008-06-10 Sebastien Pouliot <sebastien@ximian.com>
21787 * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
21788 its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
21789 reuse it's physical bounds for logical instead of computing it
21792 2008-06-10 Michael Dominic K. <mdk@mdk.am>
21797 * clock.h: Replacing CreateClock with AllocateClock implementation and
21798 making sure the latter is called for Storyboards. That fixes the nested
21799 storyboards inside other storyboards...
21800 test-animation-nested-storyboard.xaml and one step more for
21803 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21805 * dependencyobject.h: Another greppable comment.
21807 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21809 * dependencyobject.cpp: Add comment to assert which shows up while
21812 2008-06-06 Geoff Norton <gnorton@novell.com>
21814 * file-downloader.h: Fix a bug between argument sending and class
21815 variables that was causing us to free and strdup the free'd pointer.
21817 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21819 * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
21822 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21824 * src.mdp: Updated.
21826 2008-06-06 Jeffrey Stedfast <fejj@novell.com>
21828 * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
21829 members change order (like it did recently).
21830 (wrap_dependency_object): Get rid of unused variables.
21832 * media.cpp (Image): Made bools share a single int.
21834 2008-06-06 Jackson Harper <jackson@ximian.com>
21836 * xaml.cpp: Use the Type system for looking up elements, make
21837 things a little more OOP so we can easily add some of the 2.0
21838 features. Note: This is going to break x:Code and deployment
21841 2008-06-05 Geoff Norton <gnorton@novell.com>
21843 * downloader.cpp, downloader.h: More refactoring to hide the zip related
21844 details in the FileDownloader. NOTE: The exposure of the file downloader
21845 to the Text side is ugly and should be cleaned up.
21846 * text.cpp: Access obfuscated font details thru the FileDownloader API.
21847 * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
21848 the filename thru the downlodaer api.
21849 * downloader.cpp: No longer leak InternalDownloaders.
21851 2008-06-05 Geoff Norton <gnorton@novell.com>
21853 * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
21854 the $P packet pair, and implement and initial algorithm to do proper
21855 bandwidth stream selection.
21857 2008-06-05 Geoff Norton <gnorton@novell.com>
21859 * downloader.cpp: Remove some left over unused variables, and the
21860 is_valid_mms_type inline.
21862 2008-06-05 Geoff Norton <gnorton@novell.com>
21864 * Makefile.am: Add file-downloader and mms-downloader to the build.
21865 * file-downloader.(cpp|h): This class is a implementation of the new
21866 InternalDownloader class utilized by the downloader to differentiate
21867 between MMS and regular requests. We should move the zip logic here.
21868 * mms-downloader.(cpp|h): This class is the MMS implementation of the
21869 InternalDownloader class.
21870 * internal-downloader.h: Route callbacks from the plugin thru this class
21871 to their appropriate file (NPStream) / MMS based implementations.
21872 * downloader.cpp: Update the API to call the InternalDownloader based
21873 representation instead of large if (mms) branches.
21875 2008-06-05 Geoff Norton <gnorton@novell.com>
21877 * downloader.cpp, downloader.h: Initial implementation of MMS inside
21878 libmoon. The API has been extended to register two additional callbacks
21879 to set HTTP headers, and the HTTP body.
21881 2008-06-05 Michael Dominic K. <mdk@mdk.am>
21883 * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
21884 --with-compatibility-bugs mode. It looks like the parsing is fine. The
21885 bug is now "implemented" in clock.cpp.
21887 2008-06-05 Michael Dominic K. <mdk@mdk.am>
21889 * clock.cpp: In ComputeNewTime when we're going over our duration time
21890 and we're AutoReversed, check actually how big the diff is cause it
21891 might be that we need to "wrap around self" and switch to forward time
21892 direction anyways (such is the case with seeking).
21894 In other words, allow to seek into particular interation of
21895 RepeatBehavior="XXXx", not only the first one. Fixes one more
21896 AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
21898 This prolly needs a littlbe bit more work still, similiar mechanism
21899 needs to be present in DoRepeat etc.
21901 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
21903 * stylus.cpp: fixing a bug. stupid me.
21905 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
21907 * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
21908 ExtendTo (double, double) methods.
21910 * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
21911 intersection of bounds and StylusPointCollection::GetBounds in HitTest
21912 to avoid checking for stroke intersection in most of the cases. Speed
21913 up erasing in inkJournal.
21915 2008-06-04 Michael Dominic K. <mdk@mdk.am>
21917 * clock.cpp: Interesting -- looks like in SL the timespan-based
21918 RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
21919 0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
21920 Anyways, implementing this and fixing two more blocks in
21923 2008-06-04 Michael Dominic K. <mdk@mdk.am>
21925 * clock.cpp: Slightly reworking the seek offsett calculations to include
21926 the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
21927 more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
21930 2008-06-04 Michael Dominic K. <mdk@mdk.am>
21932 * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
21933 test-seeking-speed-ratio.xaml from assorted tests and one more block in
21934 the AnimationMatrix2 test.
21936 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
21938 * control.cpp (user_control_new): %p does what %x was trying to do
21939 in this case, but without compile warnings :)
21941 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
21943 Glyphs rendering optimization.
21945 * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
21946 instead of re-looping this logic again in Glyphs::Render().
21947 (Glyphs::Render): Just blit the path.
21949 2008-06-03 Chris Toshok <toshok@ximian.com>
21951 * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
21952 a bunch and remove all the redundant checks.
21954 (DependencyObject::MergeTemporaryNameScopes): merge both DO and
21955 Collection versions into the same method to reduce code
21958 * dependencyobject.h: no need to provide multiple overloads for
21959 MergeTemporaryNameScopes.
21961 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
21963 Text rendering optimization via reduction of font loading.
21965 * font.cpp (FontFace): A new abstraction for FT_Face which is
21966 meant to prevent Moonlight from ahving to load the same font face
21967 multiple times just because the FontSize attributes don't match.
21968 (TextFont): Greatly simplified this class by using FontFace.
21970 2008-06-02 Jackson Harper <jackson@ximian.com>
21972 * xaml.cpp: Make sure we don't try to look up Content Properties
21973 on anything but elments. Property elements are given the
21974 XamlElementInfo of their parent so GetContentProperty on a
21975 PROPERTY element will return the parent's content property.
21977 2008-06-02 Michael Dominic K. <mdk@mdk.am>
21979 * clock.cpp: If we have duration-based RepeatBehavior set the
21980 repeat_count to 1 in bug-mode (--with-compatibility-bugs).
21982 2008-06-02 Michael Dominic K. <mdk@mdk.am>
21984 * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
21987 * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
21988 RepeatBehavior=0:0:0.
21990 2008-06-02 Michael Dominic K. <mdk@mdk.am>
21992 * clock.cpp: Even more timeline validation rules.
21994 2008-06-02 Sebastien Pouliot <sebastien@ximian.com>
21996 * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
21997 by 64.0 since this makes it clear why we're doing it.
21999 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22001 * clock.cpp: Don't validate animations that have Duration of "00:00:00"
22002 and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
22005 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22007 * xaml.cpp: Adding a compatibility option
22008 (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
22009 RepeatBehavior bug.
22011 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22013 * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
22014 protection against the desync's coming from integers (TimeSpan) being
22015 multiplied by floating values (SpeedRatio). Better to be non-precise
22016 forward than backward.
22018 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22020 * clock.cpp: The initial ticking difference needs to be multiplied by
22021 the SpeedRatio as well. This fixes few timing desyncs. Fixes
22022 clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
22023 block from the AnimationMatrix2.
22025 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
22027 * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
22028 you set an Image's Source property to an empty string (or null),
22029 it stops rendering the image.
22031 2008-05-29 Stephane Delcroix <sdelcroix@novell.com>
22033 * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
22035 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
22037 * layout.cpp|h (TextRun::IsUnderlined): Replacement for
22038 TextLayout::IsUnderline().
22039 (TextLayout::IsUnderline): Removed.
22041 * font.h (enum TextDecorations): Add a comment explaining that
22042 this is meant to be used as bit flags and not a normal
22045 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22047 * font.h: Revert TextWrapping change as it regress DRT tests
22048 (it's possible that the value were right, but did not match
22049 the managed value used by Silverlight 1.1).
22051 2008-05-29 Jackson Harper <jackson@ximian.com>
22053 * type.cpp: INVALID types don't have content properties.
22054 * dependencyobject.h: Content properties are stored on the Type so
22055 we don't need to store them here.
22056 * xaml.cpp: Get content properties from the Type system instead of
22057 the parser's internal type map.
22058 - We don't need to do any special handling in the start_element
22059 handler for content properties anymore.
22060 * control.cpp|h: We don't need to expose the content property
22062 - Mark the content property for controls.
22064 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22066 * font.h: Fix enum values for TextWrapping
22067 * layout.cpp: Fix regression (in earlier commit) for wrapping.
22069 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22071 * debug.cpp: Fix an invalid read issue found with valgrind.
22073 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22075 * layout.h|cpp: Handle invalid values for TextDecorations and
22076 TextWrapping like Silverlight does.
22078 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22080 * runtime.cpp: When setting the background color delete any previoys
22083 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22085 * uielement.cpp: Fix minor leak.
22087 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22089 * src.mdp: Updated.
22091 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22093 * http-streaming.cpp: Handle quoted feature strings.
22095 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22097 * downloader.cpp: Null out request_position in the ctor.
22099 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22101 * clock.cpp: Reverting the change that invalidates the timelines which
22102 have 00:00:00 duration. It is actually supported by SL.
22104 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22106 * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
22107 Multiply always instead of recursing down into properties.
22109 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22111 * animation.cpp: If "To" and "By" are not specified use the
22112 defaultOriginValue always instead of "start" (which might be "From").
22113 Fixes the test-animation-only-from.xaml and the green block in
22116 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22118 * clock.cpp: When Validating the timeline, if RepeatBehavior is
22119 incorrect make it 1.0 instead of marking the timeline as invalid.
22121 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22123 * downloader.cpp: Fix typo.
22125 2008-05-28 Sebastien Pouliot <sebastien@ximian.com>
22127 * enums.c: Fix None value in style_simulations_map and remove
22128 unneeded one (they exists only in WPF but SL parser does not like
22130 * font.cpp|h: Fix FontStyle and FontWeigth properties when the
22131 supplied value are invalid. Add new constants specific to SL.
22132 * text.h: Add simulation_none. Share an integer between all bool
22134 * text.cpp: Invalid values for StyleSimulation does not render
22136 * runtime.cpp: Invalid MouseCursor values hides the cursor.
22138 2008-05-27 Jeffrey Stedfast <fejj@novell.com>
22140 Fixes the Legend (Space Invaders) demo without breaking
22141 storyboard_EnterLeaveSemantics.htm.
22143 * clock.cpp|h (Clock::Completed): New virtual method which gets
22144 called when a clock completes.
22145 (Clock::ComputeNewTime): If a clock completes (has no more
22146 repeats, etc) then call ::Complete().
22147 (ClockGroup::ClockGroup): Changed the name of emitted_complete to
22148 emit_completed which has also changed the meaning a bit.
22149 (ClockGroup::Begin): Updated.
22150 (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
22151 then emit the Completed event and reset emit_completed back to
22152 false so we don't re-emit.
22153 (ClockGroup::Completed): Set emit_completed to true.
22155 2008-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
22157 * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
22158 DownloaderComplete only emit DownloadProgressChangedEvent if we
22161 2008-05-27 Michael Dominic K. <mdk@mdk.am>
22163 * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
22164 Silverlight 1.0/2.0 situation.
22166 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22168 * clock.cpp: Don't validate timelines that have specified duration of
22169 00:00:00. Fixes the test-animation-zero-duration test.xaml.
22171 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22174 * clock.h: When Validating the Timeline also make sure that the
22175 RepeatBehavior is correct, otherwise don't start the anim. Fixes the
22176 test-animation-zero-repeat-behavior test and brings us closer with
22177 AnimationMatrix2 test.
22179 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22181 * clock.cpp: When Validating TimelineGroup don't forget to call parent's
22182 base validation method.
22184 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22186 * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
22187 SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
22188 test-aniamtion-repeat-behavior.xaml test.
22190 2008-05-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
22192 * src.mdp: Updated.
22194 2008-05-23 Sebastien Pouliot <sebastien@ximian.com>
22196 * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
22197 cairo_save/cairo_restore since we don't use the context.
22199 2008-05-23 Stephane Delcroix <sdelcroix@novell.com>
22201 * dependencyobject.[h|cpp]: merge namescopes on SetValue.
22203 2008-05-23 Jeffrey Stedfast <fejj@novell.com>
22205 * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
22207 * text.cpp (Glyphs::Layout): Reverted previous commit and go back
22209 (Glyphs::Render): Same.
22211 2008-05-22 Chris Toshok <toshok@ximian.com>
22213 * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
22214 code. Only include the +2 to each side if the outline color is
22216 (Stroke::AddStylusPointToBounds): same.
22217 (Stroke::OnPropertyChanged): new method. we need to recompute the
22218 bounds if our DrawingAttributes change.
22219 (Stroke::OnSubPropertyChanged): same, if width/height/online-color
22220 of the drawing attributes change.
22222 2008-05-22 Sebastien Pouliot <sebastien@ximian.com>
22224 * brush.cpp: Fix defaults when wrong values are being used for
22225 enumerations from Javascript.
22226 [Fix part of #340799]
22228 2008-05-22 Jackson Harper <jackson@ximian.com>
22230 * dependencyobject.cpp: Only merge temp namescopes.
22232 2008-05-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
22234 * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
22235 surrounding event emission with ref/unref, set a flag specifying
22236 that we're doing event emission, and catch unrefs which would cause
22237 object destruction replacing them with a delayed unref.
22239 2008-05-21 Chris Toshok <toshok@ximian.com>
22241 * collection.cpp (Collection::Add): remove the check for AddToList
22242 returning -1. It never will. Also, call SetSurface() on the new
22243 child *before* we create the Collection::Node for it, so we can
22244 tell (in SetSurface) if it's being added individually to the
22245 surface, or as part of a subtree. This is required to fix
22246 storyboard_EnterLeaveSemantics.
22248 * animation.cpp (Storyboard::SetSurface): resume the clock when
22249 we're reattached to the surface, but *only* if we're being added
22250 as part of a subtree (that is, we already have a logical parent
22251 when we hit this method.)
22253 * clock.cpp (Clock::Begin): revert the previous
22254 change (has_started needs to be initialized to false). Required
22255 to fix storyboard_EnterLeaveSemantics.htm. We'll need to figure
22256 out another way to fix the site (or a better way that fixes one
22257 without breaking the other.)
22259 2008-05-21 Jeffrey Stedfast <fejj@novell.com>
22261 * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
22262 hard-coding the EM units ourselves.
22263 (Glyphs::Render): Same.
22265 * font.cpp (TextFont::PixelsPerEM): New convenience function.
22267 * clock.cpp (Clock::Begin): Init has_started to true. Fixes
22268 http://www.tek.co.jp/Legend
22270 * animation.cpp (Storyboard::storyboard_completed): Merged
22271 teardown_clockgroup() and invoke_completed() into a single
22272 callback. Also makes it so that we don't have to remove 2
22273 CompletedEvent handlers (which we were not doing properly afaict
22274 in Storyboard::Stop).
22275 (Storyboard::Stop): After unregistering the CompletedEvent handler
22276 and stopping the root_clock, tear down the clock group.
22278 2008-05-21 Larry Ewing <lewing@novell.com>
22280 * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
22281 ellipses a little better.
22282 (Shape::ComputeStretchBounds): modify the needs_clip logic a
22283 little to catch the degenerate ellipse cases we were running into.
22285 Fixes test-shape-ellipse-stroke*.xaml.
22287 2008-05-21 Michael Dominic K. <mdk@mdk.am>
22289 * clock.cpp: Include the offsett coming from the BeginTime in the
22290 seek_time calculations. Fixes seek-test-begin-time and
22291 seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
22293 2008-05-21 Michael Dominic K. <mdk@mdk.am>
22295 * clock.cpp: Actually do set the seek_time before using it.
22297 2008-05-21 Michael Dominic K. <mdk@mdk.am>
22299 * clock.cpp: When seeking ClockGroup, don't seek children as weel
22300 (results in cumulative behavior).
22302 2008-05-21 Sebastien Pouliot <sebastien@ximian.com>
22304 * font.cpp: (TextFont::Path) Avoid expensive save of cairo
22305 context since only the transform is changed (current point
22306 location is not part of the context).
22308 2008-05-20 Larry Ewing <lewing@novell.com>
22310 * runtime.cpp (Surface::motion_notify_callback): always return
22311 true in the windowed motion handler otherwise we something steals
22312 mouse events from us.
22314 Fixes most of MouseInput.htm
22316 2008-05-20 Michael Dominic K. <mdk@mdk.am>
22318 * clock.cpp: Fixing a problem where timeline with BeginTime set do not
22319 respond at all to Seek. Brings us closer with AnimationMatrix2.
22321 2008-05-19 Jackson Harper <jackson@ximian.com>
22323 * xaml.cpp: Only do the type wrapping if we are dealing with
22324 collection types, otherwise we just ignore the property decl.
22326 2008-05-19 Jackson Harper <jackson@ximian.com>
22328 * xaml.cpp: When we wrap a property we need to ignore the property
22329 element so that the children get added to the wrapped object
22331 * dependencyobject.cpp: We also need to merge the collection's
22332 namescope because collections can be created with their own temp
22333 namescope using createFromXaml.
22335 2008-05-19 Michael Dominic K. <mdk@mdk.am>
22340 * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
22343 2008-05-19 Michael Dominic K. <mdk@mdk.am>
22346 * animation.h: Adding an implementation for ExtraRepeatHandler to
22347 AnimationClock that fetches target value and sets it on
22348 AnimationStorage. Fixes clock37.xaml test.
22350 2008-05-19 Michael Dominic K. <mdk@mdk.am>
22353 * animation.h: Adding helper methods to get target value out of the
22354 given AnimationTimeline. We're still missing implementations for
22355 keyframe-based anims. Coming soon.
22357 2008-05-19 Michael Dominic K. <mdk@mdk.am>
22360 * animation.h: Adding two helper methods to AnimationStorage:
22361 GetStopValue (get's current base or (if set) stop value) and
22362 UpdatePropertyWithValue to manually force prop to a given state.
22364 2008-05-19 Michael Dominic K. <mdk@mdk.am>
22367 * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
22368 repeat. By default does nothing.
22370 2008-05-19 Jackson Harper <jackson@ximian.com>
22372 * xaml.cpp: When createFromXaml ('<some property>...</property>')
22373 is called, we need to create and return an object that represents
22374 that property. ie createFromXaml ('<Canvas.Triggers>...); should
22375 return a ResourceDictionary object.
22377 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22379 * downloader.cpp: Fix warnings.
22381 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22383 * clock.cpp: Added comment.
22385 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22387 * runtime.cpp: Destroy EventObject::objects_alive upon runtime
22390 2008-05-16 Miguel de Icaza <miguel@novell.com>
22392 * dependencyobject.h (DependencyObject::GetContentProperty):
22393 returns a DependencyProperty that is the target for the content of
22394 a XAML content assignment.
22396 * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
22397 Class attribute as the object has already been created.
22399 (start_element): Add support for the ContentPropertyAttribute on
22400 DependencyObjects to the XAML parser. This is very primitive
22401 support at this point, and does not support collections, or type
22402 conversions as specified on the docs.
22404 * control.cpp (Control::SetContent): Refactor setting the
22405 real_object into its own routine. Currently takes a Surface
22406 parameter, not clear that this is even needed, but kept for
22407 compatibility with the old code.
22409 (UserControl::OnPropertyChanged): Hook up setting the Content
22412 * runtime.cpp (Surface::Attach): Let the widget be UIElement.
22414 2008-05-16 Larry Ewing <lewing@novell.com>
22416 * shape.cpp: draw ellipses with no width/height specified as the
22419 Fixes StretchAndShapes.xaml.
22421 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22423 * media.cpp: Abort the downloader when we emit MediaFailed, and always
22424 emit a DownloadProgressChangedEvent with 1.0 when we're finished
22425 downloading (we won't get any writes if the file has already been
22426 downloaded and mozilla just gives us the filename).
22428 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22430 * src.mdp: Updated.
22432 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22434 * downloader.cpp: Don't emit any events if we don't have a surface. Add
22435 warnings to Send(Internal) when we have no surface (the plugin is
22436 already checking for it, so if the warning is printed we're doing
22437 something else wrong).
22438 * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
22439 create, and when the toplevel canvas changes or the surface is
22440 destroyed clear the downloader's surface pointer.
22442 2008-05-16 Jeffrey Stedfast <fejj@novell.com>
22444 * downloader.cpp (Downloader::Abort): Set download progress to 0.
22446 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22448 * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
22449 NotifySize, mozilla calls NotifySize for every write.
22451 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22453 * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
22455 2008-05-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
22457 * playlist.cpp: If we're stopping a playlist, reopen the first entry.
22458 * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
22459 so that Playlist can call them.
22461 2008-05-15 Larry Ewing <lewing@novell.com>
22463 * runtime.cpp (Surface::button_press_callback): stop firefox from
22464 stealing our focus in the widget case by always returning true on
22465 button press events. There may be a better way to handle this by
22466 only returning true if the press lands on and element but this at
22467 least improves the situation.
22469 Fixes FullScreenKey.htm.
22471 2008-05-15 Michael Dominic K. <mdk@mdk.am>
22473 * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
22474 Filling state, this makes the idle optimization cover all the cases. Big
22475 perf boost expected.
22477 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
22479 Fix for tests/xaml/test-directory-in-zip.html
22481 * media.cpp (Image::Image): Initialize some new state variables to
22482 keep track of whether or not the FrameworkElement::Width and
22483 Height values are ever manually set.
22484 (Image::DownloaderComplete): Properly set the Width/Height
22485 property values based on whether a particular Width/Height have
22486 been requested. Use the image's native width/height if not.
22487 (Image::OnPropertyChanged): Listen for changes to Width/Height
22490 2008-05-14 Larry Ewing <lewing@novell.com>
22492 * src/uielement.cpp (UIElement::PostRender): clear any existing
22493 paths when rendering the bounds rectangle.
22495 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
22497 * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
22498 of the more complex GetValue API.
22500 * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
22501 error, return -1 (since this is an int32 return value, not bool).
22503 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22505 * media.cpp, media.h: Added MediaElement::IsLive, and move
22506 initialization of this field to before our MediaPlayer is opened.
22507 * mplayer.cpp, mplayer.h: For live sources the first frame might not
22508 come with pts = 0, so store that pts so that later we can correctly
22509 calculate how much we've actually played.
22511 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22513 * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
22514 * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
22515 and skip entries with zero duration.
22517 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22519 * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
22520 the read lock if don't have a surface or timemanager.
22522 2008-05-14 Michael Dominic K. <mdk@mdk.am>
22524 * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
22525 children) on DoRepeat (). Fixes a small regression in clock21.xaml
22526 introduced with last commit.
22528 2008-05-14 Michael Dominic K. <mdk@mdk.am>
22531 * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
22532 it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
22534 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
22536 * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
22537 crashes when javascript removes the plugin in an eventhandler.
22539 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
22541 * media.cpp (MediaElement::DownloaderFailed): Make this more
22544 2008-05-13 Fernando Herrera <fherrera@novell.com>
22546 * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
22548 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
22550 * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
22551 corruption of the source.* variables by creating local references
22552 to them and setting source.* to NULL before calling
22553 SetSourceInternal().
22555 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
22557 * clock.cpp, clock.h: Remove InvokeOnMainThread.
22558 * dependencyobject.cpp, dependencyobject.h: EventObject: added
22559 AddTickCall. Requred when adding ticks from other than the
22561 * downloader.cpp: Send: use a TimeManager to add the timeout.
22562 * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
22563 TimeManager::InvokeOnMainThread anymore, add the timeouts using a
22564 TimeManager instance.
22566 2008-05-12 Jeffrey Stedfast <fejj@novell.com>
22568 * list.cpp (List::List): Init length to 0.
22569 (List::Clear): Reset length to 0.
22570 (List::Append): length++
22571 (List::Prepend): length++
22572 (List::Insert): length++
22573 (List::InsertBefore): length++
22574 (List::Unlink): length--
22575 (List::Length): Fixed to be O(0) instead of O(n)
22577 * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
22578 instead of comparing List::Length() to 0.
22579 (Stroke::HitTest): Same.
22581 2008-05-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
22583 * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
22584 prevents us from emitting the event again as a consequence of what
22585 any of the event handlers do.
22587 2008-05-12 Michael Dominic K. <mdk@mdk.am>
22590 * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
22592 2008-05-12 Michael Dominic K. <mdk@mdk.am>
22596 * dependencyobject.cpp:
22597 * dependencyobject.h: Float the AnimationStorage only when it's the
22600 2008-05-12 Michael Dominic K. <mdk@mdk.am>
22603 * animation.h: Introduce floating state for animation storage that has
22604 it's clock destroyed but it hasn't been stopped before. We need to keep the
22605 animation storage (reffed from the DependencyProperty hash) around to be
22606 able to get proper value for the next (continous) Storyboard on same
22607 property. Fixes #383879 and #375275.
22609 2008-05-09 Geoff Norton <gnorton@novell.com>
22611 * mplayer.cpp, pipeline.cpp, pipeline.h: When iterating streams
22612 ensure that we select the stream with the highest available bit
22613 rate, opposed to the first stream that we come across.
22615 2008-05-09 Jeffrey Stedfast <fejj@novell.com>
22617 * dependencyobject.cpp (DependencyObject::FindName): Don't need
22620 * namescope.cpp (NameScope::FindName): Simplify.
22622 2008-05-08 Larry Ewing <lewing@novell.com>
22624 * shape.cpp: silence some warnings.
22626 2008-05-08 Larry Ewing <lewing@novell.com>
22628 * shape.h: remove ClipOnWidthAndHeight method, replace with
22629 needs_clip variable.
22631 * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
22632 the actual size of the object before and after the stretch and the
22635 Speeds up Sprawl and a lot of other applications that use stretch
22638 2008-05-08 Larry Ewing <lewing@novell.com>
22640 * runtime.cpp (Surface::expose_to_drawable): fill the background
22641 instead of painting and don't create the clip until the rendering
22643 2008-05-08 Miguel de Icaza <miguel@novell.com>
22645 * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
22646 existing DependencyObject with the contents of a XAML string.
22648 Needed for Silverlight 2.0 support, for the new model:
22649 create object then do LoadComponent on it.
22651 2008-05-08 Sebastien Pouliot <sebastien@ximian.com>
22653 * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
22656 2008-05-07 Jeffrey Stedfast <fejj@novell.com>
22658 * font.cpp: Removed old layout code.
22659 (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
22660 conversion macros to make understanding the code easier. Also,
22661 added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
22662 of broken fixed-width CJK fonts.
22664 * clock.cpp (TimeManager::Stop): Added for convenience.
22665 (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
22666 can make sure it is init'd properly via SetTimerFrequency() before
22669 * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
22670 not it's source's Start(). We need things like frequency to be
22671 setup and other values to be initialized properly.
22672 (Surface::Attach): After calling canvas->OnLoaded(), check that we
22673 are not zombied - if we are, return.
22675 2008-05-07 Larry Ewing <lewing@novell.com>
22677 * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
22678 objects that the surface is undead.
22680 2008-05-06 Jeffrey Stedfast <fejj@novell.com>
22682 * animation.cpp (animation_shutdown): Renamed from
22683 animation_destroy().
22685 * text.cpp (text_shutdown): Renamed from text_destroy().
22687 * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
22688 include glib.h and use g_timeout_add() instead.
22689 (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
22690 not -1 (the timeout ids are uint, not int).
22691 (SystemTimeSource::SetTimerFrequency): Updated.
22692 (SystemTimeSource::Start): Updated.
22693 (SystemTimeSource::Stop): Updated.
22695 * list.cpp (List::Remove): Don't need to search for the node, we
22696 already have a pointer to it.
22698 2008-05-07 Larry Ewing <lewing@novell.com>
22700 * runtime.cpp (Surface::Resize): handle a resize in windowless mode
22703 Fixes part of windowless resizing.
22705 2008-05-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
22707 * media.cpp: Handle the rtsp protocol too.
22708 * playlist.cpp, playlist.h: Store base and source_name as Uris.
22709 Implement GetFullSourceName better, and do some uri validation.
22710 * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
22711 disables canonicalization of trailing directory separators since
22712 asx playlists may treat urls differently depending on the presence
22713 or absence of any trailing directory separators. Added Clone ().
22715 2008-05-06 Michael Dominic K. <mdk@mdk.am>
22718 * animation.h: When attaching new animation storage and previous storage
22719 exist, flag it as non-resetable (meaning that the storage will never
22720 reset animated property to base/stop value). This fixes the
22721 storyboard-stopping-two.html test.
22723 2008-05-06 Michael Dominic K. <mdk@mdk.am>
22725 * dependencyobject.cpp:
22726 * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
22727 returns the previously attached AnimationStorage.
22730 * animation.h: When attaching new animation storage try to inherit the
22731 resetValue from the previously attached storage. Reset value is the
22732 value that we reset to when storyboard is stopped (originally it always
22733 used to be the base value of the current AnimationStorage).
22735 This replicates the bahavior of SL where starting a new (second)
22736 storyboard on a property renders the prev storyboard useless
22737 (non updating the prop) but keeps it's "starting value" for storyboard
22738 reset. In other words we can say that starting a new storyboard on a
22739 prop makes this new storyboard a "continuation" of the prev storyboard.
22741 2008-05-05 Larry Ewing <lewing@novell.com>
22743 * runtime.cpp (Surface::render_cb): only call ForceRender if we
22746 2008-05-05 Larry Ewing <lewing@novell.com>
22748 * runtime.cpp: update the (almost unused) frame count where it can
22749 get hit in windowless. Clear existing paths before rendering the
22752 Minor cleanups to help with debugging the expose regions.
22754 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
22756 * clock.cpp (TimeManager::Shutdown): Renamed from
22757 TimeManager::Stop() and also updated to remove all registered
22760 * runtime.cpp (Surface): We no longer keep track of signal ids, we
22761 simply remove all signals on the widgets with 'this' as the user
22764 * clock.cpp (TimeManager::Stop): Added. New method to stop the
22767 * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
22768 emission of timeout events.
22770 2008-05-05 Michael Dominic K. <mdk@mdk.am>
22772 * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
22775 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
22777 * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
22778 playing playlists, we only emit MediaEnded if we're playing the
22779 last entry in the playlist. Call Playlist::OnEntryEnded manually
22780 instead of letting the playlist rely on the MediaEnded event, since
22781 the MediaEnded event isn't raised for all entries. Playlist: Added
22782 IsCurrentEntryLastEntry.
22784 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
22786 * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
22787 until the pipeline got all the data it was waiting for.
22789 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
22791 * media.cpp, media.h: Add an EmitMediaOpened method and emit
22792 MediaOpened somewhat more aggressively, but only once.
22794 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
22796 * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
22797 this->height for the brush size - fixes TextTransforms.xaml once
22800 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
22802 * media.cpp: Don't emit any BufferingProgressChanged events in
22805 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
22807 * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
22808 ffmpeg won't decode any wma audio.
22810 2008-05-05 Stephane Delcroix <sdelcroix@novell.com>
22812 * shape.cpp: draw the line caps with the stretch_transform matrix.
22813 Finetune the stretch computation again.
22815 2008-05-05 Miguel de Icaza <miguel@novell.com>
22817 * src/control.cpp: Add a skeleton UserControl, to get a bit
22818 further on the loading of a Silverlight 2 application.
22820 See the TODO, there are still many limitations.
22822 2008-05-04 Larry Ewing <lewing@novell.com>
22824 * runtime.cpp: restrict invalidations to the active windowless
22827 Fixes massive drawing issues on http://my.liveatedu.com/ where
22828 were creating invalidations with a negative coords.
22830 2008-05-04 Miguel de Icaza <miguel@novell.com>
22832 * xap.cpp: Expose xap_unpack, include when Mono runtime is
22835 * deployment.cpp: Small fixups.
22837 * xaml.cpp (deploy_namespace): New namespace used to parse
22838 AppManifest.xaml files that start with a <Deployment> tag on the
22839 http://schemas.microsoft.com/client/2007/deployment namespace.
22841 (xaml_init): Register the deployment classes.
22843 * type.cpp (type_is_dependency_object): Add new helper method
22844 to determine if a Kind is a DEPENDENCYOBJECT, the list is no
22845 longer separated in value-types and DependencyObjects, so its not
22846 possible to do a fast lookup from managed code.
22848 2008-05-04 Chris Toshok <toshok@ximian.com>
22850 [ fixes #361906, while simultaneously keeping halo3,
22851 ControlLife.htm, and ControlState.htm happy ]
22853 * runtime.h, runtime.cpp, type-generated.cpp: move back to the
22854 LoadEvent instead of the broken Attaching event, reverting
22857 * panel.h, panel.cpp: add a "emitting_loaded" guard around the
22858 body of OnLoaded so we don't end up re-entering this method.
22859 Also, revert r102196 as the ordering of parent-to-child was
22860 correct originally, there were just other ordering constraints we
22863 * control.h, control.cpp: same.
22865 * dependencyobject.h, dependencyobject.cpp: add a count field to
22866 EventClosure so we can support the "only_unemitted" arg in
22867 EventObject::Emit. The idea is that the Loaded event seems to
22868 only be emitted on those events that haven't yet been emitted.
22869 This may also be implemented just by making Loaded event handlers
22870 one-shot (removing themselves after they fire), but this is easy
22871 enough and works. The only event with this odd behavior (that I
22872 know of) is Loaded.
22874 * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
22875 flag (which may actually be useless now, given the Emit change)
22876 but don't emit Loaded only when the flag is unset.
22878 * collection.cpp: remove the last bit of closure access from
22879 VisualCollection. The OnLoaded call now happens in
22880 Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
22881 spots in VisualCollection.
22883 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
22885 * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
22886 [Complete the fix for #383870]
22888 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
22890 * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
22891 glyphs into account when calculating extents. Fix usage of OriginX
22892 and OriginY as far as extents goes.
22893 (Glyphs::GetOriginPoint): Don't leak the TextFont.
22894 (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
22895 RenderTransformOrigin, Microsoft's implementation for Glyphs
22896 doesn't seem to take into account the width/height of the bounding
22898 (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
22899 rather than MIN (OriginX, 0), Min (OriginY, 0)
22901 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
22903 * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
22904 [Partial fix for #383870, bounds are not always correct]
22906 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
22908 * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
22909 rather than copying it from the cairo context for the same reason
22910 we did this for TextBlock segment path caching.
22912 2008-05-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
22914 * playlist.h, playlist.cpp: Implemented ClientSkip.
22915 * media.cpp: Handle playlists entry with ClientSkip set correctly.
22917 2008-05-02 Michael Dominic K. <mdk@mdk.am>
22920 * animation.h: For the KeySpline: getting rid of the ugly lookup-table
22921 with x -> y values and instead using a two-way curve approximation
22922 methodology for calculating the Spline progress. This is not 100% accurate
22923 (same as original bezier) for fine-grained values but removes all the
22924 precision problems and greatly improves the quality for long KeySpline
22925 animations (no more jags).
22927 2008-05-01 Larry Ewing <lewing@novell.com>
22929 * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
22930 invalidate here as changes in the upstream opacity could make us
22931 unable to invalidate later.
22933 Fixes invalidation of last hex in a sprawl run.
22935 2008-05-01 Larry Ewing <lewing@novell.com>
22937 * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
22938 Previously there were no time manager handlers listening to events
22939 in windowless mode so we were missing expose events. Make all
22940 invalidations go throw Invalidate so that they get picked up in
22941 windowless. Take into account that exposes go to a full size
22942 window in windowless mode so we don't need to subtract the device
22945 Fixes most of the issues with
22946 http://silverlight.r2musings.com/weatherwidget/default.aspx and
22947 fixes the harness failure on ZIndex.htm.
22949 2008-05-01 Chris Toshok <toshok@ximian.com>
22951 * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
22952 AttachingEvent, which is emitted after the toplevel control is set
22953 on the surface, but before UIElement::LoadedEvent is emitted on
22954 it. Used by the plugin for hooking up the plugin onLoad handler.
22956 2008-05-01 Jeffrey Stedfast <fejj@novell.com>
22958 * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
22959 from the cairo_t after pathing out all of the glyphs for a segment
22960 of text, keep our own moon_path for caching. Apparently the path
22961 gotten from cairo_copy_path() has whatever transforms are on the
22962 context pre-applied which is the cause for the breakage in bug
22965 * font.cpp (TextFont::AppendPath): New method to append a glyph's
22966 path to a moon_path for caching purposes.
22968 2008-04-30 Fernando Herrera <fherrera@novell.com>
22970 * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
22971 stream, fallback to http:// uri
22973 2008-04-30 Michael Dominic K. <mdk@mdk.am>
22976 * panel.h: Adding the panel_add_child helper method used by the ancient
22977 demo. It actually makes sense.
22979 2008-04-30 Michael Dominic K. <mdk@mdk.am>
22984 * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
22985 the install. This way we don't need to bundle the zip includes.
22987 2008-04-30 Stephane Delcroix <sdelcroix@novell.com>
22989 * shape.cpp: calc_line_bounds: compute the start|end caps in the
22992 2008-04-30 Sebastien Pouliot <sebastien@ximian.com>
22994 * panel.cpp: Emit Loaded on Canvas before it's child.
22995 [Fix part #361906 - i.e. back to original issue]
22997 2008-04-30 Fernando Herrera <fherrera@novell.com>
23000 * downloader.h: export downloader_get_downloaded_file without the
23003 2008-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23005 * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
23006 correctly, and calculate file duration as MS seems to be doing it.
23007 SkipFrame: when seeking don't take into account the size of the
23008 mpeg header, since we only peaked it.
23010 2008-04-29 Michael Dominic K. <mdk@mdk.am>
23012 * shape.cpp: Clipping is not taken into account with cairo_in_*
23013 functions therefore do the hit-test in two steps -- first check if
23014 within clipping bounds and then check if within shape bounds. Fixes
23015 #383894 and test-shape-cursor-clipping.xaml test.
23017 2008-04-28 Chris Toshok <toshok@ximian.com>
23019 * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
23020 before we emit our own Load event (and trigger the plugin's onLoad
23023 2008-04-28 Chris Toshok <toshok@ximian.com>
23025 * runtime.cpp (Surface::Attach): always emit Resize on Attach.
23026 fixes ControlState.htm.
23028 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23030 * typegen/typegen.cs: Minor fix to support C constructors immediately
23032 * type-generated.cpp: Regenerated (includes a lot more C constructors
23035 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23037 * geometry.h: Include glib.h before using glib macros.
23039 2008-04-28 Michael Dominic K. <mdk@mdk.am>
23041 * xaml.cpp: Silently skip the attributes that are empty instead of
23042 throwing an error. Fixes the test-parser-empty-property.xaml and
23045 2008-04-28 Michael Dominic K. <mdk@mdk.am>
23047 * brush.cpp: Make sure to use proper width for image stretching params.
23048 Fixes the image-brush-stretch-set.html and bug #383938.
23050 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23052 * shape.cpp: Added property accessors.
23054 2008-04-25 Chris Toshok <toshok@ximian.com>
23056 * type-generated.cpp: add the Surface Loaded event.
23058 * runtime.cpp (Surface::widget_destroyed): null out s->widget if
23059 it matches too. no more dangling pointers.
23061 * runtime.h, runtime.cpp: give the Surface class a Load
23062 event (used to run the JS OnLoad event in the plugin) and an
23065 * xaml.cpp (dependency_object_hookup_event): raise a parser error
23066 if an event is specified with a javascript: prefix.
23068 2008-04-25 Larry Ewing <lewing@novell.com>
23070 * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
23071 changed logic inside a type check.
23073 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23075 * xaml.cpp (geometry_from_str): Use the new gemoetry property
23078 * geometry.cpp: Added property accessor methods
23080 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23082 * media.cpp: Always emit DownloadProgressEvents, even if we're
23085 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
23087 * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent
23088 method, so the Canvas.Top, Canvas.Left properties are read. Fixes
23091 2008-04-25 Geoff Norton <gnorton@novell.com>
23093 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: Support using ffmpeg's
23094 new libavcodec/avcodec.h
23096 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23098 * runtime.cpp (runtime_init): No longer need to call
23099 assembly_part_init().
23101 * deployment.cpp (assembly_part_init): Moved into
23104 * deployment.h: Added missing virtual dtors.
23106 * collection.cpp (Collection::GetCount): Added.
23108 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23110 * media.cpp: Set DownloadProgress to 0 when media fails to load.
23112 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23114 * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
23115 stream, emit it even if we missed it by up to 0.1 s. Refactored
23116 parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
23117 after we've either started playing or finished buffering. Emit
23118 MediaFailed/InvalidFileFormat if we failed to initialize the media.
23119 Reinitialize the media synchronously in SetSource.
23122 2008-04-25 Michael Dominic K. <mdk@mdk.am>
23126 * uielement.h: Also include the IsHitTestVisible status when checking
23127 our input_list after handling the mouse event. This fixes the
23128 mouse-enter-leave-hit-test-visibility.html test.
23130 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
23132 * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
23134 2008-04-24 Jeffrey Stedfast <fejj@novell.com>
23136 * clock.cpp: Added property accessor methods for TimelineMarker
23137 and added c-bindings.
23139 * downloader.cpp: Same.
23141 * media.cpp: Added property accessors so that it isn't
23142 necessary to use long-winded c-function names to get property
23143 values. Also made all c-wrappers call the c++ property accessor
23146 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23148 * mplayer.cpp: When a video-only media reaches its end, set target_pts
23149 to the last rendered pts, since that's what is reported as our
23152 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23154 * mplayer.cpp: When a video-only media reaches its end, set target_pts
23155 to the last rendered pts, since that's what is reported as our
23158 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23162 * uielement.h: Renaming UIElement::GetActualRenderVisibility to
23163 UIElement::GetActualTotalRenderVisibility for better name matching.
23165 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23167 * runtime.cpp: Another perf fix for the fix -- make it a corner case
23168 when the new_input_list needs to be copied. In most cases we can just
23171 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23175 * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
23176 the perf/sanity point of view. Here goes a better refactor.
23178 Adding UIElement::GetActualRenderVisibility which returns the visibility
23179 (like UIElement::ComputeTotalRenderVisibility) without setting the
23182 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23184 * runtime.cpp: After emitting the events make sure to update our
23185 input_list since it can be changed -- as a result of somebody ie.
23186 changing element's visibility in the enter/leave callback. Fixes the
23187 #375220 (Microsoft downloads index chars).
23189 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23191 * animation.cpp: Do a slightly more precise generation of key-spline
23192 tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
23194 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23196 * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
23197 and raise MediaFailed.
23199 2008-04-24 Stephane Delcroix <sdelcroix@novell.com>
23204 * shape.h: override some Compute[Shape]Bounds method to pass a matrix
23205 argument. Allows measuration of transformed Pathes and a 2nd pass to
23206 refines the guesses we're doing for Stretches.
23208 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23210 * src.mdp: Updated.
23212 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23214 * media.cpp, pipeline.cpp, pipeline.h: Addded
23215 ProgressiveSource::NotifyFinished to notify that the download has
23216 finished. This is required for streaming downloads which download 0
23217 bytes, otherwise the pipeline will hang waiting for data.
23219 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23221 * collection.cpp, collection.h: TimelineMarkerCollection needs to be
23222 sorted at all times, added a virtual Collection::AddToList method
23223 which appends the item to the list (and overriden by
23224 TimelineMarkerCollection to add it in the correct position to keep
23225 the collection ordered).
23227 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23229 * clock.cpp, clock.h: Added property accessors to TimelineMarker.
23231 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
23233 * panel.cpp: Add property accessors and added c-bindings.
23235 2008-04-23 Geoff Norton <gnorton@novell.com>
23237 * Makefile.am: Fix make dist when building with ffmpeg.
23239 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
23241 * frameworkelement.cpp: Added property accessors so that it isn't
23242 necessary to use long-winded c-function names to get property
23243 values. Also made all c-wrappers call the c++ property accessor
23246 * text.cpp: Added property accessors to all text classes so that
23247 it isn't necessary to use long-winded c-function names to get
23248 property values. Also made all c-wrappers call the c++ property
23250 (TextBlock::LayoutSilverlight): Removed, logic moved into
23253 * animation.h: Make sure all c-API _new() functions take void as
23256 * uielement.cpp: Added some property accessors.
23258 * text.cpp: Use the new SolidColorBrush ctor.
23260 * brush.cpp: Added property accessors to all brush classes so that
23261 it isn't encessary to use long-winded c-function names to get
23262 property values. Also made all c-wrappers call the c++ property
23264 (SolidColorBrush::SolidColorBrush): New .ctor to make life
23267 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
23269 * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
23270 MediaPlayer with a negative pts.
23272 2008-04-23 Geoff Norton <gnorton@novell.com>
23274 * libmoon.h: Drop mango.h
23276 2008-04-23 Geoff Norton <gnorton@novell.com>
23278 * runtime.cpp: Remove pango support.
23280 2008-04-23 Geoff Norton <gnorton@novell.com>
23282 * Makefile.h, text.cpp, text.h, mango.cpp, mango.h: Remove pango
23285 2008-04-23 Geoff Norton <gnorton@novell.com>
23287 * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
23288 include swscale and ffmpeg cpp files in the build if their configure
23291 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
23293 * type.cpp: When looking for types use case-insensitive type
23294 comparison. Fixes #375230 and #375231.
23296 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
23298 * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
23299 don't take a ref to the context, and add a context_refcounted field
23300 to keep track of refcounting. This is required for long-living
23301 closures which would otherwise cause circular references. Add and
23302 implemetn a ASFMarkerDecoderInfo class, and implement notification
23303 of found markers back to listeners.
23304 * src.mdp: Updated.
23305 * downloader.cpp, downloader.h: Downloader: Add a streaming_features
23306 field, so that the plugin can return information about mms streams.
23307 * http-streaming.cpp, http-streaming.h: Added
23308 parse_http_streaming_features.
23309 * mplayer.h: Add property accessors for CanSeek and CanPause, and
23310 implement them. Select any marker streams.
23311 * media.h, media.cpp: MediaElement: store the marker closure in the
23312 instance, so that we can delete it upon destruction. Read the
23313 streaming features from the downloader in order to set
23314 CanSeek/CanPause properly. TryOpen: if we don't have a filename,
23315 but we do have a downloaded file, use the downloaded file as the
23316 source (might happen if streaming stops before TryOpen is called).
23317 * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
23318 implement them. Select any marker streams. Don't check if we can
23319 pause in Pause (), since MediaElement implements Buffering calling
23320 Pause on us. MediaElement is already checking if media can be
23322 * Makefile.am: Added http-streaming.h|cpp.
23324 2008-04-22 Stephane Delcroix <sdelcroix@novell.com>
23326 * rect.h: overrides for Union and IsEmpty to take a logical bool,
23327 allowing logical bounds computation.
23328 * geometry.cpp: use the overrided Union () in Computebounds
23329 * shape.cpp: This is the stretches' Holy Grail !
23331 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
23333 * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
23334 event->device non-NULL.
23336 2008-04-22 Larry Ewing <lewing@novell.com>
23338 * playlist.h: remove expat references from public symbols.
23339 * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
23340 from the plublic headers.
23342 Start cleaning things up for ff3.
23344 2008-04-22 Chris Toshok <toshok@ximian.com>
23346 * runtime.h, runtime.cpp: add Zombify() which sets the zombie
23347 flag. basically this allows us to unwind gracefully from an event
23348 that has caused the surface to be destroyed. when the flag is
23349 set, we basically stop emitting UI events that we're in the
23350 process of emitting.
23351 (Surface::widget_destroyed) simplify this, and zero out the
23352 widgets here so we don't destroy them again in ~Surface().
23354 * dependencyobject.h, dependencyobject.cpp: make unref_delayed
23355 public again, and don't warn about calling it on the main thread.
23356 we need it in the plugin.
23358 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
23360 * shape.cpp (Shape::DoDraw): Cast extents to int for
23361 AddToCacheSizeCounter().
23362 (Shape::IsCandidateForCaching): Same for
23363 VerifyWithCacheSizeCounter().
23365 2008-04-22 Michael Dominic K. <mdk@mdk.am>
23367 * animation.cpp: Safely allow now the KeyTime property to be nullable.
23368 Fixes the Animation_NegativeTst.htm test.
23370 2008-04-22 Michael Dominic K. <mdk@mdk.am>
23373 * animation.h: Making the Storyboard::Begin return bool (true if
23374 storyboard started correctly, false otherwise).
23376 2008-04-22 Michael Dominic K. <mdk@mdk.am>
23381 * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
23382 to validate the Timeline before starting it. Timelines are always valid
23383 by default except for KeyFrame-based animations where we perform a
23384 check on the keyframes.
23386 Storyboard doesn't start if any of it's timelines are not valid. This
23387 fixes the test-animation-invalid-keyframe-keytime.xaml test.
23389 2008-04-22 Michael Dominic K. <mdk@mdk.am>
23391 * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
23392 value, make it be NULL by default. This currently causes a segfault in
23393 the just-added test-animation-invalid-keyframe-keytime.xaml which is
23396 2008-04-22 Fernando Herrera <fherrera@novell.com>
23399 * pipeline.cpp: set the new read position after Seeking to pts.
23400 Added ProgressiveSource::SeekInternal that refuses to Seek to a
23401 non-filled position.
23403 2008-04-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
23405 * dependencyobject.cpp, dependencyobject.h: Added another SetValue
23406 overload, to enable calling all SetValues with stack objects.
23407 * xaml.cpp: Fix a Value leak.
23409 2008-04-21 Jeffrey Stedfast <fejj@novell.com>
23411 Fixes a double-destroy bug in FullScreen.htm
23413 * runtime.cpp (Surface::Surface): Initialize normal_widget - never
23414 let it be NULL unless we are in windowless mode.
23415 (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
23416 'widget_normal' instead, this way we can't accidently destroy the
23417 fullscreen widget twice (e.g. if we are in fullscreen mode).
23418 (Surface::ConnectEvents): Record the unrealize signal id so that
23419 we can later disconnect from it.
23420 (Surface::DestroyWidget): Now takes a SignalIds argument so that
23421 we can disconnect from unrealize/destroy signals which may fire in
23422 response to destroying the widget.
23423 (Surface::InitializeWidget): Now takes a SignalIds argument so
23424 that we can save the destroy signal id.
23426 2008-04-21 Geoff Norton <gnorton@novell.com>
23428 * runtime.cpp: Guard against freeing a list in a sub-event
23429 loop when crossings are invoked. Fixes bug#378902
23431 2008-04-20 Miguel de Icaza <miguel@roxanne.site>
23433 * deployment.cpp: new dependency property objects for the
23436 * xap.cpp: XAP loader, unpacks and instantiates deployment, but
23437 does not load assemblies in VM. Not sure if this should be done
23438 here (and add a VM dependency) or in the plugin and later as well
23441 * runtime.cpp: Deployment initialization.
23443 * downloader.cpp Moved some code from here into utils.cpp: Expose
23444 CreateTempDir instead of MakeTempDir that takes care of creating
23445 the directory with a unique signature.
23447 2008-04-21 Geoff Norton <gnorton@novell.com>
23449 * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
23450 to the C implementation.
23452 2008-04-18 Larry Ewing <lewing@novell.com>
23454 * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
23455 changes invalidate our parents bounds to notify them that their
23456 subtree may have changed.
23458 Fixes the status boxes on MouseInput.htm
23460 2008-04-18 Jeffrey Stedfast <fejj@novell.com>
23462 * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
23463 and focus-out-event.
23464 (Surface::focus_in_callback): If we have a toplevel canvas, emit a
23465 GotFocus event on it.
23466 (Surface::focus_out_callback): If we have a toplevel canvas, emit
23467 a LostFocus event on it.
23468 (Surface::Attach): If our widget has focus, emit GotFocus event on
23469 our canvas right after we emit the Loaded event.
23471 * uielement.cpp (UIElement::EmitGotFocus): New method.
23472 (UIElement::EmitLostFocus): New method.
23474 2008-04-18 Geoff Norton <gnorton@novell.com>
23476 * yuv-converter.cpp: It seems that ffmpeg will occasionally
23477 over-pad the YUV buffers with a SIMD aligned amount (see
23480 2008-04-18 Michael Dominic K. <mdk@mdk.am>
23482 * animation.cpp: Make sure we always return targetValue when
23483 progress >= 1.0 for Spline*KeyFrame's.
23485 This fixes the clock36.xaml test and PopFly bug of "line dirt
23486 leftovers" when collapsing block list or tutorial list.
23488 2008-04-17 Larry Ewing <lewing@novell.com>
23490 * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
23492 2008-04-17 Larry Ewing <lewing@novell.com>
23494 * src/eventargs.cpp:
23496 * src/type-generated.cpp:
23497 * src/value.h: add a default ctor for MouseEventArgs.
23499 2008-04-17 Larry Ewing <lewing@novell.com>
23501 * typegen/typegen.cs: don't require an svn repo for proper
23502 functioning, try to make the error messages functional still.
23504 2008-04-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
23506 * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
23507 before trying to play/pause, otherwise nothing will happen (if
23508 coming from the Opening state). Fix printf.
23510 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23512 * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
23513 for DependencyProperty, if a property has this flag, it will always
23514 be changed, even if the new value is the same as the old value.
23515 DependencyObject::SetValue: honor the new always_change flag.
23516 * media.cpp: Set the always_change flag to true for
23517 MediaBase::SourceProperty.
23519 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23521 * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
23522 MediaOpened, so that it also happens when TryLoadFinished opens the
23523 media. Fixes media not starting to play when the media was
23524 downloaded between the moment we tried to open it and it was
23525 successfully opened.
23527 2008-04-17 Jeffrey Stedfast <fejj@novell.com>
23529 * color.cpp (color_from_str): Handle uint32 color values that are
23532 2008-04-17 Larry Ewing <lewing@novell.com>
23534 * dependencyobject.cpp (DependencyProperty::DependencyProperty):
23535 initialize is_nullable.
23537 Fixes random failure of ParserErrors.htm.
23539 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23541 * media.cpp: MediaElement::TryOpen: always unref the FileSource we
23542 create when we're done with it.
23544 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23546 * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
23547 remember how many events the current type has, since in our
23548 destructor we can't get that information anymore. Add a new
23549 EventLists class which does the book-keeping.
23551 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23553 * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
23554 in the destructor. MediaElement::SetMedia: call ComputeBounds at
23555 the end. Fixes xaml/test-canvas-no-size.html
23557 2008-04-17 Michael Dominic K. <mdk@mdk.am>
23559 * animation.cpp: It turns out that KeyFrames doesn't have default Value
23560 of NULL but rather 0/Black/etc.
23562 This fixes the the test-animation-null-defaults-*.xaml tests and the bug
23563 in PopFly where clicking the block list collapser wouldn't do anything
23564 (it collapses now properly like the tutorial right pane).
23566 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23568 * src.mdp: Updated.
23570 2008-04-16 Larry Ewing <lewing@novell.com>
23572 * type.cpp: avoid an infinite recursion in LookupEvent.
23574 Fixes a crash in RuntimeErrors.htm.
23576 2008-04-16 Larry Ewing <lewing@novell.com>
23578 * shape.cpp (Shape::ComputeStretchBounds): get another test working.
23580 2008-04-16 Larry Ewing <lewing@novell.com>
23582 * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
23583 try to resolve the regression in stretch that had crept in. Still
23584 working on a more complete patch.
23586 2008-04-16 Larry Ewing <lewing@novell.com>
23588 * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
23591 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
23593 * dependencyobject.cpp (free_value): value argument may be NULL.
23595 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23597 * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
23598 decreasing refcount, so that ref in event emission doesn't abort.
23599 Reenable ref/unref in event emission.
23601 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
23603 * dependencyobject.cpp (set_surface): value argument can be NULL.
23604 (DependencyObject::IsValueValid): Fixed compile warnings.
23606 * downloader.cpp: Properly set/reset Status and StatusText
23608 (Downloader::Open): Properly reinitialize all state.
23609 (Downloader::Write): Clamp progress to 1.0 (altho it should never
23610 go above, especially not that I've fixed resetting 'total' state).
23612 * enums.c (initialize_enums): Don't cast arrays using
23613 GINT_TO_POINTER(), doesn't make any sense.
23615 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23617 * collection.cpp: Collection::EmitChanged: don't create a
23618 ChangeEventArgs if we don't need one, and unref it when we're
23621 2008-04-16 Michael Dominic K. <mdk@mdk.am>
23623 * clock.cpp: Add protection against division by 0.
23625 2008-04-16 Michael Dominic K. <mdk@mdk.am>
23628 * animation.h: Don't detach the ClockGroup from parent on the Completed
23629 event. This is now finally no longer needed. While keeping the
23630 clockgroup means little perf difference it makes the whole thing much
23631 more simple to read (there is just one place that explains why Filling
23632 groups are no longer processed after Completed).
23634 2008-04-16 Larry Ewing <lewing@novell.com>
23636 * shape.cpp: tweak the origin tweak again. This should pass
23637 test-shape-path-stretch[34].xaml.
23639 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
23641 Fix for OMPackagingSource.htm
23643 * media.cpp (MediaElement::OnPropertyChanged): If the new source
23644 is empty, Invalidate().
23645 (MediaElement::Render): Render nothing if our downloader is NULL.
23647 2008-04-16 Larry Ewing <lewing@novell.com>
23649 * shape.cpp: don't adjust the origin unless we are adjusting that
23652 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23654 * playlist.cpp: Simplify printf.
23656 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23658 * src.mdp: Updated to (mostly) compile.
23660 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23662 * src.mdp: Updated.
23664 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23666 * typegen/typegen.sh: Updated to work correctly independently of
23667 the current directory when executed.
23669 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23671 * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
23672 collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
23673 downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
23674 type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
23675 uielement.cpp, uielement.h: Initialize our type system statically.
23676 * dependencyobject.cpp: Initialize our type system statically. Comparing a
23677 Kind value to another to determine type hierarchy isn't supported
23678 anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
23680 * src.mdp: Updated.
23681 * type.cpp.in: Removed, no longer required.
23682 * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
23683 determine type hierarchy isn't supported anymore, use Value::Is or
23684 Type::IsSubclassOf, which are doing the right thing.
23686 2008-04-16 Larry Ewing <lewing@novell.com>
23688 * shape.cpp (Shape::ComputeStretchBounds): fix typo.
23690 2008-04-16 Larry Ewing <lewing@novell.com>
23692 * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
23693 that got accidentally lost when fixing other bits.
23695 Fixes regression in StretchAndShapes.xaml.
23697 2008-04-16 Jackson Harper <jackson@ximian.com>
23699 * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
23700 we need to check if the property is Nullable and raise an error if
23703 2008-04-16 Jackson Harper <jackson@ximian.com>
23705 * dependencyobject.h|cpp: SetValue now validates values and
23706 returns false with a GError when invalid values are used.
23707 Subclasses can (and should) override IsValidValue to do their own
23709 * xaml.cpp: Use new SetValue that returns errors.
23711 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
23713 * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
23714 don't have a surface anymore. We're probably executing after the surface
23715 has been destroyed.
23717 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
23719 * src.mdp: Updated to include typegen/*.
23720 * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
23721 Behaviour/Behavior inconsistency.
23723 2008-04-15 Jeffrey Stedfast <fejj@novell.com>
23725 * media.cpp (MediaElement::OnPropertyChanged): Moved the
23726 PositionProperty seek logic into here so we could get rid of
23727 MediaElement::SetValue() overload.
23729 * dependencyobject.h (class DependencyObject): SetValue() is no
23730 longer a virtual method.
23732 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23734 * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
23737 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23739 * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio
23740 into account also when moving back in time.
23742 Fixes the clock34.xaml test.
23744 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23746 * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
23747 calculating it ourselves (instead of using the CalcProgress). Otherwise
23748 we're bypassing the clamping and extending animations/values beyond
23751 This is a real fix for the Popfly #378390 (cannot configure the box in
23752 Popfly). Also fixes the clock34.xaml test-case.
23754 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23756 * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
23757 when previous OR current state is Clock::Active.
23759 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23761 * clock.cpp: Reverting the change that was supposed to fix popfly. It's
23762 actually totally bad. I knew I was too fast with this one.
23764 2008-04-15 Michael Dominic K. <mdk@mdk.am>
23766 * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
23767 configure the box in Popfly). Whoah, that was a nasty one.
23769 2008-04-14 Chris Toshok <toshok@ximian.com>
23771 * runtime.cpp (Surface::Attach): don't clear the up/down dirty
23772 lists here. Calling toplevel->SetSurface(NULL) ensures that all
23773 elements from the previous tree have their dirty elements removed,
23774 so what's left will correspond to 1) things that are about replace
23775 the current hierarchy, or 2) things that haven't actually been
23776 added to the hierarchy yet, but need to be associated with a
23779 * collection.cpp (Collection::Clear): emit
23780 CollectionChangeTypeChanging event before we do the actual change
23781 so the owner can do something with the children if it needs to.
23782 (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
23784 (VisualCollection::Add): remove call to VisualAdded. that
23785 behavior will be handled by Panel in its OnCollectionChanged
23787 (VisualCollection::SetVal): same.
23788 (VisualCollection::Insert): same.
23789 (VisualCollection::Remove): same, but with VisualRemoved.
23790 (VisualCollection::RemoveAt): same.
23791 (VisualCollection::Clear): remove the loop calling VisualRemoved.
23792 this will be handled by the additional
23793 CollectionChangeTypeChanging handling in panel.cpp.
23795 * enums.h (enum CollectionChangeType): add
23796 CollectionChangeTypeChanging.
23798 * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
23799 where the ChildrenProperty is changed, by calling ChildRemoved on
23800 all the old children, and ChildAdded on all the new ones.
23801 (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
23802 (Panel::ChildRemoved): new home for
23803 VisualCollection::VisualRemoved.
23804 (Panel::OnCollectionChanged): add support for
23805 CollectionChangeTypeChanging, so we can remove all children. this
23806 change type is generated by Collection::Clear.
23808 * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
23809 CollectionChangeTypeChanging.
23810 (InkPresenter::OnCollectionChanged): same.
23812 2008-04-14 Jeffrey Stedfast <fejj@novell.com>
23814 * media.cpp (Image::CreateSurface): Robustification of image
23817 2008-04-14 Michael Dominic K. <mdk@mdk.am>
23820 * clock.h: When calculating the new time in DoRepeat use modulo on new
23821 value. Otherwise we're 'losing' a little bit of time on every repeat and
23822 end time doesn't match with parent. This fixes a few more "jags" on
23823 animations ie. clock13.xaml.
23825 2008-04-11 Larry Ewing <lewing@novell.com>
23827 * xaml.cpp (value_from_str): make sure we propogate the error if
23828 color_from_string returns NULL.
23830 * color.cpp (color_from_str): return NULL on invalid color values
23831 rather than simply returning black.
23833 Add an error condition to color_from_string so that we pass the
23834 color tests in ParserErrors test.
23836 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
23838 * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
23840 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
23842 * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
23845 * downloader.cpp (Downloader::Send): Use
23846 TimeManager::InvokeOnMainThread() here like Rolf did in
23847 MediaBase. Simplifies things by not needing a surface.
23849 * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
23850 object as opposed to a DependencyObject.
23852 2008-04-11 Michael Dominic K. <mdk@mdk.am>
23854 * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
23855 we go Filling/Stopped. Without this we never "finish off" our animations
23856 and depending on the framerate we get "jags". Fixes the clock32.xaml
23859 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
23861 * runtime.cpp: Make the dot and eraser cursors const to avoid
23864 2008-04-11 Michael Dominic K. <mdk@mdk.am>
23866 * enums.c: Removing bolox comment and behavior. Always return -1 on
23869 * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
23870 Should make it a little bit easier to spot problems.
23872 2008-04-11 Michael Dominic K. <mdk@mdk.am>
23874 * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
23875 actually recursive (I'm not sure why this was commented out? Toshok?).
23876 Fixes the sprawl end-game animation, #378748.
23878 2008-04-11 Stephane Delcroix <sdelcroix@novell.com>
23880 * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes
23881 bnc #375213. Implemented the MouseCursorNone too.
23883 2008-04-10 Larry Ewing <lewing@novell.com>
23885 * xaml.cpp (start_element): throw an error if there is an xml
23886 attribute on a dependency property.
23888 2008-04-10 Larry Ewing <lewing@novell.com>
23890 * enums.c (enum_from_str): return -1 on an invalid enum string so
23891 that we can catch it as a ParserError fixes
23892 Parser_Invalid_Enum.xaml.
23894 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
23896 * media.cpp: MediaBase::SetSource: no need to get a
23897 Surface/TimeManager instance to do an asynchronous call, just
23898 call TimeManager::InvokeOnMainThread.
23900 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
23902 * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
23903 by the audio thread when the audio finishes.
23905 * media.h, media.cpp: Added MediaElement::AudioFinished, called by
23906 the media player when the audio finishes. Enables us to raise
23907 MediaEnded for audio-only media.
23909 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
23911 * brush.cpp|media.cpp: All SetSource() entry points now take
23912 Downloader objects rather than DependencyObject arguments - the
23913 same as MSDN defines.
23915 * media.cpp (SetSourceInternal): More cleanup /
23916 simplification. Since *::SetSource() already takes steps to be
23917 async, no need to use Downloader::Send() which would introduce
23918 another delay in downloading. It should be plenty safe to call
23919 Downloader::SendNow() in all ::SetSourceInternal()
23920 implementations. Also, we now need to handle NULL downloader which
23921 we get called with if the original SetSource() was passed a NULL
23923 (Image::SetSource): Don't cleanup the surface here, do that in
23924 SetSourceInternal() so that we delay until appropriate.
23925 (Image::SetSourceInternal): If there is a downloader, delay
23926 CleanupSurface() even longer until the new image has been
23928 (Image::DownloaderComplete): Call CleanupSurface() here.
23930 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
23932 * media.cpp: Consolidated Image and MediaElement downloader bits
23933 by putting them into MediaBase.
23935 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
23937 * dependencyobject.cpp: Guard against calling closures which have
23938 been removed during emission of previous events in the same
23939 event list: when we're emitting and a closure is removed, mark
23940 the closure as pending removal, don't call it anymore, and only
23941 remove it when we're finished emitting.
23943 * dependencyobject.h: Guard against calling closures which have
23944 been removed during emission of previous events in the same
23947 2008-04-10 Michael Dominic K. <mdk@mdk.am>
23951 * media.cpp: A straight-forward fix for "gray flashes" in comic and
23952 slideshow (#375275). It's circumventing a change to make downloaders
23953 async for Image. Jeff, maybe you can figure more?
23955 (The commit that broke the the slideshow was r99065, Jeff from
23958 2008-04-10 Michael Dominic K. <mdk@mdk.am>
23960 * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
23961 Showcase and test-shape-path-stretch2.xaml.
23963 2008-04-09 Chris Toshok <toshok@ximian.com>
23965 * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
23966 is invalid, as root_2 might be.
23968 2008-04-09 Chris Toshok <toshok@ximian.com>
23970 [ Fixes some odd behavior in
23971 http://www.thedatafarm.com/silverink/, and also fixes bug
23974 * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
23975 intersect the expose region with our RenderBounds, not our normal
23976 Bounds. This forces us to add the ink presenter to the render
23977 list even when the exposed area is just going to redraw a stroke,
23978 not the actual canvas rectangle. When we go to subtract, however,
23979 we still only subtract the canvas rectangle.
23981 * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
23982 stroke collection's bounds as well as the new stroke collection's
23984 (InkPresenter::OnCollectionChanged): when the collection has
23985 changed, we can't just use Invalidate() since that only
23986 invalidates the canvas bounds. We need to invalidate our render
23987 bounds to get rid of strokes that are outside the canvas bounds.
23988 Also, make sure to also invalidate the new bounds of the stroke
23989 collection (it will usually be empty, but do it anyway).
23990 (InkPresenter::ComputeBounds): add logic to compute the
23991 render_bounds here.
23992 (InkPresenter::GetRenderBounds): new method.
23994 * stylus.h (class InkPresenter): add GetRenderBounds, and also add
23995 an OnPropertyChanged method so we can deal with the stroke
23996 collection being assigned to something else.
23998 * uielement.h (class UIElement): as much as I hate to do this, add
23999 yet another type of bounds (RenderBounds). this is only here for
24000 the special case of the inkpresenter, which has the normal canvas
24001 bounds (the rectangle), the subtree bounds (which unions the
24002 canvas bounds with the bounds of strokes and children) and render
24003 bounds (which unions canvas bounds and stroke bounds.)
24005 2008-04-09 Jeffrey Stedfast <fejj@novell.com>
24007 * dependencyobject.cpp (resolve_property_path): Alias TextElement
24008 to TextBlock to work around some buggy beta versions of Blend.
24010 2008-04-09 Stephane Delcroix <sdelcroix@novell.com>
24012 * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
24013 the logical/shape bounds diff stays the same. It's IMHO as close as we
24014 can go without drawing and recalculating.
24016 2008-04-08 Jeffrey Stedfast <fejj@novell.com>
24018 * xaml.cpp: Cleaned up some of the debugging printf's and and
24019 wrapped them in d() to declutter console spewage when unneeded.
24020 (xaml_create_from_str): ctype functions take int arguments, where
24021 normal char values are in the range 0-255 - in order to work with
24022 non-GNU, need to cast from char to unsigned char.
24024 * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
24025 initializer stuff to be consistent with other classes.
24027 2008-04-08 Sebastien Pouliot <sebastien@ximian.com>
24029 * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks
24032 2008-04-08 Michael Dominic K. <mdk@mdk.am>
24035 * clock.h: SkipToFill the automatic duration clock groups except if
24036 this is the root of all roots clock (the TimeManager's clock). Due to
24037 the idle_hint optimization, we don't process those clocks anyways.
24039 2008-04-08 Michael Dominic K. <mdk@mdk.am>
24044 * dependencyobject.cpp:
24045 * dependencyobject.h: Making sure that each property is animated only by
24046 a single animation at a time (the last one started).
24047 From Silverlight forums:
24049 "Keep in mind Silverlight only supports a single animation on a
24050 property at a time, so if you begin multiple animations on the same
24051 property, the last one will prevail."
24053 This prevents us from overriding Filling/HoldEnd animations by sb's
24056 The implementation is: for each prop we create a hash table (when
24057 needed) which stores objects (keys) + last AnimationStorage attached
24058 (values). When new AnimationStorage is attached to a prop, the last one
24059 is notified to stop updating the target (we don't touch the clock
24060 structure). And then there is some magic to handle destroy's etc.
24062 This fixes PopFly mouse enter/leave problems in the toolbox and the
24063 http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
24064 problems. Fixes #375231, #362363.
24066 2008-04-07 Jeffrey Stedfast <fejj@novell.com>
24068 Fixes needed for Zombomatic
24070 * downloader.cpp (Downloader::GetDownloadedFilePart): When
24071 creating the full pathname for parts we are extracting, convert
24072 everything to lowercase since we need to treat archived filenames
24073 case-insensitively.
24074 (Downloader::GetUnzippedPath): Convert filenames from the zip
24075 archive to lowercase so that it is easier for us to find them
24076 case-insensitively on the filesystem once they are extracted.
24078 2008-04-07 Sebastien Pouliot <sebastien@ximian.com>
24080 * xaml.cpp: Fix parsing properties by ensure they start with the
24081 element name (and not something else). Fix crasher.
24083 2008-04-07 Michael Dominic K. <mdk@mdk.am>
24086 * src/shape.h: Compute the origin point as a separate step after
24087 computing the shape bounds and the stretch bounds. This fixes the
24088 recently broken sprawl.
24090 I think it also fixes other things. Before, given the way code was,
24091 the stretch_bounds would affect the origin *only* in the case of Path,
24092 in other cases (Line, Polygon, Polyline...) they would be ignored.
24094 2008-04-04 Chris Toshok <toshok@ximian.com>
24096 * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method. it
24097 was missing a bunch of tests (basically it was intersecting
24098 infinite lines with ellipses, not segments), and some of the math
24101 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
24103 Intended to fix bug #373462, but something else is preventing that
24104 site from working now...
24106 * media.cpp (MediaElement::SetSourceInternal): PartName is no
24107 longer a const char * argument, which means we take ownership of
24108 the PartName string.
24109 (MediaElement::SetSourceAsyncCallback): New method which is the
24110 async callback for SetSource().
24111 (MediaElement::SetSource): Reinitialize() right away.
24112 (MediaElement::SetSource): Clear out any pending SetSource async
24113 data, replacing it with the new downloader/part name info.
24114 (MediaElement::SetSource): Allow a NULL downloader object but make
24115 sure we don't crash in that case either.
24117 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
24119 * dependencyobject.cpp (resolve_property_path): Avoid crash on
24120 invalid syntax and leaks in other error cases. Fix #377039 (more
24121 test cases coming soon).
24123 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
24125 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
24126 immediately if the array len is 0, prevents a crash accessing
24127 sorted_list->pdata[0] when working backwards in the second
24128 for-loop. Fixes one of the crashes I found while investigating bug
24131 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
24133 * runtime.cpp: Don't crash in strcase_hash if the hashtable
24134 contains NULL values.
24136 2008-04-03 Chris Toshok <toshok@ximian.com>
24138 * runtime.cpp (Surface::InitializeWidget): disable the
24139 GDK_POINTER_MOTION_HINT_MASK stuff for now. we're not passing
24140 tests with it enabled.
24141 (Surface::motion_notify_callback): force the emission of a motion
24144 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
24146 * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
24147 the pencil cursor. Also updated Hand (which should be a
24148 left-pointing hand, not right-pointing) and also Eraser (we need
24149 to make our own icon for this, but I suck at art so I'll pass for
24152 2008-04-03 Michael Dominic K. <mdk@mdk.am>
24155 * shape.h: Calculate the logical extents when computing the shape bounds
24156 and pass them to the ComputeStretchBounds. They're currently not used in
24159 2008-04-03 Michael Dominic K. <mdk@mdk.am>
24161 * shape.cpp: Don't init the stretch matrix to identity on each
24162 Shape::ComputeShapeBounds. We want to be able to call it freely.
24164 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24166 * geometry.cpp: Use the cairo_path_extents to calculate the logical
24167 bounds instead of faking small stroke.
24169 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24172 * shape.h: Adding new parameter (bool logical) to all the
24173 Shape::ComputeShapeBounds functions and overrides. See prev commit for
24174 explanation of what is logical bounds.
24176 Currently all clients use logical == false. Just adding this
24179 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24184 * uielement.cpp: Adding new parameter (bool logical) to all the
24185 Geometry::ComputeBounds functions and overrides. Calculating logical
24186 bounds means calculating bounds without stroke included. Ie. a line
24187 (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
24188 what the stroke is.
24190 Not used right now, will be used in just a few commits (all current
24191 ComputeBounds clients call it will logical == false).
24193 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24195 * shape.cpp: Don't automatically compute the stretch bounds when
24196 computing shape bounds. Instead, compute it as a separate step in
24197 Shape::ComputeBounds.
24199 2008-04-03 Chris Toshok <toshok@ximian.com>
24201 * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
24202 contrary to msdn2, MS *is* indeed emitting this event with
24203 non-null eventargs. it's just an EventArgs object, not a
24206 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
24208 * dependencyobject.cpp (EventObject::Emit): Unref the calldata
24209 even in the "no such event" exception case.
24211 2008-04-03 Larry Ewing <lewing@novell.com>
24213 * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
24214 into appropriate error code.
24216 2008-04-03 Larry Ewing <lewing@novell.com>
24218 * xaml.cpp: Generate errors when trying to set readonly properties.
24220 2008-04-03 Larry Ewing <lewing@novell.com>
24222 * xaml.cpp: make sure we set an error if the property name isn't
24225 * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
24228 2008-04-03 Larry Ewing <lewing@novell.com>
24230 * runtime.cpp (Surface::expose_to_drawable): make sure we take
24231 allocation.x and allocation.y into account when deciding not to
24232 draw. Should fix the disappearing gtksilver widget reported on irc.
24234 2008-04-02 Larry Ewing <lewing@novell.com>
24236 * xaml.cpp: flush character data at the end of property elements
24239 2008-04-02 Jackson Harper <jackson@ximian.com>
24241 * xaml.cpp: Add the element name for this error.
24243 2008-04-02 Chris Toshok <toshok@ximian.com>
24245 * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
24246 (Stroke::HitTestEndcapPoint): same.
24247 (point_gte_line): new method.
24248 (point_lte_line): new method.
24249 (Stroke::HitTestSegmentPoint): use point_gte_line and
24250 point_lte_line to determine if the point is inside the segment.
24251 (global): wrap all spew in DEBUG_HITTEST.
24253 2008-04-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
24255 * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
24258 2008-04-02 Jeffrey Stedfast <fejj@novell.com>
24260 * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
24261 integer type when comparing.
24263 * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
24264 debugging printfs. Fixes bug #375273.
24266 2008-04-01 Chris Toshok <toshok@ximian.com>
24268 * xaml.cpp: back out the SetSurface call removal.
24270 * dependencyobject.cpp (EventObject::unref): instead,
24271 SetSurface(NULL) here before we delete the object.
24273 2008-04-01 Chris Toshok <toshok@ximian.com>
24275 * control.cpp (Control::InitializeFromXaml): make sure to call
24276 SetSurface(NULL) on the old real_object since we're detaching it
24277 from the tree. Call SetSurface on ourselves (really, should just
24278 be the real_object, right?) before calling the real_object methods
24279 that would cause dirty stuff to happen.
24281 * xaml.cpp (create_custom_element): don't call SetSurface here, it
24282 will cause problems if there's a parser error (since elements
24283 can/will be on the surface's dirty list after they're destroyed.)
24284 (default_create_element_instance): same.
24286 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24288 * playlist.cpp, playlist.h: A lot of fixes according to the tests.
24289 * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
24290 specify where in the stream we start and (playlists can specify a
24291 starting point which isn't in the beginning), and set the duration from
24292 the playlist (if the playlist has it).
24293 * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
24294 false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
24295 if the recursive playlist couldn't be replaced.
24297 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24299 * media.h: Added MediaElement::GetPlaylist.
24301 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24303 * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
24304 Remove Type::NPOBJ, it's not needed.
24306 2008-04-01 Michael Dominic K. <mdk@mdk.am>
24308 * animation.cpp: Since now the clocks are synced we don't need to
24309 recursively check the states in the teardown on completed.
24311 2008-04-01 Michael Dominic K. <mdk@mdk.am>
24314 * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
24315 manually to Stopped but not touching the state of children).
24317 We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
24318 set, we don't tick the ClockGroup no matter what the state is. Idle_hint
24319 is set when all children of ClockGroup have state != Active (ie. are
24320 filling). This can be seen as "optimization" -- not to dumbly process
24321 filling clocks which keep setting same value all the time (it creates
24322 insane recursion ie. in Showcase making it unusable). Silverlight seems
24323 to do something very similiar.
24325 Before this commit a same effect was achieved by the said "desyncing" --
24326 forcing the ClockGroup to Stopped. This approach however is a bit more
24329 2008-04-01 Michael Dominic K. <mdk@mdk.am>
24331 * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
24333 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24335 * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
24337 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24339 * value.cpp: Remove a few warnings which might give false positives now.
24341 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24343 * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
24344 we're being unreffed on the main thread, if not, call unref_delayed.
24346 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24348 * runtime.cpp, runtime.h: Added a Surface::InMainThread.
24350 2008-04-01 Fernando Herrera <fherrera@novell.com>
24352 * media.cpp: Remove the request position function when aborting the
24355 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
24357 * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
24358 MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
24359 being called from the destructor, and if so, null out the element field
24360 of the MediaPlayer, so that we don't access a destructed media element.
24361 Add an async version of MediaPlayer::EnqueueFrames, so that the audio
24362 threads can request more data in a thread-safe manner.
24364 2008-04-01 Fernando Herrera <fherrera@novell.com>
24367 * pipeline.h: Support for live mms streams, that have packet_count as
24368 0 and return false for CanSeekToPts.
24370 2008-03-31 Chris Toshok <toshok@ximian.com>
24372 * namescope.h, namescope.cpp: make no semblance of having a
24373 superior namescope implementation (where they get transported
24374 around with the subtree they're attached to when it's
24375 removed/re-added to the hierarchy.) Instead follow MS's broken
24376 implementation where temporary namescopes are completely removed
24377 when merged into another one.
24379 * collection.h, collection.cpp (Collection::MergeNames): factor
24380 out some common code from Add, Insert, and SetVal. Also, deal with
24381 the fact that merging namescopes now really adds all the names to
24382 the parent namescope, so clear the old namescope.
24383 (Collection::SetVal): don't just unregister the old toplevel name,
24384 but all the names in the subtree.
24385 (Collection::Remove): same.
24386 (Collection::Clear): same.
24387 (Collection::UnregisterAllNamesRootedAt): override DO's method,
24388 recursing into all our children.
24389 (Collection::RegisterAllNamesRootedAt): same.
24390 (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
24391 UIElement::OnLoaded is called again, and <BeginStoryboard>
24392 elements restart when the subtree is added to the hierarchy again.
24394 * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
24395 override and forward onto real_object.
24396 (Control::RegisterAllNamesRootedAt): same.
24398 * dependencyobject.cpp (DependencyObject::ClearValue): add a
24399 parameter to allow us to specify *not* to notify listeners of the
24400 property change. we do this with the NameScope property, which
24401 noone should be listening too. It was causing a tremendous
24402 performance hit when merging a lot of namescopes (as we do in
24403 inkStylusPointCount.htm)
24404 (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
24405 removed from the hierarchy, we need to unregister all the names
24407 (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
24408 added to the hierarchy, if it doesn't have a temporary
24409 namescope (in which case we just merge it).
24411 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
24413 * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
24414 MemorySource owns the memory or not (if it will be freed upon
24415 destruction or not).
24417 2008-03-31 Jeffrey Stedfast <fejj@novell.com>
24419 * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
24420 for-loop would only use every other point as a starting point for
24421 a segment. E.g. if you had points a, b, c, d and e - the code only
24422 checked segments ab, cd, and e when it should have been checking
24423 ab, bc, cd, and de.
24425 2008-03-31 Fernando Herrera <fherrera@novell.com>
24427 * downloader.cpp: Check if aborted before cheking for requested
24430 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
24432 * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
24434 * playlist.cpp: Updated according to pipeline changes.
24435 * mplayer.h: Fix SetState to not overwrite current bits, only current state.
24436 * media.h, media.cpp: Rework buffering progress to use the available time of
24437 media available (pts) instead of doing some funny math on file
24439 * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
24441 2008-03-31 Michael Dominic K. <mdk@mdk.am>
24443 * animation.cpp: Don't Stop the Storyboard root_clock before begining
24444 the Storyboard again, just silently tear it down.
24446 Calling Stop resets the property values to base which is something we
24447 don't want. When Begin () is called on Sb in SL, the last animated
24450 2008-03-31 Michael Dominic K. <mdk@mdk.am>
24453 * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
24454 works similar to Teardown but doesn't destroy the clock/animation
24455 hierarchy. We need this hierarchy to ie. reset prop values to base when
24456 Storyboard::Stop is called manually.
24458 When Storyboard is completed, call DetachClockGroupFromParent (if not
24459 Teardown). Otherwise the Storyboard will ghostly change state with parent
24462 2008-03-31 Michael Dominic K. <mdk@mdk.am>
24464 * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
24465 to check for NULL and report stopped == true when both ClockGroup state
24466 is Stopped and all children are Stopped.
24468 To be honest, this never currently reports Stopped == true as we do
24469 intentional state desync when storyboard reaches end -- setting the
24470 ClockGroup state to Stopped but keeping the children in Active/Filling.
24471 This *has* to go away.
24473 2008-03-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
24475 * src.mdp: Updated.
24477 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
24479 * utils.cpp (TextStream::Read): Better handling of iconv() failure
24482 2008-03-28 Chris Toshok <toshok@ximian.com>
24484 * animation.cpp, animation.h: remove Storyboard::FindSurface -
24485 EventObject::GetSurface() always returns the right thing.
24486 Override SetSurface to check whether we're being detached from or
24487 attached to a surface, and pause or resume the clock in response.
24488 This fixes some issues in storyboard_EnterLeaveSemantics.
24490 2008-03-28 Chris Toshok <toshok@ximian.com>
24492 * dependencyobject.h,
24493 dependencyobject.cpp (DependencyObject::SetSurface): new method,
24494 set the surface for all our DependencyObject subclassed property
24497 * collection.h, collection.cpp (Collection::Add): SetSurface work.
24498 (Collection::Insert): same.
24499 (Collection::SetVal): same.
24500 (Collection::Remove): same.
24501 (Collection::RemoveAt): same.
24502 (Collection::Clear): same.
24503 (Collection::SetSurface): new method, iterate over all children
24504 setting the surface.
24505 (VisualCollection): remove surface logic here.
24506 (VisualCollection::VisualAdded): same.
24507 (VisualCollection::VisualRemoved): same.
24509 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24511 * mplayer.cpp: Clear all queues after a seek has completed.
24513 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
24515 * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
24517 * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
24518 RemoveDir() rename.
24519 (create_unzipdir): Updated for MakeTempDir() rename.
24521 * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
24522 be more consistent with moonlight API naming convensions.
24523 (RemoveDir): Renamed from moon_rmdir().
24524 (CopyFileTo): Renamed from moon_copy_file()
24526 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24528 * debug.cpp: Fix warning.
24530 2008-03-28 Michael Dominic K. <mdk@mdk.am>
24532 * clock.cpp: Fixing the clock repeat for duration-based
24535 Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
24536 passing now (same behavior as in SL).
24538 2008-03-28 Michael Dominic K. <mdk@mdk.am>
24540 * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
24541 the bound decrease the repeat_count no matter what (if auto-reversed or
24542 not). This makes the auto-reversed storyboard work.
24544 Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
24547 2008-03-28 Michael Dominic K. <mdk@mdk.am>
24549 * animation.cpp: Teardown the storyboard in Completed only if the root
24550 clock is stopped AND all the children are stopped too. After teardown we
24551 loose the ability to reset-back the values and Completed is
24552 fired always, even if the clock is filling (a filling clock should reset
24555 This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
24556 the popular methodology of beginning a filling Storyboard on MouseEnter
24557 and stopping it on MouseLeave.
24559 2008-03-27 Michael Dominic K. <mdk@mdk.am>
24561 * runtime.cpp: Ignore the enter/leave crossing events coming as a
24562 result of grab/press started/finished.
24564 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24566 * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
24567 MediaPlayer changes.
24568 * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
24569 private, and add public accessors when required. Remove all boolean
24570 fields and add a single bit/state field with its corresponding enum and
24571 public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
24572 no longer used. Removed unused defines. Made video and audio structures
24573 nested inside MediaPlayer instead of pointers (and queue inside
24574 video/audio), avoids pointer accesses and additional malloc/frees, since
24575 they were always created anyways. Don't seek to anywhere in Stop if
24576 we're stopping because we're closing, since it may cause crashes if
24577 we're closing because the MediaElement is being destructed (it may cause
24578 the MediaElement to be resurrected). Made public methods private
24581 2008-03-28 Fernando Herrera <fherrera@novell.com>
24583 * asf/asf.cpp: Use the pts == 0 optimization before trying to
24587 * downloader.h: Add functions to allow request a remote postition.
24592 * pipeline.h: Implement SeekToPts for mms:// sources.
24594 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24596 * dependencyobject.h: Detect an unrecoverable error condition with
24597 refcounting (reffing an object with refcount of 0), and abort instead of
24598 crashing randomly and insecurely later on.
24600 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24602 * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
24604 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
24606 * downloader.cpp (Downloader::GetResponseText): Use the new
24609 * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
24612 * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
24613 sure to exit the loop ;-)
24615 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
24617 * xaml.cpp (xaml_create_from_file): Use the new TextStream class
24618 instead of doing things the hard way. Might be more performant,
24619 definitely won't malloc/free nearly as much. Also fixed a bug
24620 where leading lwsp might be larger than our read buffer.
24622 * utils.cpp (TextStream): New class for reading text input
24623 streams, converting them to UTF-8 as they are read.
24625 * downloader.cpp (Downloader::Send): Handle the case where the
24626 attached surface is NULL.
24627 (Downloader::GetResponseText): Handle zero-length files. Also,
24628 nul-terminate the returned buffer (which is now a char* rather
24629 than a void*) since it is clear that the javascript expects to be
24630 able to use this value as a string buffer.
24632 2008-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
24634 * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
24635 requested to play audio. Don't hold the lock when polling.
24637 2008-03-26 Jeffrey Stedfast <fejj@novell.com>
24639 * downloader.cpp (Downloader::SendInternal): New method that is
24640 basically the same as the old ::Send().
24641 (Downloader::Send): Queue the SendInternal() call via
24642 TimeManager's TickCall API.
24644 2008-03-26 Chris Toshok <toshok@ximian.com>
24646 * dependencyobject.h, dependencyobject.cpp (class EventObject):
24647 add RemoveMatchingHandlers variants that let you pass in a
24648 predicate to test event handlers with.
24650 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24652 * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
24653 changes. Added a MemoryStream.
24655 * media.cpp: Updated according to API changes.
24657 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24659 * mplayer.cpp, mplayer.h: Add a new state to the audio:
24660 WaitingForData, in which case we don't poll on that audio
24661 node (since the hardware will just tell us it's ready to recieve
24662 data). Fixes audio using 100% cpu after when it runs out of
24663 data (either because of network hiccup or the stream finished).
24665 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24667 * pipeline.cpp, mplayer.cpp, pipeline.h: Made
24668 IMediaStream::selected private and add accessors.
24670 2008-03-26 Stephane Delcroix <sdelcroix@novell.com>
24673 * shape.cpp: set the dash caps for all the shapes, draw start/end caps
24674 on line and polylines.
24676 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24678 * mplayer.cpp: Remove unused fields.
24680 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24682 * debug.cpp: Correctly compute base addresses of libraries, and use a
24683 thread-safe version of strtok.
24685 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24687 * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
24688 - it's now necessary to explicitly disable it in order to get rid of it
24689 instead of relying on a default flag to have the right value in order to
24690 get it. Makes video work with mopen again.
24692 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24694 * pipeline.cpp: Fix a crash.
24696 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24698 * mplayer.cpp: Remove Instance (), it's redundant.
24699 * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
24700 everything in the audio player with one semaphore, it simplifies things
24701 and removes a couple of problems helgrind found.
24702 * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
24703 audio player as well. Use delayed unreffing in destructors which may be
24704 called on worker threads.
24706 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
24708 * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
24709 * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
24710 thread-safe and making it thread-safe isn't worth it. Also use a pthread
24711 mutex instead of a glib mutex, since helgrind reports a lot of false
24712 positives for glib mutexes. Hold the mutex for the smallest amount of
24713 time possible, making it unnecessary to use a recursive mutex.
24715 2008-03-26 Michael Dominic K. <mdk@mdk.am>
24717 * shape.cpp: Reverting the clip changes, it was bolox.
24719 2008-03-25 Jeffrey Stedfast <fejj@novell.com>
24721 * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
24722 the assert - it was only needed during implementation to make sure
24723 the bsearch worked correctly.
24724 (Mp3FrameReader::Seek): Same.
24726 2008-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
24728 * media.cpp: Don't access any TimeManager instance from another thread, just
24729 call the static TimeManager::InvokeOnMainThread.
24731 2008-03-25 Michael Dominic K. <mdk@mdk.am>
24733 * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
24734 if Width/Height was specified. Fixes a bogus warning about infinity
24737 2008-03-25 Michael Dominic K. <mdk@mdk.am>
24739 * src/shape.cpp: When setting the clipping for the shape also include
24740 the transformations coming from stretching. This fixes
24741 test-shape-line-stretch3 test and the missing stripes on Silverlight
24744 2008-03-24 Chris Toshok <toshok@ximian.com>
24746 * runtime.h (class Surface): add
24747 Surface::PropagateDirtyFlagToChildren.
24749 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
24750 duplicated code out of ProcessDownDirtyElements.
24752 2008-03-24 Chris Toshok <toshok@ximian.com>
24754 * panel.cpp (Panel::FrontToBack): remove the tree walking
24755 code (where we walked up the hierarchy looking for cases where we
24756 shouldn't subtract.) Instead, we always subtract if the local
24757 state says we can. Instead of forcing all leaf elements to walk
24758 up to their parent panel, we assume they'll operate on local state
24759 as well, and give them a copy of the region to subtract their
24760 bounds from, instead of the real region. We are sneaky.
24762 * uielement.cpp (UIElement::FrontToBack): Operate on our local
24763 state only, no walking up the tree.
24765 2008-03-24 Jeffrey Stedfast <fejj@novell.com>
24767 * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
24768 was seemingly getting layer 1 and layer 2 backwards.
24769 (mpeg_frame_length): Seems like we are never supposed to add 2
24770 bytes for 16bit crc?
24772 * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
24773 then don't bother applying kerning. Fixes 2 cases in
24774 LineBreakClasses.htm
24775 (TextLayout::LayoutWrap): Disable breaking after a
24776 G_UNICODE_BREAK_AFTER if we can break before the word as this
24777 seems to fix the last test case in LineBreakBasic1.htm
24778 (TextLayout::LayoutWrap): Reverted a fix that introduced a
24779 regression but didn't fix any known test cases.
24781 2008-03-21 Michael Dominic K. <mdk@mdk.am>
24783 * src/runtime.cpp: When calling gdk_window_get_pointer in
24784 motion_notify_ to pop more hints actually use the results as they're
24785 more valid than x,y in the event passed. Without doing so, we're not
24786 getting the last mouse coords.
24788 Fixes the nasty problem that MouseEnter/Leave is not called once in a
24791 2008-03-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
24793 * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
24794 MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
24795 with EventObject::GetSurface.
24797 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
24799 * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
24802 * text.cpp (deobfuscate_font): New helper function used by
24803 TextBlock and Glyphs.
24804 (TextBlock::DownloaderComplete): Check for obfuscated fonts.
24805 (Glyphs::DownloaderComplete): Same.
24807 * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
24808 GUID from a string.
24809 (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
24810 (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
24811 since we no longer get passed zip files. Instead of extracting
24812 fonts from a zip archive, we now index the fonts in the
24813 directory (if they haven't already been indexed) and then try to
24814 find the best matching font from the indexed fonts.
24815 (IndexFontDirectory): New function to index all fonts in a
24816 directory (and all subdirs).
24817 (TextFont::TextFont): Changed for other API changes.
24819 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
24821 * downloader.cpp (Downloader::IsDeobfuscated)
24822 (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
24823 Some new methods for replacing the original downloaded file with
24824 another tmp file that will need to be unlinked when the downloader
24825 is destroyed or a new file is requested.
24827 * utils.cpp (moon_copy_file): New convenience function.
24829 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
24831 * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
24832 and unzipped state variables. Get rid of part_hash, no longer
24834 (Downloader::CleanupUnzipDir): New method to cleanup the files
24835 extracted from any zip files we downloaded.
24836 (Downloader): Call CleanupUnzipDir ().
24837 (Downloader::GetDownloadedFile): New method that gets the original
24838 untouched downloaded file path.
24839 (Downloader::DownloadedFileIsZipped): New method to check to see
24840 if the downloaded file is a zip archive.
24841 (Downloader::GetDownloadedFilePart): A new method that replaces
24842 the old GetResponseFile() API, behaves the same as the old API.
24843 (Downloader::GetUnzippedPath): New method to get the unzip
24844 directory path (and unzip the downloaded file if it hasn't already
24846 (Downloader::Open): Cleanup any extracted zip files.
24848 * utils.cpp (moon_rmdir): New convenience function.
24850 2008-03-20 Larry Ewing <lewing@novell.com>
24852 * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
24853 the surface first so that the changes to the properties cause
24856 2008-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
24858 * src.mdp: Added new files.
24860 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
24862 * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
24864 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
24866 * pipeline.h: Added two more error conditions.
24868 2008-03-19 Jeffrey Stedfast <fejj@novell.com>
24870 * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
24871 caching glyphs. Try to take full advantage of the pre-allocated
24872 glyphs array before clobbering previously loaded glyphs.
24874 2008-03-19 Michael Dominic K. <mdk@mdk.am>
24876 * src/dependencyobject.cpp: Making the prop resolving a bit more
24877 gracefull (smart) in case of common mistakes.
24879 Solves test-crash-gracefull-prop-resolving.xaml.
24881 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
24883 * pipeline.cpp: We need to unlock the mutex before joining the
24884 thread. Fixes a dead-lock.
24886 2008-03-19 Geoff Norton <gnorton@novell.com>
24888 * yuv-converter.cpp: Use xmm0 to store a load value to avoid a
24891 2008-03-19 Geoff Norton <gnorton@novell.com>
24893 * yuv-converter.cpp: More 64-bit fixes
24895 2008-03-19 Geoff Norton <gnorton@novell.com>
24897 * yuv-converter.cpp: Fix the test/cmp on x86-64
24899 2008-03-18 Geoff Norton <gnorton@novell.com>
24901 * yuv-converter.cpp: Fold RESTORE_COLOR_MODIFIERS into
24902 CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
24903 gcc. The aligned load/store version of CALC_COLOR_MODIFIERS was
24904 clobbering (x)mm3 (green coefficient) when processing the high order
24905 pels. I've reordered the method to remove some useless load/calc
24906 patterns that were there simply for readability and fixed the
24909 2008-03-18 Jeffrey Stedfast <fejj@novell.com>
24911 * font.cpp (TextFontDescription::CreatePattern): Always return the
24913 (TextFont::Load): No longer takes a fromFile argument.
24914 (TextFont::TextFont): Cache using the original pattern (which is
24915 what we really wanted to do originally, but were caching the
24916 "closest-match" pattern before which was wrong).
24917 (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
24918 FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
24919 wrapper API that is unnecessary.
24920 (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
24922 2008-03-18 Geoff Norton <gnorton@novell.com>
24924 * yuv-converter.cpp: 768bits != 768bytes. Implement prefetching the
24925 cache lines for the Y plane.
24927 2008-03-18 Andrew Jorgensen <ajorgensen@novell.com>
24929 * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
24930 * plugin-ffmpeg.h: Fix conditional swscale inclusion
24932 2008-03-18 Michael Dominic K. <mdk@mdk.am>
24935 * animation.h: Adding a new virtual method GetValueKind to Animation
24936 that returns the kind/type of values that given animation generates
24937 (doubles, points, etc.).
24939 Modyfying the HookupStorage to check if the animation type matches the
24940 type that the animated property expects. If it doesn't, bail out with a
24941 helpfull warning in the style of:
24943 "Ellipse.Fill property value type is 'Brush' but animation type is
24946 This fixes a crash in test-crash-color-anim-on-solid.xaml and all
24947 crashes where we try to animate ie. a color property using doubles.
24949 2008-03-18 Michael Dominic K. <mdk@mdk.am>
24951 * animation.cpp: Even more smoothing for KeySpline.
24953 2008-03-18 Michael Dominic K. <mdk@mdk.am>
24955 * dependencyobject.cpp: Enabling back the inheritance test for property
24956 resolving but only when dealing with non-attached properties.
24958 2008-03-17 Geoff Norton <gnorton@novell.com>
24961 * pipeline-ffmpeg.cpp:
24962 * pipeline-ffmpeg.h:
24963 * swscale-converter.cpp:
24964 * swscale-converter.h: Refactor the swscale based yuv2rgb converter
24965 out to a seperate file so it can be included optionally in the build.
24967 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
24969 * mplayer.cpp: Show error message, not only error number, upon thread
24972 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
24974 * playlist.cpp, playlist.h: Add a way to determine if the playlist was
24975 created to play a single file, or if it was created from an asx file
24978 2008-03-17 Chris Toshok <toshok@ximian.com>
24980 * dependencyobject.cpp (EventObject::EventObject): reorder things
24983 2008-03-17 Geoff Norton <gnorton@novell.com>
24985 * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
24986 for locals. Use posix_memalign and share the instance for the
24987 lifespan of the converter.
24989 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
24991 * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
24992 index argument, apparently FreeType2 always set face->face_index
24993 to 0 for these type fonts, so don't rely on it being accurate.
24994 (FontPack::CacheFileInfo): Pass the index value as an argument to
24995 FontPackFileFace's ctor.
24996 (TextFont::TextFont): Do hash lookups based on the matched
24997 pattern, not the original pattern passed in.
24999 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
25001 * text.h: Added #include "layout.h"
25003 * font.cpp: Removed font.cpp's layout logic which has been
25004 rewritten in layout.cpp.
25005 (TextFont::HasGlyph): It seems that Silverlight may wrap text
25006 differently depending on whether the glyph is in the font?
25008 * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
25010 2008-03-17 Geoff Norton <gnorton@novell.com>
25012 * yuv-converter.cpp: Ensure that our pointer alignment checks are
25015 2008-03-17 Michael Dominic K. <mdk@mdk.am>
25017 * animation.cpp: Interpolate linearly between keyspline values. This
25018 fixes the jags in test-animation-slow-keyspline.xaml.
25020 2008-03-17 Michael Dominic K. <mdk@mdk.am>
25022 * animation.cpp: Fixes to the way we generate the KeySpline values to be
25023 more smooth an precise.
25025 2008-03-17 Larry Ewing <lewing@novell.com>
25027 * runtime.cpp: go ahead and invalidate the toplevel before
25028 cleaning everything up. remove the disconnect call in
25029 DestroyWidget, all the handlers should be ok with getting called
25030 on fullscreen or the normal widget.
25032 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25034 * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
25035 line breaking logic.
25037 2008-03-14 Geoff Norton <gnorton@novell.com>
25039 * yuv-converter.cpp: Remove some dead code.
25041 2008-03-14 Geoff Norton <gnorton@novell.com>
25043 * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte
25044 bounary. Each pel will expand to 4 bytes. Since we process 16
25045 pels at a time in SSE2 we need 64 output bytes per iteration.
25047 * yuv-converter.cpp: Remove the rest of the unaligned move/stores
25049 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
25051 * xaml.cpp: (flush_char_data) free data inside GString since the
25052 Value constructed around it creates it's own copy.
25054 2008-03-14 Geoff Norton <gnorton@novell.com>
25056 * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
25057 to get a 16byte alignment for SSE2.
25058 * yuv-converter.cpp: Remove most of our unaligned load/stores.
25060 2008-03-14 Larry Ewing <lewing@novell.com>
25064 * eventargs.h, enventargs.cpp:
25065 * type.h, type.cpp: make EventArgs a subclass of DependencyObject
25066 and all that entails. Still need to look over the properties.
25068 * runtime.cpp, runtime.h: expose EmitError for now.
25070 2008-03-14 Larry Ewing <lewing@novell.com>
25072 * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
25073 with a a 16bit alignment for the yuv converter.
25075 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
25077 * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's
25078 own copy of the message.
25080 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25082 * font.cpp (TextRun::TextRun): Can't drop non-printable chars
25083 because soft-hyphen is apparently non-printable.
25085 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25087 * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
25088 happen now if the glyph does not exist in the font).
25089 (Glyphs::Render): Same.
25091 * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
25092 which takes a unichar and index. This is now the main
25093 implementation that the other GetGlyphInfo() and
25094 GetGlyphInfoByIndex() use. The glyph table is now indexed by index
25095 rather than unichar.
25097 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25099 * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
25100 without a specified index, these are ok.
25102 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25104 * brush.cpp: In ImageBrush, if the image has not been downloaded
25105 yet, draw nothing like SL does -- instead of the grayish shadow.
25107 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25109 * dependencyobject.cpp: Check the types of objects when
25110 resolving_property_paths and some more verbosity to the error
25111 reporting. Now test-crash-non-existing-animation-target-prop3
25112 fails with the proper warning.
25114 Also, terminate first on first error found.
25116 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25118 * dependencyobject.cpp: Even more verbose error reporting in the
25119 resolve_property_path ().
25121 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25123 * animation.cpp: Making the warning report proper error when can't
25124 resolve property on object. Now we're getting:
25127 (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
25128 on object ball, which has type Ellipse!"
25130 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25132 * animation.cpp: Check correctly if we have object and property
25133 before trying to hookup storage.
25135 Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
25136 but the warning message is still incorrect:
25138 "No object named ball!"
25140 The object named "ball" exists but it doesn't have the requested
25143 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25145 * animation.cpp: Changing few printf's to g_warnings.
25147 2008-03-14 Stephane Delcroix <sdelcroix@novell.com>
25149 * shape.cpp: Deal with different [start|end|dash] caps for lines
25152 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
25154 * mplayer.cpp: Comment out printf.
25156 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
25158 * mplayer.cpp: AudioNode::Play: property calculate the delay between the
25159 play position in the hardware and the pts we just sent to alsa, and
25160 subtract it from that pts.
25162 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
25164 * clock.cpp: use a monotonic clock if available to avoid issues with
25165 the system time changing.
25167 2008-03-13 Jeffrey Stedfast <fejj@novell.com>
25169 * layout.cpp (TextRun::TextRun): Don't drop non-printable
25170 chars... somehow soft-hyphen (0xAD) is non-printable according to
25171 glib and so breaks the LineBreakBasic1.htm test.
25172 (TextLayout::LayoutNoWrap): Keep appending words to the line until
25173 a line ends beyond max_width, we don't care where it begins (it
25174 could begin way beyond max_width for all we care).
25176 2008-03-13 Chris Toshok <toshok@ximian.com>
25178 * text.cpp (~Glyphs): don't unref the fill, since we don't take a
25181 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25183 * mplayer.cpp: Make this build on SLED until I find a proper workaround.
25185 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25187 * media.cpp: Update according to MediaPlayer changes.
25189 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25191 * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
25192 thread. Fixes #326902.
25194 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25196 * Makefile.am: Set our G_LOG_DOMAIN.
25198 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25200 * xaml.cpp: default_create_element_instance: Set the surface as soon as
25203 2008-03-13 Michael Dominic K. <mdk@mdk.am>
25205 * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
25206 behavior. When getting the keyframe for time additionally crawl back (if
25207 needed) to find the last non-null keyframe and non-null previous
25208 keyframe. By doing so we silently ignore the frames without values set
25209 and don't crash on nullable types.
25211 Fixes the crash in AnimationMatrix2.html/xaml and in the
25212 test-animation-null-keyframe.xaml test.
25214 Remving the XXX warnings about nullabled types from file since they
25215 don't apply anymore.
25217 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25219 * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
25220 Visual, we're already storing the surface in the EventObject.
25221 * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
25222 and comment out the warning, since with the current code it's entirely
25223 possible to unref a dependecyobject with no surface.
25225 2008-03-13 Stephane Delcroix <sdelcroix@novell.com>
25227 * brush.cpp: compute relative transform as it's done in SL. We used to
25228 derelativize transform to match the absolute ones. Now we map the brush
25229 to a 1x1 square, apply the transform, and unmap back. It simplify the
25230 computation a lot too. Fixes bnc #354892 and a bad gradient in
25233 2008-03-12 Chris Toshok <toshok@ximian.com>
25235 * media.cpp (expand_rgb_to_argb): use a different codepath if the
25236 rowstride isn't padded out to be divisible by 4 (or else we read
25237 off the end by a byte).
25239 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25241 * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
25243 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25245 * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
25246 * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
25247 pipeline correctly removes registered infos upon shutdown, so if we're
25248 initialized again we should also register again.
25249 * runtime.cpp: Call Media::Shutdown do shut down the media threads before
25250 doing anything else.
25252 2008-03-12 Jeffrey Stedfast <fejj@novell.com>
25254 * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
25256 * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
25257 TextRun's, if the Run contains \n's, break the text into
25258 non-linebreak and linebreak TextRun elements. Allows the
25259 TextLayout::Layout() logic to be simplified considerably.
25261 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25263 * dependencyobject.cpp: DependencyObject: Initialize our surface field to
25266 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25268 * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
25269 reporting so that the errors can easily be bubbled up the pipeline. Add
25270 a 'selected' field to IMediaStream, whether the media player is using
25271 that stream or not.
25272 * error.h: Add a MediaErrorEventArgs class.
25274 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25276 * pipeline.cpp: Propagate the surface from the media element to the media.
25278 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25280 * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
25281 IMediaStream, indicates whether the stream is being played or not.
25283 2008-03-12 Sebastien Pouliot <sebastien@ximian.com>
25285 * dependencyobject.cpp: Add NULL check in method
25286 RemovePropertyChangeListener since a bad XAML input can cause a
25287 NULL entry in the list.
25289 2008-03-12 Michael Dominic K. <mdk@mdk.am>
25293 * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
25295 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
25297 * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
25298 don't crash, print an error message. Dup all strings put into
25299 namespace_map, and free them all upon its destruction.
25301 2008-03-11 Larry Ewing <lewing@novell.com>
25303 * collection.cpp (VisualCollection::VisualAdded): make sure we set
25304 the surface as the first step, dirty processing depends on it.
25305 Fixes OM_RemoveClearRemoveAt.htm regression.
25307 2008-03-11 Larry Ewing <lewing@novell.com>
25310 * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
25311 and Left when we are toplevel so that we can recompute our
25314 * uielement.cpp: if we don't have a parent call GetTransformFor on
25315 ourself so that Top and Left are taken into account on toplevel
25316 canvases. Fixes test-canvas-toplevel.xaml
25318 2008-03-11 Chris Toshok <toshok@ximian.com>
25320 * clock.h, clock.cpp: a few changes, the most important
25321 being (ifdefed for now) code to put the timemanager to sleep when
25322 it's not needed for animations, rendering, or tick calls. To do
25323 this we need a couple of changes to the clock code. 1) propagate
25324 the time_manager out to all clocks, so we can force it to tick the
25325 clock hierarchy the first time whenever a storyboard is started.
25326 2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
25327 in need of another tick." Do the same for the tick call stuff,
25328 where the bool return value means "we have more tick calls
25329 pending." Also, add a couple of methods to the
25330 TimeManager (NeedRedraw, NeedClockTick) which will start up the
25331 timemanager if it's asleep, and set the proper flag so it'll do
25332 the right work on the next tick.
25335 * uielement.cpp: notify the timemanager that we have a redraw to
25338 * runtime.cpp (Surface::realized_callback): tell the time manager
25339 to redraw us to get the process moving.
25341 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
25343 * xaml.cpp: Work around the fact that it's not always safe to
25344 call some expat functions, like XML_GetCurrentLineNumber, if the
25345 parsing failed early.
25347 2008-03-11 Chris Toshok <toshok@ximian.com>
25349 * namescope.h, namescope.cpp: switch from reffing the objects to
25350 using the DestroyedEvent. Otherwise our toplevel canvas has a ref
25351 cycle with its namescope. Also, short circuit out if we're
25352 registering the same object twice. keeps us from having too many
25353 DestroyedEvents (since RemoveHandler only removes one).
25355 * dependencyobject.h, dependencyobject.cpp: move
25356 GetSurface/SetSurface to EventObject, and add unref_delayed as a
25357 method. If the event object has a surface associated with it, add
25358 it to the surface's pending list of unrefs. otherwise warn us and
25359 add it to the global list. The warnings should be fixed as the
25360 global list really should go away.
25362 Also, before we free a value, make sure to remove our handler and
25365 Also, get rid of OBJECT_TRACK_ID. use an environment variable for
25366 this. So if you compile with OBJECT_TRACKING on, nothing new
25367 happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
25368 variable to the id of the object you want to track. Makes the
25369 turnaround time a little quicker.
25371 shift some things around in the header file while I'm making this
25374 * runtime.h, runtime.cpp: move some more methods to the .cpp from
25375 the .h, and also add the per-surface pending unrefs list. This is
25376 basically a c&p of the global list from dependency.cpp.
25378 * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
25379 using EventObject's.
25381 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
25383 * xaml.cpp: Add NULL check in dependency_object_add_child since
25384 parent->parent->item may be NULL in malformed XAML files.
25386 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25388 * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
25389 EstimatePtsPosition and remove the estimate parameter, it's never used.
25391 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25393 * runtime.cpp: No need to scream in printfs.
25395 2008-03-11 Jeffrey Stedfast <fejj@novell.com>
25397 * font.cpp (TextLayout::Layout): More fixes, this is getting
25400 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
25402 * xaml.cpp: Avoid crashing if the PML does not start with a
25403 M(ove) instruction.
25405 2008-03-11 Michael Dominic K. <mdk@mdk.am>
25407 * src/: Moving implementations from .h to .cpp, leaving only
25408 setters/getters + simple constructors in .h.
25410 2008-03-11 Larry Ewing <lewing@novell.com>
25412 * xaml.cpp (dependency_object_set_property): throw an error if we
25413 get here without a DependencyObject. Fixes
25414 test-property-parsing.xaml
25416 2008-03-10 Larry Ewing <lewing@novell.com>
25419 * uielement.cpp: add more checks to the parent tree.
25421 2008-03-10 Chris Toshok <toshok@ximian.com>
25423 * dependencyobject.cpp (~DependencyObject): use
25424 g_hash_table_foreach_remove, so the dtor of one value can't access
25425 an already destroyed DO from another value.
25427 2008-03-10 Chris Toshok <toshok@ximian.com>
25429 * namescope.cpp: don't explicitly unref the object when removing
25430 it. instead use base_unref as the value-dtor for the GHashTable.
25431 This will cause unrefs when the hash table is destroyed in the
25432 dtor (a case we were missing before.)
25434 * collection.h, collection.cpp (class Collection): factor out the
25435 body of Collection::Clear into a non-virtual method that we can
25436 call from the dtor.
25438 2008-03-10 Larry Ewing <lewing@novell.com>
25441 * panel.cpp: make sure we don't subtract the region unless non of
25442 our anscestors have a slip mask. This should be implemented in a
25443 more efficient way.
25445 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25447 * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
25449 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25451 * dependencyobject.h, dependencyobject.cpp: Enable object counting when
25453 * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
25454 * pipeline.cpp: Remove printfs.
25456 2008-03-10 Larry Ewing <lewing@novell.com>
25459 * geometry.cpp: make IsBuilt check for actual path data as well
25460 then use it everywhere we need it. Invalidate the path if the
25461 figures change. Fixes test-transform-clip.htm.
25463 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25465 * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
25467 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25469 * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
25472 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25474 * media.cpp: Update according to pipeline changes. TryOpen: our
25475 downloaded_file field may change when we call MediaOpened, so save a
25476 local copy before calling MediaOpened. Unref our playlist upon
25478 * mplayer.cpp: Update according to changes in the pipeline.
25479 * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
25480 rest aren't used. Make the remaining method take the stream as a
25481 parameter, and the resulting frame will be put in the closure. Also
25482 handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
25483 case just try again with the next frame. Make MediaWork ref/unref the
25484 fields that can be ref counted.
25486 2008-03-10 Chris Toshok <toshok@ximian.com>
25488 [ Fixes bug #368460 ]
25489 * collection.cpp (Collection::SetVal): make sure to unregister the
25490 name of the object(s) we remove from the collection.
25491 (Collection::Remove): same.
25492 (Collection::RemoveAt): same.
25493 (Collection::Clear): same.
25495 * namescope.cpp (NameScope::RegisterName): ref the object.
25496 (NameScope::UnregisterName): unref the object.
25498 2008-03-10 Jeffrey Stedfast <fejj@novell.com>
25500 * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
25501 Silverlights TextWrapping="Wrap" bug where it doesn't ever break
25504 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
25506 * src.mdp: Updated.
25508 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
25510 * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
25511 * runtime.cpp: Use GetRefCount, not refcount.
25513 2008-03-10 Chris Toshok <toshok@ximian.com>
25515 * runtime.h, runtime.cpp: add surface_get_time_manager.
25517 * downloader.h, downloader.cpp: add downloader_get_surface.
25519 2008-03-10 Michael Dominic K. <mdk@mdk.am>
25523 * shape.cpp: Making the shape-caching a runtime parameter
25524 (shapecache=yes). Turned off right now.
25526 2008-03-10 Michael Dominic K. <mdk@mdk.am>
25528 * shape.cpp: Tiny refactoring to the surface-size calculation code.
25530 2008-03-10 Michael Dominic K. <mdk@mdk.am>
25533 * shape.cpp: Adding functionality to limit the amount of caching
25534 happening on one surface. Currently set to ~6mb.
25536 2008-03-09 Larry Ewing <lewing@novell.com>
25538 * mplayer.cpp: fix another place that used the wrong stride.
25540 2008-03-09 Geoff Norton <gnorton@novell.com>
25542 * yuv-converter.cpp: Make sure we emms after finishing sse/mmx
25545 2008-03-09 Geoff Norton <gnorton@novell.com>
25547 * yuv-converter.cpp: Detect the CPU features at runtime. We
25548 should now be able to distribute a 32-bit SSE2/MMX build to
25549 non SSE2/MMX machines
25551 2008-03-09 Geoff Norton <gnorton@novell.com>
25553 * yuv-converter.cpp: Implement runtime fallbacks in the Convert
25554 function (TODO: Still need to runtime detect SSE2/MMX)
25556 2008-03-09 Larry Ewing <lewing@novell.com>
25558 * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
25560 2008-03-09 Larry Ewing <lewing@novell.com>
25562 * mplayer.cpp (MediaPlayer::Open): use the proper stride
25563 calculation functions.
25565 2008-03-08 Geoff Norton <gnorton@novell.com>
25567 * yuv-converter.cpp: Implement a SSE2 version of the YUV2RGB
25568 codepath along with some code cleanup. Still some more cleanup
25569 to do for runtime detection of CPU features.
25571 2008-03-08 Geoff Norton <gnorton@novell.com>
25573 * yuv-converter.cpp: Fix some erroneous math. U' != U.
25574 These coefficients are far more sane now and our lum change is
25575 reflected properly.
25577 2008-03-08 Chris Toshok <toshok@ximian.com>
25579 * clock.cpp (TimeManager::SourceTick): larry gets credit for
25580 spotting this problem and suggesting the fix. remove the
25581 hysteresis code, and *always* set a new timeout, based on what our
25582 idea of the timeout and the amount of time we spent rendering the
25583 previous frame. This smooths things out immensely, removes (for
25584 me) the animation stutters induced by audio in sprawl, and results
25585 in fewer dropped frames.
25587 2008-03-08 Geoff Norton <gnorton@novell.com>
25589 * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
25590 and b was pulling the wrong l/h value.
25592 2008-03-08 Chris Toshok <toshok@ximian.com>
25594 * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
25595 accessing dob->refcount.
25596 (Value::CreateUnref): same.
25598 * dependencyobject.h, dependency.cpp (class EventObject): reorder
25599 this class definition so that we don't have multiple
25600 public/protected/private areas. confusing as hell :) Also, move
25601 the implementations of the non-performance critical things into
25602 the .cpp file, as they were making the .h rather cluttered (ctor,
25603 dtor, weak ref/unref.) Lastly, make almost everything private
25604 instead of public (most importantly the refcount.)
25606 * debug.h, debug.cpp: random code cleanup. we don't need to be
25607 concerned with adding some additional stack methods to the plugin
25608 in the DEBUG case, so go ahead and just use DEBUG here instead of
25611 2008-03-08 Chris Toshok <toshok@ximian.com>
25613 * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
25614 extern guint32 moonlight_flags.
25616 * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
25617 converter, otherwise use ffmpeg.
25619 * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
25620 flags, and (my god) put the extern moonlight_flags here.
25622 * runtime.cpp: add yuv converter options. use
25623 MOONLIGHT_OVERRIDES=converter=yuv to enable it. default is
25624 "converter=ffmpeg".
25626 2008-03-08 Geoff Norton <gnorton@novell.com>
25628 * yuv-converter.cpp: Clear the mmx state when we're done
25629 processing. Fixes most problems on x86_32.
25631 2008-03-08 Geoff Norton <gnorton@novell.com>
25633 * pipeline.cpp: Disable YUV converter, its crashing on x86_32
25636 2008-03-08 Geoff Norton <gnorton@novell.com>
25638 * pipeline-ffmpeg.cpp: Dont register YUV converter here.
25639 * pipeline.cpp: Register YUV converter here.
25641 2008-03-08 Geoff Norton <gnorton@novell.com>
25643 * yuv-converter.cpp: Remove some code duplication and refactor
25644 to support register starved implementations.
25646 2008-03-08 Geoff Norton <gnorton@novell.com>
25648 * Makefile.am: Add yuv-converter.cpp to the build
25649 * yuv-conveter.*: Our YUV2RGB 420P converter. Replaces
25651 * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
25653 2008-03-08 Chris Toshok <toshok@ximian.com>
25655 * clock.h, clock.cpp, animation.cpp: a few clock related changes.
25657 1. Revert the change that uses "forward" to tell if we're moving
25658 forward or not. This isn't the only indicator, as a parent clock
25659 might be ticking backward, so we really do need to use "our_delta"
25661 2. Also, we need to not clamp the time of the clock (on either
25662 end) when we're filling, as if the parent's duration is longer
25663 than ours and they autoreverse, there needs to be some padding in
25664 the reverse direction before we start again.
25666 3. Only call ComputeBeginTime() on a newly created clock if the
25667 timeline has a begin time specified. Otherwise, use
25668 BeginOnTick/GetBeginOnTick to make it begin on the next tick.
25669 This fixes the chess animation breakage. The problem was caused
25670 by us computing the begin time immediately in Storyboard::Begin,
25671 which would calculate the clock's begin time relative to the
25672 *previous* tick. on the next tick, the clock was almost always at
25673 1.0 progress, which caused the animations to skip directly to the
25676 2008-03-08 Chris Toshok <toshok@ximian.com>
25678 * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
25679 dirty.cpp, dependencyobject.cpp: more assert removal. we can't
25680 assert in a plugin (even if people are running a debug build it's
25681 not exactly nice to bring down their browser.)
25683 2008-03-07 Chris Toshok <toshok@ximian.com>
25685 * value.cpp (Value::CreateUnrefPtr): don't assert here.
25686 (Value::CreateUnref): same.
25688 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
25690 * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
25691 it's not initialized, print a warning and re-initialize it.
25693 2008-03-08 Fernando Herrera <fherrera@novell.com>
25697 * playlist.h: Add support for ASX2 playlist files returned by
25698 mediaservers when requesting a mmsh file over plain http. Fixes
25699 http://channel9.msdn.com.
25701 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
25703 * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
25704 case-insensitively.
25706 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
25708 * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
25709 derived classes protected.
25710 * media.cpp: Update according to pipeline changes. TryOpen: our
25711 downloaded_file field may change when we call MediaOpened, so save a
25712 local copy before calling MediaOpened.
25714 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
25716 * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
25717 * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
25718 TimeManager instance to add the timeout to.
25720 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
25722 * downloader.cpp: Fix access to Status from JScript.
25724 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
25726 * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
25729 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
25731 * brush.cpp: Fix default value for ColorInterpolationMode (js
25733 * parsertest.cpp: Adapt to API change.
25734 * xaml.cpp|h: Change value_from_str[_with_typename] to return a
25735 bool since NULL can be a valid Value in some cases (e.g. empty
25736 stuff that should not reset the DO default values).
25738 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
25740 * mplayer.cpp: Add a null check before accessing any time managers.
25742 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
25744 * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
25745 accessing the field.
25746 * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
25747 the field. Update according to pipeline changes.
25748 * mplayer.cpp, mplayer.h: Update according to pipeline changes.
25749 * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
25750 can be ref counted. Make MediaClosure more intelligent by ref/unreffing
25751 the context and media fields. All variations of MediaWork has a closure,
25752 so move the closure field out of the union. This simplifies
25753 Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
25754 not cause any reads/seeks which may block. Remove SetQueueCallback, the
25755 request takes a closure now. Implement an ASXDemuxer to read ASX files.
25756 * sizes.cpp: Updated.
25757 * playlist.h, playlist.cpp: First part of the new playlist support.
25759 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
25761 * dependencyobject.cpp: Make the output in EventObject::Track print
25762 atomically. Really avoids a lot of confusion if several threads are
25763 printfing at the same time.
25765 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
25767 * debug.cpp: Add a couple of null checks.
25769 2008-03-06 Jeffrey Stedfast <fejj@novell.com>
25771 * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
25772 (TextLayout::Layout): Don't include trailing lwsp in the line
25773 width calculation unless it is the last line.
25774 (TextLayout::Layout): Don't include trailing empty lines in the
25775 height calculation.
25777 2008-03-06 Chris Toshok <toshok@ximian.com>
25779 * clock.h, clock.cpp: some changes to make TimeManager a
25780 per-surface item, instead of a singleton/global. The time manager
25781 creates a root clock group, just like Surface used to, which is
25782 the parent of all storyboards for a surface.
25784 * dirty.h, dirty.cpp: remove the method prototypes and globals -
25785 switch everything to be Surface:: methods.
25787 * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
25788 for the root clock, and create a TimeManager instead. Also, add
25789 the dirty methods/fields to Surface, even though the
25790 implementation still lives in dirty.cpp. Also, call
25791 toplevel->SetSurface(NULL) early in our dtor so that elements can
25792 react before, e.g., the time manager has been destroyed.
25794 * media.h, media.cpp: use the surface's TimeManager instead of a
25795 global one. Also override SetSurface so we can tell if we're
25796 losing access to it, and remove our timeout accordingly.
25798 * mplayer.cpp: use the media element's TimeManager.
25800 * visual.h, visual.cpp: add GetTimeManager() method, which just
25801 does GetSurface()->GetTimeManager().
25803 * dependencyobject.cpp (base_unref_delayed): as much as I hate to
25804 do this, use a g_idle instead of a tick call here, since we have
25805 no access to the surface.
25807 * animation.cpp (Storyboard::Begin): the surface no longer has the
25808 root clock group, the surface's TimeManager does.
25810 * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
25813 * uielement.h, uielement.cpp: translate global dirty calls into
25814 surface calls, and override SetSurface to remove ourselves from
25815 the dirty list if we're losing our surface.
25817 * eventargs.cpp: translate global dirty calls into surface calls.
25819 2008-03-06 Michael Dominic K. <mdk@mdk.am>
25821 * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
25822 child clocks. Othewise children always get a small delta and keep
25823 going beyond the parent Duration bounds. Fixes the contrained
25824 storyboard examples.
25826 Also making the forward/backward ComputeNewTime behavior depend on
25827 'forward' instead of out_delta (which can be 0 if hitting bounds).
25829 2008-03-06 Sebastien Pouliot <sebastien@ximian.com>
25831 * transform.cpp: Fix Matrix default values to match identity
25832 matrix (and fix one js unit test).
25834 2008-03-05 Larry Ewing <lewing@novell.com>
25836 * shape.cpp: drop the code that checks stretch when building the
25837 paths for polyline and polygon. Fix the condition for translation.
25839 2008-03-05 Larry Ewing <lewing@novell.com>
25842 * shape.cpp: refactor the stretch code slightly and fix the
25843 original stretch tests (that passed the harness but are clearly
25846 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
25848 * media.h: Made destructors in objects deriving from EventObject protected,
25849 preventing 'delete obj' and stack-allocation for these objects.
25851 * playlist.cpp: Can't delete downloaders anymore, unref it.
25853 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
25855 * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
25856 dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
25857 namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
25858 trigger.h, uielement.h, visual.h: Made destructors in objects deriving
25859 from EventObject protected, preventing 'delete obj' and stack-allocation
25861 * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
25862 * dirty.h: Added header.
25864 2008-03-05 Chris Toshok <toshok@ximian.com>
25866 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
25867 front-to-back rendering the default.
25869 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
25871 * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
25872 trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
25873 media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
25874 runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
25875 calldata instead of a gpointer.
25876 * error.h: Added EventArgs, a base class for all *EventArgs.
25877 * collection.h: Make ChangeEventArgs inherit from EventArgs.
25878 * uielement.cpp: Create all *EventArgs on the heap and simply the code a
25880 * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
25881 * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
25882 *EventArgs. Added MarkerReachedEventArgs.
25883 * brush.cpp: Updated event handling to take an EventArgs* calldata instead
25884 of a gpointer. ~ImageBrush: don't delete, unref.
25886 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
25888 * value.cpp: Fix warning.
25890 2008-03-05 Larry Ewing <lewing@novell.com>
25892 * shape.cpp: Fix line, polyline and polygon to apply stretches
25893 properly (modulo pesimistic shape bounds bugs). Mostly fixes
25894 test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
25895 and test-shape-polygon-stretch2.xaml.
25897 * shape.h: move stretch transform out of Path and into Shape.
25900 * stylus.cpp: include the strokes in the subtree bounds so that we
25901 will get invalidations and update bounds when the collection
25902 changes. There are still potential bounds issues point changes,
25903 those are being looked into. Fixes invalidation issues in
25904 test-inkpresenter-position and test-inkpresenter-scale.
25906 2008-03-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
25908 * xaml.cpp: Add a null at the end of the namespace array.
25910 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
25912 * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
25913 white space into a simple space.
25914 (TextLayout::Layout): Treat embedded \n's as LineBreaks
25915 (TextLayout::Layout): When calculating the width of a line that
25916 ends in a space, don't include the width of the space char -
25917 Silverlight doesn't seem to.
25918 (TextLayout::Layout): Don't pad the height. Don't pad the width
25919 either, altho it seems like a padding of +2.0 is about right but
25920 ONLY if the text is in a canvas? See OMTextInline.htm's
25921 actualWidth/Height measurements as well as the out-of-tree
25924 * xaml.cpp (char_data_handler): Always create the GString cdata,
25925 we need to note leading lwsp which the old implementation didn't.
25926 (flush_char_data): Try to emulate Silverlight's chug/chomp
25927 behavior more closely.
25929 2008-03-05 Chris Toshok <toshok@ximian.com>
25931 * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
25932 to panel's OnSubPropertyChanged if we don't handle it.
25934 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
25935 make sure we don't call this method with NULL args. Also, remove
25936 larry's g_warning (which wasn't the case, i tested with sprawl!),
25937 and also remove the check for matching property/parent type for
25938 attached properties. this will break controls.
25940 * transform.h, transform.cpp: it used to be that logical parents
25941 of children could rely on OnSubPropertyChanged being invoked for
25942 any property change. This is no longer the case - the only
25943 instance where it still happens is if there's an attached property
25944 involved. All other cases have to use OnCollectionChanged. So,
25945 switch OnSubPropertyChanged to OnCollectionChanged here.
25947 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
25949 * text.cpp (TextBlock::OnCollectionChanged): We need to update
25950 bounds/text even if element_args is NULL (because adding/removing
25951 an item still changes our text).
25952 (Inline::OnPropertyChanged): Use args->new_value.
25954 2008-03-05 Chris Toshok <toshok@ximian.com>
25956 * transform.h, transform.cpp: remove
25957 TransformCollection::OnSubPropertyChanged. it was gumming up the
25960 2008-03-05 Larry Ewing <lewing@novell.com>
25962 * shape.cpp: disable the shape caching code for now unless
25963 USE_OPT_SHAPE_SURFACE_CACHING=1.
25965 2008-03-05 Michael Dominic K. <mdk@mdk.am>
25970 * xaml.cpp: Taking out all the enum->str (and vice versa) code from
25971 xaml.cpp and putting it into a new file -> enum.c + some utilities.
25973 The enum<->str code is not specific to xaml and is usefull from plugin as
25976 2008-03-05 Stephane Delcroix <sdelcroix@novell.com>
25978 * media.cpp: close the pixbuf_loader to load the small images too.
25980 2008-03-04 Chris Toshok <toshok@ximian.com>
25982 * runtime.cpp (Surface::expose_to_drawable): re-enable the
25983 clearing of the cairo surface, but only if we have a
25984 widget (i.e. not in the windowless plugin case.) Should fix
25985 translucent desklets without breaking the plugin.
25987 2008-03-04 Chris Toshok <toshok@ximian.com>
25989 [ rather large change, reworking much of the property change event
25990 system to be a little smaller api surface-wise, and also cleaning
25991 up uses of it to remove some of the accumulated cruft that we'd
25992 developed over the past 10 months.]
25994 * dependencyobject.h, dependencyobject.cpp: A few key changes:
25996 1. Attach -> AddPropertyChangeListener
25997 Detach -> RemovePropertyChangeListener
25998 NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
26000 This was done to remove the confusion between "attached"
26001 properties and our use of the word "attach" to mean "listen for
26002 property changes". Attached properties are those which
26003 implicitly notify the parent when they're changed.
26005 OnChildPropertyChanged is gone. Canvas (the only user of it)
26006 now uses OnSubPropertyChanged to deal with child property
26009 2. *PropertyChanged methods take a
26010 structure (PropertyChangedEventArgs) that contains the
26011 DependencyProperty, as well as the old and new values of it.
26012 This was to remove the need for almost every
26013 OnPropertyChangedMethod to immediately call GetValue on the
26014 property. Passing the old value requires changing the
26015 current_values hash to not have a value destructor, so we have
26016 to manually delete values again.
26018 3. Reordered the args for
26019 AddPropertyChangeListener/RemovePropertyChangeListener so that
26020 the listener comes first and the second arg defaults to NULL.
26021 Cleans up a bit of the use of this method globally.
26023 * animation.h, animation.cpp: track OnSubPropertyChanged changes.
26025 * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
26026 LinearGradientBrush::OnPropertyChanged,
26027 RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
26029 also lots of changes to use args->new_value instead of calling
26030 GetValue(property).
26032 Clear up confusion regarding the meaning of the property passed to
26033 AddPropertyChangeListener.
26035 * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
26036 OnSubPropertyChanged.
26038 * collection.h, collection.cpp (Node::Node): don't add parent as a
26039 listener for every property change here. We handle this
26040 specifically (and automatically) in
26041 DependencyObject::NotifyListenersOfPropertyChange, but only for
26042 attached properties.
26043 (Node::~Node): don't remove the listener here either.
26045 lots of tracking the DO api changes here too.
26047 * control.h, control.cpp: track On*PropertyChanged changes.
26049 * font.cpp: fix some warnings
26051 * frameworkelement.h, frameworkelement.cpp: track
26052 On*PropertyChanged changes.
26054 * geometry.h, geometry.cpp: track On*PropertyChanged changes.
26056 * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
26057 lot of the empty blocks here - there's nothing to do for these
26058 properties, so we might as well not bloat the code. Also, use
26059 new_value when we can.
26060 (Image::DownloaderComplete): add a (I hope) suitably nasty comment
26061 about calling brush->OnPropertyChanged directly. code shouldn't
26062 do this, we should figure out if we can just set the property, and
26063 if so, do that. otherwise something else is broken.
26064 (Image::OnPropertyChanged): use new_value where we can.
26066 * panel.h, panel.cpp: remove the cached background field. It
26067 wasn't used except to Attach/ref + Detach/unref it, and that's
26068 handled automatically by the DependencyProperty machinery.
26069 Otherwise just track the On*PropertyChanged api changes.
26071 * shape.h, shape.cpp: similarly, we don't need to ref/attach our
26072 cached stroke and fill fields. They're populated for us (and
26073 ref'ed/unref'ed as needed), so we don't need anything additional
26074 here. Use new_value instead of GetValue in OnPropertyChanged.
26075 Also, factor out some redundant code from all the subclass
26076 OnPropertyChanged methods that was nearly the same as the
26077 Shape::OnPropertyChanged code for it.
26079 * stylus.h, stylus.cpp: On*PropertyChanged api changes.
26081 * text.h, text.cpp: mostly On*PropertyChanged api changes, and
26082 lots of using new_value instead of GetValue, but also get rid of
26083 the cached TextBlock foreground instance field. It's easy enough
26084 to fetch when we need it in the ::Paint method, and the
26085 dependencyobject stuff already refs and attaches to it.
26087 * transform.h, transform.cpp: lots of On*PropertyChanged api
26088 changes, and using new_value instead of GetValue.
26090 * uielement.h, uielement.cpp: remove the cached opacityMask
26091 field (it wasn't used except for attach/detach, which is handled
26092 for us.) The usual On*PropertyChanged changes as well as using
26093 new_value instead of GetValue.
26095 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
26097 * xaml.cpp (style_simulations_map): There's only one
26098 StyleSimulation value, and that is None.
26100 * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
26101 width and the text is not part of the first run on a line, break
26102 at the beginning of the Run. This seems to be what Silverlight
26103 does in OMTextInline.htm.
26105 2008-03-04 Larry Ewing <lewing@novell.com>
26107 * eventargs.cpp: update the dirty list before trying calculating
26108 relative locations.
26110 * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
26111 here so that our hit testing has up to date bounds.
26114 * dirty.h: remove the prototypes for up/down since it isn't safe
26115 to split the up/down passes.
26117 * src/uielement.cpp: remove dirty processing.
26119 2008-03-04 Stephane Delcroix <sdelcroix@novell.com>
26121 * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
26122 create the pixbuf from a file, allowing partial rendering of broken
26123 imagefiles, like in Image.htm
26125 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
26127 * text.cpp (Inline::GetDefaultValue): Implemented.
26129 2008-03-04 Michael Dominic K. <mdk@mdk.am>
26131 * src/uielement.cpp: When calling uielement_transform_point, make sure our
26132 transforms are up-to-date (not dirty).
26134 Since we're updating the transform matrices only in the expose (dirty)
26135 callback it can happen that two ie. mouse events arrive before we get to
26136 the expose. If the first mouse event invalidated the transform and the
26137 second one relies on the transform (ie. tries to obtain relative mouse
26138 position) it'd get bogus values since the transform has not been
26141 Fixes the drag & drop behaviour in SL ink journal (the selection tool).
26144 2008-03-04 Michael Dominic K. <mdk@mdk.am>
26147 * src/dirty.h: Splitting the process_dirty_elements () into two individual
26148 chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
26149 process_dirty_elements () now calls both.
26151 The point here is that we need to process down dirty elements (call
26152 process_down_dirty_elements ()) from other contextes as well.
26154 2008-03-03 Larry Ewing <lewing@novell.com>
26156 * uielement.cpp: Call FullInvalidate when clip changes so that
26157 our subtree bounds are updated and invalidated. Make sure we
26158 don't reset the forced invalidate flag.
26160 * dirty.cpp: invalidate subtree bounds on forced invalidations.
26161 Fixes test-clip-invalid-update.htm.
26163 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26165 * text.cpp (TextBlock::GetText): New method to generate a string
26166 representing the Text property from the inlines.
26167 (TextBlock::SetText): New method (split out from the old
26168 ::SetValue code) to parse the newly set text string into a list of
26169 Inlines and update out InlinesProperty if changed. Returns whether
26170 or not the inlines property changed.
26171 (TextBlock::OnPropertyChanged): Call SetText() to update out
26172 Inlines if the TextProperty value was changed by an outside
26173 source. If the InlinesProperty was changed by an outside source,
26174 update our TextProperty.
26175 (TextBlock::OnCollectionChanged): Update our TextProperty if an
26176 Inline was added or removed or if a Run element had its
26177 TextProperty changed.
26179 2008-03-03 Chris Toshok <toshok@ximian.com>
26181 * animation.cpp: plug a memory leak in the 3
26182 UsingKeyFrames::GetCurrentValue methods.
26184 2008-03-03 Chris Toshok <toshok@ximian.com>
26186 * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
26187 return a cairo_matrix_t instead of a pointer to the
26188 internal (mutable) field, and update its only use.
26190 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26192 * media.cpp (media_element_get_audio_stream_index): Fixed to
26193 handle nullable value.
26194 (media_element_set_audio_stream_index): Same.
26195 (media_init): Register the AudioStreamIndex property as being
26197 (MediaElement::Reinitialize): Set the CurrentStateProperty to
26200 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26202 * media.cpp (media_init): Register AudioStreamCount,
26203 BufferingProgress, CanPause, CanSeek, CurrentState,
26204 NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
26205 as being read-only.
26207 * text.cpp (text_init): Register ActualWidth and ActualHeight
26208 properties as ReadOnly.
26210 * transform.cpp (Matrix::GetValue): Removed.
26211 (Matrix::SetValue): Removed.
26212 (Matrix::OnPropertyChanged): Implemented.
26214 2008-03-01 Larry Ewing <lewing@novell.com>
26216 * shape.cpp (Shape::DoDraw): refactor slightly.
26218 * geometry.cpp: fix extents calculation when there is only a fill
26219 on the shape. Fixes test-path-stretch-fill-extents.xaml.
26221 * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
26222 negative widths or heights have no bounds.
26223 (Shape::DoDraw): Silence warning.
26225 2008-02-29 Larry Ewing <lewing@novell.com>
26227 * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
26228 match StretchAndShapes.xaml.
26230 * collection.cpp (VisualCollection::Remove): don't fire
26231 VisualRemoved unless we are going to actually remove the item.
26232 Fixes OM_RemoveClearRemoveAt.htm.
26234 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
26236 * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
26237 the z_sorted array before sorting so that we can be sure the end
26238 result will be a stable sort.
26239 (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
26240 because we need to take index into account. Instead, grow our
26241 array and call ResortByZIndex().
26243 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
26245 * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
26246 an even more fun memory corruption bug.
26248 2008-02-29 Larry Ewing <lewing@novell.com>
26251 src/frameworkelement.cpp:
26258 src/uielement.cpp: Fix Rect::Transform, replace all occurances of
26259 bounding_rect_for_transformed_rect with Rect::Transform.
26261 2008-02-29 Larry Ewing <lewing@novell.com>
26263 * geometry.cpp: apply transform to all bounds calculations. Fixes
26264 test-geometry-bounds.xaml.
26266 2008-02-29 Larry Ewing <lewing@novell.com>
26268 * geometry.cpp: Make sure geometry groups draw their children
26269 rather than just copying the paths so that local transforms are
26272 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
26274 * text.cpp (TextBlock::GetValue): Fixed memory leak.
26276 * media.cpp (MediaElement::GetValue): Fixed compile warning.
26278 * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
26279 rather than calling inline_get_*() which use GetValue().
26281 * font.cpp (TextFont::TextFont): Don't let the underline thickness
26284 * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
26286 (DependencyObject::GetValue): Simplified.
26287 (DependencyObject::GetDefaultValue): New method to get the default
26288 value for a property (now used by GetValue()).
26290 2008-02-29 Larry Ewing <lewing@novell.com>
26292 * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
26293 transform into account when computing bounds. Fixes
26294 CGeometry_AddToRenderList.xaml
26296 2008-02-29 Larry Ewing <lewing@novell.com>
26299 * shape.cpp: export calc_line_bounds.
26301 * geometry.cpp: use calc_line_bounds from shape.h. Fixes bounds
26302 problems on Animation_TargetingAndHandoff.xaml.
26304 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
26306 * pipeline.cpp: Add a missing const modifier.
26308 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
26310 * mplayer.cpp: Use the first streams found in the media, not the last.
26312 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
26314 * stylus.cpp: if there's an outline, draw a line of at least 2px.
26316 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
26318 * brush.cpp: No longer ignore out-of-bounds offest in
26319 SetupGradient. Add the bounds stop with linearinterpolation
26320 between the nearest stop and the outofbounds one. Handle the
26321 degenerated case with only outofbounds stops.
26323 2008-02-28 Michael Dominic K. <mdk@mdk.am>
26325 * shape.cpp: Commenting a left-over debug g_warning.
26327 Additionally adding a protection against NULL in cache-size reporting (as
26328 experienced by rolf). However, if GetSurface () returns NULL in the Render
26329 callback... I guess we're screwed anyways.
26331 2008-02-28 Michael Dominic K. <mdk@mdk.am>
26334 * xaml.h: Adding convert_property_value_to_enum_str function to
26335 check/convert if the value for the given property can be represented by an
26338 It would be nicer to mover all the enums tables/resolving to a separate
26339 place in future instead of gluing it to xaml.cpp.
26341 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
26343 * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
26346 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
26348 * text.cpp (Glyphs::Render): Use horiBearingX for the first char
26349 in the Glyphs string just like we do for TextBlock rendering.
26351 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
26353 Fixes the last remaining issue in the TextRegressions.htm test.
26355 * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
26356 non-autogenerated <Run>'s.
26358 * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
26359 from the TextBlock's Text property as being auto-generated.
26361 2008-02-27 Larry Ewing <lewing@novell.com>
26363 * shape.cpp: change the shape surface cache to cache in device
26364 coordinates and rework the candidate restrictions to reject
26365 huge shapes and allow scaled caches.
26367 2008-02-27 Larry Ewing <lewing@novell.com>
26369 * shape.cpp: center the filled image within the new bounds.
26371 2008-02-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
26373 * media.h, media.cpp: When a media is opened, seek to the current
26376 * value.cpp: ToString: Return 'NULL' if we're null.
26378 2008-02-27 Michael Dominic K. <mdk@mdk.am>
26380 * src/animation.cpp: When storyboard is completed, Teardown the clocks
26381 only if we're realling stopping (not holding). Fixes the
26382 StoryBoard_ModifyProperty test.
26384 2008-02-27 Michael Dominic K. <mdk@mdk.am>
26386 * clock.cpp: Make sure we actually hit the our_delta < 0 code
26387 path. Fixes the AutoReversed/Repeated animations.
26389 2008-02-27 Michael Dominic K. <mdk@mdk.am>
26391 * shape.cpp: More cases to invalidate (free mem) of the surface cache.
26393 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
26395 * font.cpp (TextFont::TextFont): Precalculate underline position
26396 and thickness. Also, we need to adjust the position based on 1/2
26397 the underline thickness.
26398 (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
26399 (TextLayout::RenderLine): Same.
26401 2008-02-26 Chris Toshok <toshok@ximian.com>
26403 * runtime.cpp (runtime_cairo_create): take the visual too, so the
26404 plugin can send ours in - we can't rely on the pixmap having a
26405 visual associated with it, because it's initialized with the
26406 _foreign api which doesn't fill in the colormap. yay.
26407 (Surface::Surface): if we're windowless don't create the widget.
26408 also, init render/render_data and invalidate/invalidate_data to
26410 (Surface::ConnectEvents): exit early if we're windowless.
26411 (Surface::Invalidate): call through the invalidate function if
26412 there is one. otherwise, default behavior (if we have a widget).
26413 (Surface::Paint): exit early if no toplevel.
26414 (Surface::render_cb): call through the render function if there is
26416 (Surface::expose_to_drawable): this is most of the guts of
26417 expose_callback, changed to handle the case where we're already
26418 drawing to the backbuffer (in the windowless case) and therefore
26419 don't need the temporary pixmap. Also, commented out some code
26420 that clears the contents - do we actually need this? The comment
26421 for it is enormous...
26422 (Surface::expose_event_callback): just call expose_to_drawable
26423 with the widget's window.
26425 * runtime.h (class Surface): we need to make the gtk callbacks
26426 public since the plugin will be invoking them directly. Also,
26427 switch the event methods to returning bools, and add a new method
26428 called expose_to_drawable, so the plugin can direct rendering to a
26429 pixmap in the windowless case.
26431 * uielement.h, uielement.cpp: change all the Emit* methods to
26434 * dependencyobject.h, dependency.cpp: make EventObject::Emit
26435 return true if there were handlers for the event, and false
26438 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
26440 * text.cpp (TextBlock::TextBlock): Removed the useless
26441 text_block_set_text() call. This was just a broken hack meant to
26442 do what MDK's previous commit fixed the right way.
26444 * font.cpp (TextFont::UnderlinePosition): Fixed to take font
26445 y_scale metrics into consideration.
26446 (TextFont::UnderlineThickness): Same.
26448 2008-02-26 Michael Dominic K. <mdk@mdk.am>
26450 * src/text.cpp: TextBlock when constructed by default has an empty
26451 Inlines collection instead of NULL. Along with all the previous
26452 commits fixes the OM_CreateAddInsert.htm test.
26454 2008-02-26 Michael Dominic K. <mdk@mdk.am>
26456 * src/collection.cpp: Don't allow collection insert at negative
26459 2008-02-26 Michael Dominic K. <mdk@mdk.am>
26461 * src/collection.cpp: Don't add the object to the collection if it
26462 already contains the object (return -1 instead).
26464 2008-02-26 Michael Dominic K. <mdk@mdk.am>
26466 * src/animation.cpp:
26468 * src/collection.cpp:
26469 * src/collection.h: The "Add" method of collections returns int (index of
26470 the element added), not bool. As explained in:
26472 http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
26474 2008-02-25 Jeffrey Stedfast <fejj@novell.com>
26476 * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
26477 through FontConfig, we need to parse the font's family name to
26478 extract styleistic info so we can do proper font name matching and
26479 style matching (e.g. "Myriad Pro Cond Black Italic" should match
26480 "Myriad Pro, Condensed Black Italic").
26482 2008-02-25 Chris Toshok <toshok@ximian.com>
26484 * runtime.h, runtime.cpp: s/drawing_area/widget and
26485 s/DrawingArea/Widget
26489 2008-02-25 Michael Dominic K. <mdk@mdk.am>
26491 * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
26492 can be called on the element to give it a hint that it should free it's
26493 cache for the time being.
26495 * src/collection.cpp:
26497 * src/panel.h: Forward CacheInvalidateHint to all children.
26500 * src/shape.h: Destroy the surface and path cache when hinted.
26502 In total improves our memory usage with surface/path caching, ie. in the
26505 2008-02-22 Michael Dominic K. <mdk@mdk.am>
26510 * src/shape.h: Adding functionality to report the cache size usage. By
26511 default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on.
26513 2008-02-22 Michael Dominic K. <mdk@mdk.am>
26515 * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
26516 to expose a few more pixels but helps with surface caching.
26518 2008-02-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
26520 * downloader.cpp: downloader_get_response_file: remove any directory
26521 components from the part name, otherwise the creation of the tmp file
26522 fails. If we're aborted, don't call any callbacks.
26523 * media.cpp: If we have a downloader and SetSource is called with a new
26524 downloader, abort the previous download, not only unref it, otherwise
26525 our callbacks and events may still get called from the old downloader.
26527 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
26529 * font.cpp (TextFont::TextFont): Simplified the fallback code.
26531 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
26535 * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
26537 (Glyphs::Layout): Properly handle glyph clusters.
26538 (Glyphs::Render): Same.
26540 2008-02-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
26542 * media.cpp: When aborting a downloader, null out the write
26545 2008-02-21 Michael Dominic K. <mdk@mdk.am>
26547 * src/clock.cpp: Emit the Completed event when Filling as
26548 well. Together with prev commit fixes: #359024 and #324935.
26550 2008-02-21 Michael Dominic K. <mdk@mdk.am>
26552 * src/animation.cpp:
26553 * src/animation.h: Detach the AnimationStorage update handler from the
26554 clock when the clock is stopped -- prevents us from overriding the (just
26555 reset) base value with another update.
26557 2008-02-21 Michael Dominic K. <mdk@mdk.am>
26559 * src/value.cpp: Implementing ToString () for DOUBLE.
26561 2008-02-21 Michael Dominic K. <mdk@mdk.am>
26563 * src/color.cpp: A slightly more relaxed/tolerant way of parsing
26564 the colors... it's the web and it's broken by default. Fixes:
26565 #362287 (the US candidates website).
26567 2008-02-21 Stephane Delcroix <sdelcroix@novell.com>
26569 * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
26571 2008-02-20 Jeffrey Stedfast <fejj@novell.com>
26573 Fixes the TextBlockFontDownloads.htm test.
26575 * font.cpp (TextFontDescription::Set*): If the new value is not
26576 the same as the old, invalidate the loaded TextFont.
26577 (TextFont::TextFont): Always compare family names unless we're
26578 requesting the "Sans" (e.g. last) fallback font.
26579 (TextFont::TextFont): If the requested family name does not match
26580 the specified font file, fall back to a system font of the same
26581 name (we were doing this for zip archievs before, but not for
26582 specified ttf font files).
26584 * text.cpp (TextBlock::SetFontSource): If the downloader is null,
26585 set the font filename to null and invalidate the textblock.
26587 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
26589 * media.cpp: Add a printf to inform when we're trying to load an
26590 mms stream. Helps a lot when trying to identify sites depending
26591 on mms/streaming support.
26593 * runtime.cpp: Unref debug_selected_element upon
26594 destruction. Fixes a leak.
26596 2008-02-20 Michael Dominic K. <mdk@mdk.am>
26598 * src/shape.cpp: Fixing the shape caching to work also with
26599 Path/Geometry. Fixes: #362021.
26601 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
26603 * media.cpp: MediaElement/Image: Remove event handlers when we abort the
26604 downloader, otherwise the handlers might be called after we're
26607 2008-02-19 Jeffrey Stedfast <fejj@novell.com>
26609 * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
26610 know which, if any, parts of the URI to hide.
26611 (Uri::Parse): If we don't have a protocol, don't simply assume
26612 that the entire string is the filename. We might have a fragment
26613 attached, for example.
26615 * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
26616 get the font index (if a fragment is set). Also, use the parsed
26617 Uri's ::ToString() method to hide the fragment so that requesting
26618 the file actually works.
26619 (Glyphs::DownloaderComplete): Don't need to parse the URI here
26620 anymore, we've already got the index from OnPropertyChanged().
26622 2008-02-19 Jackson Harper <jackson@ximian.com>
26624 * xaml.cpp: Parser error if we can't find the owner type or
26625 property name when setting properties.
26627 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
26629 * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
26631 2008-02-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
26633 * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
26635 * media.cpp: Remove printf.
26637 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
26639 * moon-path.c: #if out moon_get_origin since it's not used
26640 anymore. Change cairo_path_display output to be easier to read
26641 with negative numbers.
26643 2008-02-18 Michael Dominic K. <mdk@mdk.am>
26646 * src/media.h: Load images slightly faster by skipping one pixbuf blit and
26647 doing the expansion + conversion in one step.
26649 Also fixing an ugly memory leak where all RGBA images loaded were leaked
26650 (two times in memory).
26652 2008-02-15 Michael Dominic K. <mdk@mdk.am>
26654 * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
26655 being called from a timeout (unprotected) and we're potentially calling
26656 gdk_ invalidation functions. I think it only matters (in this case)
26657 on non-X backends though.
26659 2008-02-15 Michael Dominic K. <mdk@mdk.am>
26661 * src/uielement.cpp: Moving the debug timers for rendering slightly and
26662 uncommenting them so that they work when TIMERS is enabled.
26664 2008-02-15 Michael Dominic K. <mdk@mdk.am>
26667 * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
26668 default) that changes your 'd' key into a special debug key. When pressed,
26669 a message is printed to the console (region start). When pressed again,
26670 another message is printed (region end). This is usefull to see what
26671 happens in a particular part of the program timeline (ie. after click).
26673 Makes sense obviously only with timers debugging on and stuff.
26675 2008-02-14 Michael Dominic K. <mdk@mdk.am>
26677 * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
26678 shows that SL runs by default at something around that. Also, with the
26679 recent fixes some sites are suffering from 24 (can run/look much better
26682 2008-02-14 Michael Dominic K. <mdk@mdk.am>
26685 * src/shape.h: Adding surface caching for shapes. The strategy
26686 is to cache big surfaces that have little transformations (such as
26687 ie. backgrounds, fade overlays, etc.). Improves performance greatly
26688 for many sites (ie. Showcase).
26690 2008-02-14 Michael Dominic K. <mdk@mdk.am>
26692 * src/uielement.cpp: Commenting out the timer in post-pre render as it's
26693 broken and blocks the compilation with timers on.
26695 2008-02-12 Michael Dominic K. <mdk@mdk.am>
26697 * src/animation.cpp:
26698 * src/animation.h: Massive fix for our KeySpline animation calculation
26699 routines (which were broken and giving wrong values). According to:
26701 http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
26703 "...think of the horizontal axis as the pace with which the interpolation
26704 proceeds along the timing interval. The vertical axis is the resulting
26705 value for the animation's progress, yielded by the function that underlies
26706 the keySplines property. Another way of describing this is that the
26707 horizontal axis is the input unit time for the interval, and the vertical
26708 axis is the output unit time."
26710 Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
26711 a little bit ugly -- we waste 256 bytes per KeySpline to store
26712 pre-calculated values in a lookup table. But maybe it's not soo bad, since
26713 balf function (from prev implementation) was coming up top in the
26716 The only other way I can (currently) think of would be to solve a cubic
26717 equation each time we poll the KeySpline for a value. That would be,
26718 however, a *massive* performance hit.
26720 Hence the lookup solution for now (note: the generation of the table is
26721 very fast, no cubics involved).
26723 2008-02-11 Michael Dominic K. <mdk@mdk.am>
26725 * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
26726 as it should... yes, our redraws are slow, but not *that* slow ;)
26728 2008-02-09 Michael Dominic K. <mdk@mdk.am>
26730 * src/mplayer.cpp: If we have no audio devices present in the system,
26731 launch a special audio loop variant to still read/fetch audio (and discard
26732 it) so that the video playback is not blocked. Fixes: #341835.
26734 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
26736 * font.cpp (TextFont::TextFont): If the loaded font's family_name
26737 doesn't match the requested family name, fall back to the default
26738 font (it means the requested font doesn't exist on the system).
26739 (TextLayout::Layout): Added a 'first_char' state variable that can
26740 be used to figure out if if the current char is the first char on
26741 a line. This is needed for the wrapping logic.
26743 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
26745 Fixes some text layout bugs in TextBlockFontFamilies.xaml
26747 * xaml.cpp (flush_char_data): Now takes a string 'next_element'
26748 argument rather than a bool 'start' argument so that we can make
26749 sure that the previous and next element types are <Run>'s because
26750 lwsp between a <LineBreak/> and a <Run> or a </Run> and a
26751 <LineBreak/> should be ignored. Also, never g_strchomp() this
26753 (start_element_handler): Pass the name of the next element to
26755 (end_element_handler): Pass NULL to flush_char_data() as the
26756 next_element argument.
26758 2008-02-08 Chris Toshok <toshok@ximian.com>
26760 * media.cpp (MediaElement::Render): reorder things so that we're
26761 calculating the brush pattern matrix with the snapped pixels.
26763 2008-02-08 Stephane Delcroix <sdelcroix@novell.com>
26765 * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
26767 2008-02-07 Chris Toshok <toshok@ximian.com>
26769 * media.cpp (MediaElement::Render): snap to the pixel grid if
26770 we're not rotated/skewed.
26772 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
26774 * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
26776 2008-02-07 Larry Ewing <lewing@novell.com>
26778 * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
26779 same as out of bounds stops.
26781 * shape.cpp: cache the results of CompouteShapeBounds in
26782 extents rect, use that value in GetSizeForBrush.
26784 2008-02-07 Jeffrey Stedfast <fejj@novell.com>
26786 Fixes a rendering glitch for xaml similar to:
26789 <Run FontStyle="Italic">This </Run>is Dodger Blue
26792 * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
26793 setting the value of a content_property (e.g. a Run).
26795 2008-02-07 Michael Dominic K. <mdk@mdk.am>
26797 * src/color.cpp: Added support to parse scRGB-style color specificators
26798 (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
26799 should produce accurate-enough colors for most uses.
26801 http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
26803 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
26805 * shape.cpp|h: Split ComputeBounds to avoid calling functions
26806 bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
26807 inside each shape. This will enable us to reuse the non-transformed
26808 value elsewhere too. This also fix (for me) the origin point that
26809 caused problems for some brushes. Started implementing methods
26810 ComputeLargestRectangle[Bounds] to optimize drawing.
26812 2008-02-06 Chris Toshok <toshok@ximian.com>
26814 * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
26815 want the untransformed size of the element. otherwise we end up
26816 with a pattern matrix that scales things too large given that
26817 we're also scaling the element. Fixes fullscreen mode in halo3
26818 and /fox video players (bug #335845).
26820 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26822 * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
26823 range, draw the current frame. If we're ahead of the range, do nothing
26824 (fixes some video/audio sync problems), and if we're behind drop frames.
26825 The range makes sure that we paint every frame even when the audio loop
26826 doesn't update the target pts as often as we're drawing video.
26828 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26830 * panel.cpp, runtime.cpp: Fix warnings.
26832 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26834 * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
26835 the entire loop, only when fetching packets. This allows packets to
26836 arrive from the pipeline while in the loop (especially noticable when
26837 decoding the video inside the loop).
26839 2008-02-06 Chris Toshok <toshok@ximian.com>
26841 * uielement.cpp (UIElement::FrontToBack): use the media state
26842 accessors, and don't exclude Buffering state - we could be
26843 buffering with a frame rendered.
26845 2008-02-06 Sebastien Pouliot <sebastien@ximian.com>
26847 * shape.cpp|h: Keep track if a rectangle has radii or not.
26848 * uielement.h: Add a flag for radii
26850 2008-02-06 Chris Toshok <toshok@ximian.com>
26852 * uielement.cpp (UIElement::FrontToBack): make sure
26853 media_element_get_current_state != NULL before we strcmp it.
26855 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26857 * src.mdp: Updated.
26859 2008-02-06 Stephane Delcroix <sdelcroix@novell.com>
26861 * brush.cpp: fix the radialgradientbrush setup.
26863 2008-02-05 Chris Toshok <toshok@ximian.com>
26865 * collection.cpp (Collection::EmitChanged): new method. Emit the
26866 Changed event and then call closure->OnCollectionChanged. Also
26867 replace all references to closure->OnCollectionChanged to
26870 * collection.h (class Collection): add ChangeEventArgs struct, and
26871 an EmitChanged method declaration.
26873 * type.h.in, type.cpp.in (Type::~Type): no need to free all the
26875 (Type::HideEvent): remove the event name from the hash so it's
26876 inaccessible from javascript.
26877 (Type::RegisterEvent): use g_hash_table_new_full so we can specify
26878 a destroy function for keys instead of doing the _foreach in the
26880 (types_init_manually): add the #if 0 here instead of type.cpp.
26882 (types_init_register_events): register a Changed event for
26885 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
26887 * downloader.cpp (Downloader::ll_downloader_get_response_file):
26888 Simplified by using the new ExtractFile utility function from
26891 * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
26893 * utils.cpp: New collection of utility functions.
26895 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
26897 * font.cpp: If a font is requested from a zip archive, extract the
26898 contents and try to figure out which font is the closest match to
26899 the one requested. Fixes bug #356044.
26901 2008-02-05 Chris Toshok <toshok@ximian.com>
26903 * uielement.cpp (UIElement::FrontToBack): enable the rectangle
26904 code, and make sure to round in the bounds we're subtracting.
26905 this was causing the flashing white border on silverlight.net/fox.
26907 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
26909 * shape.cpp: Use existing MIN macro. Use local variables when
26912 2008-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
26914 * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
26916 2008-02-05 Chris Toshok <toshok@ximian.com>
26918 * runtime.h, runtime.cpp: add support for a "selected" element
26919 when in debug mode. Also, make use of the Region methods instead
26920 of using region->gdkregion, which is private now.
26922 2008-02-05 Chris Toshok <toshok@ximian.com>
26924 * region.h, region.cpp (class Region): add Offset().
26926 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
26928 * geometry.cpp|h: PathGeometry does a Build (not a Draw) to
26929 populate it's moon_path (like others) so the data can always be
26931 * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
26932 from a moon_path (Stephane) and moon_merge to merge a subpath into
26935 2008-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
26937 * pipeline-ffmpeg.cpp: Remove another printf.
26939 2008-02-02 Jeffrey Stedfast <fejj@novell.com>
26941 * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
26943 (FileSource::Peek): Slightly better fix.
26945 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
26947 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
26948 estimate the stream position if not known rather than reading data
26949 to find out as we don't have to return an exact stream position.
26951 2008-02-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
26953 * pipeline.h: Update comment.
26955 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
26959 * shape.cpp: rename GetOringin into GetOriginPoint
26961 * brush.cpp: implement a bad origin computation (based on bounds)
26964 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
26966 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
26967 (FileSource::Peek): As before, only read as much as we need - but
26968 don't clobber what we had prebuffered, only clobber as much as w
26969 need to in order to make room for the new data - this way we make
26970 it more efficient to seek backward later (if need be).
26972 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
26975 * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
26976 from the path data instead of from bounds.
26978 * brush.cpp: translate the brushes with a translation matrix.
26980 2008-02-01 Larry Ewing <lewing@novell.com>
26982 * brush.cpp: Make sure we use the brush opacity when computing the
26985 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
26987 * pipeline.cpp (FindMpegHeader): Now checks for Xing and
26988 Fraunhofer VBRI headers.
26990 2008-01-31 Chris Toshok <toshok@ximian.com>
26992 * uielement.h: include region.h
26994 * point.h: don't assume the right headers have been included
26995 before this file - include glib.h to make sure
26996 G_BEGIN_DECLS/G_END_DECLS is there.
26998 * region.h, region.cpp: split out the region code from
27001 * rect.h, rect.cpp: remove region code.
27003 * Makefile.am: add region.h/region.cpp
27005 2008-01-31 Chris Toshok <toshok@ximian.com>
27007 * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
27008 use Region::Draw instead).
27010 * panel.cpp: remove references to runtime_cairo_region, and switch
27011 to the new Region* copy ctor. also, use Region::IsEmpty instead
27012 of gdk_region_empty.
27014 * uielement.cpp: more region cleanup, removing references to
27015 GdkRegion in favor of our Region class. Also, commit (ifdef'ed
27016 out until the rendering glitch is fixed) the rectangle back to
27017 front special case code.
27019 2008-01-31 Chris Toshok <toshok@ximian.com>
27021 * rect.cpp (Region::Region): new overload which takes a Region*,
27022 so we don't have to access ->gdkregion everywhere when we copy a
27025 * rect.h (struct Rect): add a GrowBy method that takes both x and
27026 y deltas, and have the 1 parameter version call it.
27027 (class Region): add a copy ctor that takes a Region*.
27029 2008-01-31 Chris Toshok <toshok@ximian.com>
27031 * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
27032 and add it to the class, protected so subclasses can get at it.
27034 * stylus.cpp (InkPresenter::PostRender): given the ordering
27035 required, we have to c&p some of Panel::PostRender here to render
27036 the children. Chaining up to Canvas::PostRender at the start of
27037 the method would have caused the translucency/opacity mask code in
27038 UIElement::PostRender to be executed *before* we rendered our
27041 2008-01-31 Chris Toshok <toshok@ximian.com>
27043 * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
27044 RenderChildren to this, and chain up to Canvas::PostRender here,
27045 which will do the RenderChildren call if it needs to.
27047 2008-01-31 Chris Toshok <toshok@ximian.com>
27049 * panel.cpp (Panel::FrontToBack): simplify this a bunch with
27052 * brush.h (class Brush): remove GetTotalOpacity() which wasn't
27053 being used anywhere, and add IsOpaque() so that we can use it from
27054 the new front-to-back stuff (instead of duplicating code in Panel
27055 and Shape handling parts).
27057 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27059 * media.cpp: Update.
27061 2008-01-31 Chris Toshok <toshok@ximian.com>
27063 * media.cpp (MediaElement::MediaElement): fix build.
27064 (Image::Image): fix initialization order to quiet g++.
27066 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27068 * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
27069 implemented again. Added an ugly caught_up_with_seek value, used to
27070 determine if video is late due to a seek, in which case it shouldn't
27071 show any frames (fixes #356053).
27072 * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
27074 * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
27075 HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
27076 * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
27079 2008-01-31 Jeffrey Stedfast <fejj@novell.com>
27081 * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
27083 (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
27084 having our caller re-parse the header.
27085 (Mp3Demuxer::ReadHeader): Updated.
27087 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27089 * brush.cpp: apply the correct offset to RadialGradientBrushes too.
27091 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27093 * clock.h: Added macros to convert between pts, milliseconds and timespans.
27094 * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
27095 0). Use the new macros when converting between time formats. Remove the
27096 AdvanceFrame timeout upon reinitialization. Implement a better buffering
27097 algorithm (and honor the BufferingTime property).
27098 * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
27099 pipeline is now normalized to start at 0. Use the new macros when
27100 converting between time formats.
27101 * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
27102 start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
27103 estimate the position of a pts. ProgressiveSource::CancelWait: only
27104 cancel if we're waiting, and then wait until actually cancelled.
27106 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27109 * shape.h: GetOrigin for Polyline and Polygon
27111 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27113 * uielement.h: add a GetOrigin ()
27116 * shape.h: implement GetOrigin for Path
27118 * brush.cpp: use GetOrigin as offset, fix the Crystal test.
27120 2008-01-30 Chris Toshok <toshok@ximian.com>
27122 * mplayer.h (class MediaPlayer): add rendered_frame.
27124 * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
27126 (MediaPlayer::Close): reset rendered_frame.
27127 (render_frame): set rendered_frame to true if we've successfully
27128 copied data into the video surface.
27130 * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
27131 to the pixbuf's has_alpha if USE_OPT_RGB24.
27133 * media.h (class Image): make the CachedSurface type and the
27134 instance field "surface" public, so the front to back stuff can
27135 get at it. Also, add "has_alpha" to it, since once the xlib
27136 surface has been created, we lose that information.
27138 * control.cpp (Control::FrontToBack): nothing to do but call
27139 FrontToBack on real_object.
27141 * control.h (class Control): add override for FrontToBack.
27143 * panel.cpp (Panel::FindStartingElement): get rid of this crap.
27144 it was broken and the wrong way to implement it.
27145 (Panel::Render): remove the RenderChildren call here, we do it in
27146 PostRender (and only if we're not rendering front to back)
27147 (Panel::PostRender): if we aren't rendering front to back, call
27149 (Panel::RenderChildren): remove references to FindStartingElement.
27150 (Panel::FrontToBack): this method is a little more complicated
27151 than UIElement::FrontToBack owing to the fact that we're
27152 flattening things to a list. We need to prepend a "cleanup node"
27153 first, before calling FrontToBack on our children, to do the
27154 Panel::PostRender stuff after our children have been rendered. We
27155 remove this cleanup node if none of the children have added
27156 themselves to the list, and our bounds (without the children)
27157 don't intersect the expose region. We apply the same logic to
27158 removing our rectangular bounds as the UIElement code does, but
27159 also have to take into account our background brush. We punt if
27160 any part of it is transparent, and only handle SolidColorBrush and
27161 GradientBrush subclasses.
27163 * panel.h (class Panel): override UIElement:: FrontToBack,
27164 PreRender, and PostRender.
27166 * uielement.cpp (UIElement::DoRender): factor out most of the guts
27167 of this method so it can be used in either front-to-back or
27168 back-to-front. Make sure to pass "false" as the front-to-back arg
27169 for PreRender and PostRender.
27170 (UIElement::FrontToBack): calculate the intersection of the expose
27171 region and our bounds. Add this region to the front of the render
27172 list, and then do some calculating to decide if we should remove
27173 it from consideration by elements lower than us in the display.
27174 Things like "are we opaque", "have we been rotated or skewed, such
27175 that our rectangular shape no longer fills the bounds entirely",
27176 stuff like that. We further limit subtracting in element type
27177 specific ways - right now just for MediaElement and Image with
27178 certain constraints (images can't have alpha, media elements must
27179 have a frame rendered, both types must fill their rectangle, etc).
27180 If everything passes, we remove our bounds from the expose region.
27181 (UIElement::PreRender): new method, do the things that DoRender
27182 used to do before calling Render.
27183 (UIElement::PostRender): new method, do the things that DoRender
27184 used to do after calling Render.
27186 * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
27187 so they can be used in panel.cpp. Also, add 3 new virtual
27188 methods (FrontToBack, PreRender, PostRender) as well as two
27189 callback methods to invoke the 2 latter ones.
27191 * runtime.cpp (overrides): add "render=ftb" and "render=btf"
27192 overrides (with btf the default) corresponding to
27193 RUNTIME_INIT_RENDER_FRONT_TO_BACK.
27194 (Surface::Paint): add support for front-to-back rendering. If
27195 it's enabled, make a FrontToBack pass on the fullscreen message
27196 and the toplevel element. This populates the render list with a
27197 back to front ordered list of elements to paint, along with the
27198 regions they need repainted. If the render list is empty for some
27199 reason (or if the user didn't select ftb rendering), we fall back
27200 to back to back-to-front rendering at the toplevel.
27201 (RenderNode::RenderNode): add ctor/dtor for RenderNode.
27203 * runtime.h: add the RenderNode class, used by the front to back
27206 * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
27209 2008-01-30 Jackson Harper <jackson@ximian.com>
27211 * xaml.cpp: Strip leading whitespace from xaml files.
27213 2008-01-30 Jackson Harper <jackson@ximian.com>
27215 * xaml.cpp: Handle more names for the default namespace.
27217 2008-01-30 Jackson Harper <jackson@ximian.com>
27219 * xaml.cpp: Add support for ucs4.
27221 2008-01-29 Jackson Harper <jackson@ximian.com>
27223 * xaml.cpp: pull in unistd.h
27225 2008-01-29 Jackson Harper <jackson@ximian.com>
27227 * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
27228 expat doesn't choke.
27230 2008-01-28 Chris Toshok <toshok@ximian.com>
27232 * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
27233 inplace, it returns the new rect.
27235 * uielement.cpp (UIElement::DoRender): same change.
27237 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
27239 * pipeline.cpp (FindMpegHeader): Validate that the sequence is
27240 actually an mpeg frame header by parsing it and calculating its'
27241 length and checking that another frame header starts where we
27243 (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
27246 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
27248 * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
27249 an MPEG sync header.
27250 (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
27251 IMediaSource's new GetSize() method to help calculate media
27252 duration as opposed to seeking to the end.
27254 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
27256 * media.cpp, media.h: Open the media async.
27257 * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
27259 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
27261 * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
27262 reached eof and couldn't advance.
27263 * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
27264 get while we're waiting for a seek to happen. Implement a better pause
27265 algorithm, the previous one was flawed and dead-locked once in a while.
27266 * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
27267 Create one frame reader for each stream.
27269 2008-01-27 Jeffrey Stedfast <fejj@novell.com>
27271 * media.cpp (MediaElement::UpdateProgress): Check (pos +
27272 buffering_size) > size, not < size. Duh.
27274 * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
27275 argument to use in place of media->GetSource().
27276 (Media::Open): Don't set this->source unless we successfully open
27279 2008-01-26 Jeffrey Stedfast <fejj@novell.com>
27281 * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
27282 set the state to Buffering so that calling Play() will actually
27283 start playing the media (if the file was local, then we'll be in
27284 the Opening state which means that calling Play() will only note
27285 that a Play action was requested, but won't actually play the
27287 (MediaElement::SetState): Don't check for downloaded_file == NULL,
27288 it might fail in the above case.
27290 2008-01-26 Jackson Harper <jackson@ximian.com>
27292 * xaml.cpp: Set the encoding when we are reading files also.
27294 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
27296 * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
27297 greater than the current wait_pos.
27299 * media.cpp (UpdateProgress): Use the buffering_start position
27300 rather than the current write position to calculate buffer_size.
27302 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
27304 * media.cpp (TryOpen): When download is complete and we
27305 successfully open the media, don't set the state to Paused - this
27306 breaks Halo3 if the video is cached.
27308 * media.cpp|h: Consolidated all of the bool state variables into a
27311 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27313 * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
27314 waiting for publicly available.
27315 * media.cpp: UpdateProgress: use the position the file is waiting for to
27316 calculate the buffer size (if it would exceed the default buffer size).
27318 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27320 * media.h: Add some descriptive comments.
27322 2008-01-25 Sebastien Pouliot <sebastien@ximian.com>
27324 * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
27325 instead of calling it since it can reduce some heavy cairo calls
27326 (cairo_in_*), if there's a clip, otherwise it won't affect
27329 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27331 * media.cpp: Initialize play_pending, and when buffering is
27332 finished, only play if autoplay or play_pending is true.
27334 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
27336 * mplayer.cpp: Get rid of some unused variables and cleaned up
27339 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27341 * pipeline.cpp, media.cpp: More printfs removed.
27343 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27345 * src.mdp: Updated.
27347 * pipeline-ffmpeg.cpp: Commented out printf.
27349 * pipeline.h, pipeline.cpp: Removed some dead code. Made all
27350 interfaces inherit from IMediaObject, and put the media field
27351 there. Commented out printfs.
27353 * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
27354 simplify code a bit. Encapsulated target_pts handling into
27357 * media.h, media.cpp: Create one and only one MediaPlayer for the
27358 life-time of the MediaElement. If not AutoPlay is set, then pause
27361 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
27363 * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
27364 usage, but on construction, and finish it upon destruction. Fixes race
27365 between creating and destructing the thread.
27367 2008-01-24 Chris Toshok <toshok@ximian.com>
27369 * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
27370 (calc_perpendicular_intersection_points): new method.
27371 (Stroke::HitTestSegmentSegment): use
27372 calc_perpendicular_intersection_points to give us the end points
27373 of the outer line segments, and use those for hit testing.
27375 2008-01-24 Jeffrey Stedfast <fejj@novell.com>
27377 * media.cpp (UpdateProgress): When switching to Buffering mode,
27378 save the position where we're currently at in the file so that we
27379 can use that as a reference point when calculating progress. Also,
27380 pause the MPlayer so that audio won't continue to play while we're
27381 waiting for buffering to complete. Fixes bug #356051.
27383 2008-01-24 Sebastien Pouliot <sebastien@ximian.com>
27385 * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke
27386 (or fill) are present for the shape.
27388 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
27390 * pipeline.cpp, pipeline.h: Create a more general worker thread,
27391 and use unions to save some space in WorkItem. In the ASFDemuxer,
27392 when seeking, we need to seek to the audio stream, since that's
27393 what we're using to sync against (if we have audio).
27395 * list.cpp, list.h: Added List::InsertBefore.
27397 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
27399 * media.cpp: MediaElement::SetSource: only trigger the download
27400 after we've attached to the CompletedEvent.
27402 2008-01-23 Chris Toshok <toshok@ximian.com>
27404 * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
27405 re-enter HandleMouseEvent, which can happen when that stupid JS
27406 timeout dialog pops up.
27408 2008-01-23 Chris Toshok <toshok@ximian.com>
27410 * runtime.cpp (Surface::SetMouseCapture): this fails not only if
27411 there's an existing capture, but also if there's a pending
27412 capture (so if both a parent and child capture on the same event,
27413 the child gets it.) Fixes dragging things around in ink journal.
27415 2008-01-23 Chris Toshok <toshok@ximian.com>
27417 * stylus.cpp, stylus.h: initial hit testing stuff. right now the
27418 only tests that are implemented are endcap (ellipse) vs. point,
27419 and segment vs. segment (although this one isn't the full test, as
27420 we're using the stroke line, as opposed to the exterior lines
27421 created by the ellipse pen tracing that line).
27423 * rect.h: add PointInside (Point p).
27425 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
27427 * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
27428 it's no longer part of the build.
27430 2008-01-23 Sebastien Pouliot <sebastien@ximian.com>
27432 * shape.cpp|h: Add support for different PenLineCap on Line (part
27433 of #345888). Fix Polyline when a single segment is used (removed
27434 TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
27436 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
27438 * media.cpp (SetSource): Initialize the ProgressiveSource.
27440 * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
27441 parent class's implementation.
27443 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
27445 * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
27447 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
27449 * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
27450 where the caller is trying to read a block larger than our
27452 (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
27453 uint64_t (which is needed in the case of seeking backwards).
27455 2008-01-22 Larry Ewing <lewing@novell.com>
27457 * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
27458 and into Path.cpp as a transform not by modifying the data.
27460 * geometry.cpp, geometry.h: remove stretch logic.
27462 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
27464 * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
27465 if within our pre-buffered bounds.
27466 (ProgressiveSource::Write): When restoring position state, use the
27467 proper offset (e.g. the offset of the end of our pre-buffered
27470 2008-01-22 Chris Toshok <toshok@ximian.com>
27472 * collection.cpp (UIElementZIndexComparer): the magnitude of the
27473 return value doesn't matter, only the sign.
27475 2008-01-22 Chris Toshok <toshok@ximian.com>
27477 * media.cpp (Image::InsideObject): if we have no surface (the
27478 image hasn't been loaded), we aren't HitTestVisible.
27480 * media.h (class Image): add InsideObject override.
27482 2008-01-22 Chris Toshok <toshok@ximian.com>
27484 * panel.cpp (Panel::OnCollectionChanged): remove the fix for
27485 #353954 as its redundant after the previous commit.
27487 2008-01-22 Chris Toshok <toshok@ximian.com>
27489 * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
27492 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
27494 * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
27495 call Initialize() on the file source.
27497 * pipeline.cpp (IMediaSource): Read() now returns the number of
27498 bytes read rather than true/false and does nto guarantee that all
27499 of the data was read. Added a ReadAll() method which does what the
27500 old Read() method did.
27501 (FileSource): Rewritten to do our own buffering which allows for
27502 nice optimizations for Peek() and Seek().
27503 (ProgressiveSource): Also rewritten.
27505 * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
27507 * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
27508 just made them extern in the ehader, this way we don't duplicate
27509 those values in each source file that includes this header.
27511 2008-01-22 Sebastien Pouliot <sebastien@ximian.com>
27513 * shape.cpp|h: First part of DoDraw refactoring. Pass all
27514 regression tests from harness (moon versus moon) but it's possible
27515 that some degenerated cases (without test cases) regress.
27517 2008-01-22 Larry Ewing <lewing@novell.com>
27519 * clock.cpp: initalize the smoothing to max framerate, the first
27520 frame is quite likely the slowest frame we'll ever draw. Bump
27521 error delta back up to 1/50th.
27523 2008-01-22 Chris Toshok <toshok@ximian.com>
27525 * media.cpp (MediaElement::Render): a little cairo cleanup, and
27526 remove the USE_OPT_REGION_CLIP block.
27528 2008-01-22 Andrew Jorgensen <ajorgensen@novell.com>
27530 * pipeline.cpp: include unistd.h, fixes a build error introduced in
27531 r93311 when building without-ffmpeg
27533 2008-01-22 Larry Ewing <lewing@novell.com>
27535 * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
27538 2008-01-22 Larry Ewing <lewing@novell.com>
27540 * clock.cpp: Tweak clock timing and smoothing. Increase timer
27541 priority so that ticks get deliver when we want them this doesn't
27542 change the smoothing calculation but it can raise the actual fps
27543 by assuring all our clocks are delivered. Change smoothing alpha
27544 from 0.3 to 0.03 to improve noise immunity. Don't reset the timer
27545 unless our new calculated timeout differs from our old by at least
27546 1/50 of a second. Resetting the clock on every tick had the
27547 effect adding the drawing time to the tick time for every tick
27548 since the timeout starts over at zero.
27550 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
27552 * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
27553 unspecified, encode the bitrate back into the header so that if we
27554 are using the NullMp3Decoder, it will know how to handle
27555 it. Probably also needed for any actual Mp3 decoders as well since
27556 it won't reliably be able to keep track of variable-bitrate
27557 streams otherwise since it wouldn't know if/when we seek.
27558 (NullMp3Decoder::DecodeFrame): Implemented.
27560 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
27562 * pipeline.cpp: Remove printf.
27564 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
27566 * src.mdp: Remove mplayer2.cpp from here too.
27568 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
27570 * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
27571 mplayer2.cpp to mplayer.cpp.
27573 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
27575 * downloader.cpp (ll_downloader_get_response_file): Fixed to use
27576 mkstemp() rather than tmpnam_r() and also simplified.
27578 * pipeline.cpp: Fixed various things about the progressive stream.
27580 2008-01-19 Jeffrey Stedfast <fejj@novell.com>
27582 * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
27583 don't memmove() data unless we don't have enough to play a single
27584 frame. Instead, what we'll do is keep progressing audio->outbuf as
27587 2008-01-19 Chris Toshok <toshok@ximian.com>
27589 * uielement.cpp (UIElement::OnPropertyChanged): remove the
27590 handling of TriggersProperty and ResourcesProperty's closure.
27592 * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
27595 * transform.cpp (TransformGroup::OnPropertyChanged): remove
27596 handling of ChildrenProperty's closure.
27598 * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
27599 the handling of Inlines->closure from TextBlock.
27601 * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
27602 methods (InkPresenter and Stroke).
27604 * panel.cpp (Panel::OnPropertyChanged): remove handling of the
27605 ChildProperty's closure here.
27607 * media.cpp, media.h: remove the unnecessary
27608 MediaBase::OnPropertyChanged.
27610 * geometry.cpp, geometry.h: remove a few OnPropertyChanged
27611 methods (GeometryGroup, PathGeometry, and PathSegment.)
27613 * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
27615 * brush.cpp, brush.h: remove the unnecessary
27616 Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
27618 * animation.cpp, animation.h: remove all the
27619 *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
27620 they did was deal with collection closures.
27622 * dependencyobject.cpp (DependencyObject::SetValue): factor out
27623 the "collection->closure" setting code from all the
27624 OnPropertyChanged methods sprinkled around and put it here. Also,
27625 set collection->closure to NULL on the old value (something the
27626 old code didn't do).
27628 2008-01-19 Chris Toshok <toshok@ximian.com>
27630 * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
27631 NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
27634 * animation.h: clean this file up by removing all those disgusting
27635 macros. for the DECL macros, just expand them here, as having the
27636 methods listed in the class declaration is a good thing.
27638 * collection.cpp (collection_new): remove the switch statement
27639 from here and use Type::CreateInstance instead. this largely
27640 removes the need to be including extra headers (like animation.h).
27642 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
27644 * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
27645 MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
27646 * src.mdp: Updated.
27648 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
27650 * media.h, media.cpp: MediaElement: make this a state machine to follow the
27651 behaviour specified in MSDN. Implement buffering of media files.
27652 MediaSource (and derived): take a IMediaSource instead of a filename.
27653 * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
27654 Remove all MOON_MEDIA ifdefs, too many changes to support both versions
27655 now. Make seeking async.
27656 * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
27657 worker thread, seeking can now be done there too. Implement
27659 * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
27660 the file extension. MediaSource (and derived): take a IMediaSource
27661 instead of a filename.
27662 * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
27665 2008-01-18 Larry Ewing <lewing@novell.com>
27667 * uielement.cpp: compute total_opacity for invalidation logic but
27668 use local_opacity for drawing. This fixes monotones grid.xaml and
27669 some hit test regressions.
27671 2008-01-18 Jackson Harper <jackson@ximian.com>
27673 * xaml.cpp: KeyFrameCollections can be specified in the xaml if
27674 they are in a property element.
27675 - When searching for collections, use is subclass instead of
27676 making them be the same type, so derivied collections can be used.
27678 2008-01-17 Chris Toshok <toshok@ximian.com>
27680 * pipeline.h (class IMediaDemuxer): initializer streams and
27681 stream_count so we don't crash on ltbennett.com.
27683 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
27685 * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
27686 MPEG header, set MediaFrame->event to EOF. Same if we can't read
27688 (Media::GetNextFrame): Don't try to decode the frame if it is an
27690 (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
27693 * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
27694 (AdvanceFrame): Handle EOF frame events.
27695 (audio_loop): Handle EOF frame events.
27697 2008-01-17 Chris Toshok <toshok@ximian.com>
27699 * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
27700 invalidate the old bounds of the stroke for ItemRemoved as well as
27703 2008-01-17 Chris Toshok <toshok@ximian.com>
27705 * rect.h (Rect::Transform): new method, allows for transforming a
27706 rectangle by a cairo_matrix_t, used with transforming the stroke
27707 bounds back to screen space using the InkPresenter's
27710 * stylus.cpp, stylus.h: deal with collection changed notifications
27711 on Stroke::StylusPointsProperty and on
27712 InkPresenter::StrokesProperty, and correctly invalidate a stroke's
27713 bounds. The bounds of a stroke needs to be looked at - right now
27714 it's in the coordinate space of the InkPresenter, and so it needs
27715 to be transformed back to screen space before invalidating. Need
27716 to check if MS uses screen space for a stroke's bounds (seems
27717 likely they do, but this was easier to code.)
27719 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
27721 * mplayer2.cpp: Updated for MediaFrame changes.
27723 * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
27725 * pipeline.cpp: Instead of having a compressed_data and
27726 uncompressed_data field, simply have a 'buffer' field that gets
27727 reused by both the demuxer and the decoder. The decoder will set
27728 the buffer to the compressed data and the decoder will, once
27729 finished decoding, free the buffer and then update it to point to
27730 the decoded data. This reduces memory overhead.
27732 2008-01-17 Chris Toshok <toshok@ximian.com>
27734 * uielement.cpp (UIElement::InsideClip): use
27735 uielement_transform_point instead of duplicating it.
27737 * shape.cpp (Shape::InsideObject): use uielement_transform_point
27738 instead of duplicating it.
27740 * text.cpp (TextBlock::InsideObject): use
27741 uielement_transform_point instead of duplicating it.
27743 2008-01-17 Larry Ewing <lewing@novell.com>
27745 * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
27746 unstroked rectangles (see test-rectangle-aliasing.xaml). Suggest
27747 more rectangle testing after this.
27749 2008-01-17 Jackson Harper <jackson@ximian.com>
27751 * xaml.cpp: After setting a property stop walking up the element
27754 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
27756 * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
27758 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
27760 * mplayer2.cpp (audio_decode): Removed as it is no longer really
27762 (audio_loop): We can't assume that an entire decoded audio packet
27763 will fit into the audio output buffer in a single shot, break it
27766 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
27768 * mplayer2.cpp: Max out video frame rate at 60fps.
27770 2008-01-17 Fernando Herrera <fherrera@novell.com>
27772 * panel.cpp: Reorder based on ZIndex when a new item is added.
27775 2008-01-17 Larry Ewing <lewing@novell.com>
27777 * runtime.cpp (Surface::InitializeDrawingArea): disable extended
27778 input devices until the remaining issues can be resolved.
27780 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
27782 * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
27784 2008-01-16 Larry Ewing <lewing@novell.com>
27786 * uielement.cpp, uielement.h:
27787 * panel.cpp, panel.h:
27788 * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
27789 Combine the opacity visibility check into the total render
27790 visibility. Make sure we compute/invalidate in all the same
27793 * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
27795 * uielement.cpp (UIElement::DoRender): make sure we don't reset
27796 the coordinate system when setting up the clip calls in the
27797 opacity and opacity mask cases. Go back to using the brush
27798 directly when rendering masks. Should speed things up a little
27799 and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
27801 2008-01-16 Chris Toshok <toshok@ximian.com>
27803 * stylus.h, stylus.cpp: a few changes. Move the
27804 StylusPointCollection and StrokeCollection classes here from
27805 collection.h/collection.cpp. I didn't like the addition of
27806 stylus.cpp logic in two places. Convert Stroke::GetBounds use use
27807 the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
27808 methods, and build up the bounds for the StrokeCollection by
27809 unioning all the Stroke bounds (these should be cached, but aren't
27810 yet.) StrokeCollection::HitTest has been implemented, just
27811 looping over the strokes. Stroke::HitTest is missing its guts at
27812 the moment, since hit testing is going to be a little bit of a
27815 * collection.h, collection.cpp: remove StylusPointCollection and
27818 2008-01-16 Larry Ewing <lewing@novell.com>
27820 * uielement.cpp, uielement.h: Rework the way we handle opacity to
27821 operate like the reference platform by removing the concept of
27822 TotalOpacity and instead using push/pop group and paint_with
27823 alpha. See test-sibling-opacity.xaml for an example. Handle
27824 clipping in DoRender rather than in every subclass because we want
27825 the clip path active before calling push/pop so that the temporary
27826 surface is bounded.
27827 * brush.cpp, panel.cpp: remove GetTotalOpacity references.
27828 * media.cpp, media.h: cleanup the complicated render logic now
27829 that things are handled in uielement.
27830 * shape.cpp, text.cpp: remove RenderClipPath calls.
27832 * rect.cpp, rect.h: add draw methods.
27834 2008-01-16 Jeffrey Stedfast <fejj@novell.com>
27836 * pipeline.cpp: Implemented mpeg seeking support for
27837 Mp3FrameReader and, thusly, Mp3Demuxer.
27838 (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
27840 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
27842 * mplayer2.cpp: Remove a superfluous variable from Audio.
27844 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
27846 * mplayer2.cpp: Remove superfluous variables from Video.
27848 2008-01-16 Sebastien Pouliot <sebastien@ximian.com>
27850 * moon-path.c: Fix typo (but was same value).
27852 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
27854 * pipeline.cpp: Implemented mp3 demuxer.
27856 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
27858 * mplayer2.cpp: Don't crash if Seek is called before Open.
27860 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
27862 * mplayer2.cpp: Remove dead code and variables, and only request
27863 audio/video frames if we have audio/video.
27865 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
27867 * mplayer2.cpp: Get rid of extra member variables in Packet.
27869 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
27871 * mplayer2.cpp: Implement audio decoding on the main thread as well.
27873 2008-01-14 Jeffrey Stedfast <fejj@novell.com>
27875 * pipeline.cpp: Partially implemented an mp3 demuxer.
27877 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
27879 * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
27880 work again with the new pipeline.
27882 2008-01-14 Sebastien Pouliot <sebastien@ximian.com>
27884 * shape.cpp|h: It looks like we stopped needing consider_fill a
27887 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
27889 * mplayer.h: We don't need io_tread anymore, so remove it.
27890 * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
27891 for doing the decoding on the main thread with easy (in-code) switch.
27892 Comment out printfs, and remove dead/old/commented-out code.
27893 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
27894 decoding on the main thread with easy (in-code) switch.
27895 * runtime.cpp: Don't print entire object tracking output if nothing leaked.
27897 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
27899 * xaml.cpp: Unref a matrix object when we are done with it.
27900 * mplayer2.cpp: Remove printf.
27902 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
27904 * mplayer2.cpp: Remove printfs.
27905 * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
27907 * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
27909 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
27911 * pipeline.cpp: Fix crash with several web-sites (when seeking before
27914 2008-01-11 Chris Toshok <toshok@ximian.com>
27916 * clock.h (class Clock): add an instance
27917 field (calculated_natural_duration).
27919 * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
27920 current time here. this was inflating animation begin time's in
27921 some cases to be either very close to the parent's calculated
27922 duration (or even after it).
27923 (ClockGroup::ComputeBeginTime): don't chain up to
27924 Clock::ComputeBeginTime. clock groups in our system need to
27925 include their parent time in their begin time. There are only two
27926 levels of clockgroups - storyboards, and the clockgroup we have
27927 associated with a given surface (Which will be the parent of all
27928 the storyboards running on that surface.)
27929 (output_clock): print out the BeginTime of the clock.
27930 (TimeManager::AddChild): I don't really like this, but we need to
27931 force the calculation of the natural duration of the clock when
27932 it's added to the hierarchy.
27933 (ClockGroup::AddChild): same here.
27934 (Clock::Clock): don't calculate the natural duration of the clock
27935 here - when we instantiated a ClockGroup it was calculating the
27936 duration before the child clocks were added.
27938 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
27940 * pipeline.cpp: Seek on the frame reader, not on the source.
27941 * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
27942 HasAudio/Video (). Fix seeking to actually work.
27944 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
27946 * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
27947 mplayer.h where it belongs.
27948 * pipeline.cpp, pipeline.h: Implement seeking.
27949 * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
27950 directly, since ffmpeg uses one single memory location for all decoded
27951 frames, causing us to always show the last decoded frame.
27953 2008-01-11 Sebastien Pouliot <sebastien@ximian.com>
27955 * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
27956 See bug #345892 for the required cairo patch.
27958 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
27960 * media.cpp: Initialize Media too upon initialization.
27961 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
27962 mplayer2.cpp, mplayer.cpp: Implement registration of components, making
27963 it possible to completely remove ffmpeg.
27965 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
27967 * pipeline.cpp: Remove stray character.
27969 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
27971 * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
27972 pipeline-ffmpeg.h: Code-cleanup.
27974 2008-01-10 Larry Ewing <lewing@novell.com>
27976 * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
27977 before setting the extension events (lame api) and disable the
27980 2008-01-10 Chris Toshok <toshok@ximian.com>
27982 * runtime.cpp (Surface::InitializeDrawingArea): activate all
27983 devices that have a cursor associated with them.
27985 2008-10-10 Andrew Jorgensen <ajorgensen@novell.com>
27987 * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
27989 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
27991 * mplayer.cpp: Surround with ifdef to conditionally include the new
27992 MediaPlayer or not.
27993 * Makefile.am: Added pipeline* and mplayer2.cpp.
27994 * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
27996 * pipeline.cpp, pipeline.h: Added.
27997 * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
27999 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
28001 * panel.cpp: Delete leaked region.
28003 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
28007 2008-01-09 Chris Toshok <toshok@ximian.com>
28009 * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
28012 2008-01-09 Chris Toshok <toshok@ximian.com>
28014 * collection.h, collection.cpp: add C wrappers for
28015 StrokeCollection::GetBounds and ::HitTest.
28017 * stylus.h, stylus.cpp: same deal for Stroke::
28019 2008-01-09 Chris Toshok <toshok@ximian.com>
28021 * collection.h, collection.cpp: add empty implementations of
28022 StrokeCollection::GetBounds and StrokeCollection::HitTest.
28024 * stylus.h, stylus.cpp: add empty implementations of
28025 Stroke::GetBounds and Stroke::HitTest.
28027 2008-01-09 Chris Toshok <toshok@ximian.com>
28029 * uielement.h, uielement.cpp: change all the Emit* methods that
28030 deal with mouse events to take a GdkEvent instead of state/x/y,
28031 and also change their calldata to a heap allocated MouseEventArgs,
28032 which we unref after the emit. This is because the pointer itself
28033 is wrapped by the managed MouseEventArgs, and will be unref'ed in
28034 ~MouseEventArgs at some later time.
28036 * runtime.h, runtime.cpp: change all the mouse events to pass
28037 around the actual GdkEvent instead of the state/x/y. This is due
28038 to the fact that our MouseEventArgs class now wraps the GdkEvent,
28039 so we can get at all the stylus/extension event stuff.
28041 * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
28042 longer required. We correctly create a StylusInfo instance from
28043 the MouseEventArgs.
28045 * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
28046 (libmooninclude_headers): add eventargs.h
28048 * libmoon.h: add eventargs.h.
28050 * eventargs.h, eventargs.cpp: new files, splitting out the
28051 KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
28052 out MouseEventArgs, making it a refcounted object with enough
28053 smarts to handle both the managed case and plugin case. Include
28054 all the stylus related code as well, so this *should* make all the
28055 stylus requiring demos work.
28057 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
28059 * geometry.cpp (path_get_bounds): My fix the other day wasn't
28060 quite ideal. Instead of using a 0.1 line thickness when the
28061 shape's StrokeThickness is 0, continue using that 0 thickness but
28062 use cairo_fill_extents() instead. Also, when shape is null, ise a
28063 0.0 thickness & cairo_fill_extents() as well.
28065 * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
28066 that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
28068 * runtime.cpp (EmitEventOnList): Changed to take double x,y
28069 coordinate arguments rather than int.
28070 (HandleMouseEvent): Same.
28072 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
28074 * list.cpp (List::~List): Added a dtor that deletes all nodes
28075 currently in the list. This is doable now that List::Nodes are
28076 classes where the node dtors can be overloaded.
28078 2008-01-09 Jackson Harper <jackson@ximian.com>
28080 * xaml.cpp: If a property is a collection, don't assume that the
28081 collection is already initialized (they used to always be), and
28082 initialize the collection if needed. This fixes BNC 350893.
28084 2008-01-09 Stephane Delcroix <sdelcroix@novell.com>
28086 * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
28087 on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
28089 2008-01-08 Chris Toshok <toshok@ximian.com>
28091 * animation.cpp (Storyboard::Begin): simple change to fix a nasty
28092 bug. we need to add the teardown handler before the completed
28093 handler. otherwise cases where people were using a storyboard as
28094 a timer would break - the completed handler would fire, the JS
28095 would restart the storyboard, then the teardown handler would free
28096 the new clock hierarchy. Fixes the page animation in pageturn,
28097 and gets the bubbles moving again in the SilverlightCLRBalls demo.
28099 2008-01-07 Jeffrey Stedfast <fejj@novell.com>
28101 * geometry.cpp (path_get_bounds): Cairo seems to break if the line
28102 thickness is 0.0, so if the shape's thickness is set to 0.0, use
28103 0.1 like we do if shape is null. Fixes bug #351575.
28105 2008-01-07 Sebastien Pouliot <sebastien@ximian.com>
28107 * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
28108 that ignore those properties, can avoid setting them on the cairo
28111 2008-01-04 Chris Toshok <toshok@ximian.com>
28113 * runtime.cpp: mostly switch all emit_* calls to take doubles, and
28114 pass doubles around for button x/y.
28115 (Surface::motion_notify_callback): if we're gtk > 2.12, use
28116 gdk_event_request_motions (falling back to gdk_window_get_pointer
28117 if not). also, we can use the mouse_event_x/y from the event,
28118 even when it's a hint.
28120 * runtime.h: switch back to using doubles for everything mouse
28121 event related. Change MoonlightEventEmitFunc to take doubles.
28123 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
28125 * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
28126 since the events that use them want them as ints anyway.
28127 (button_release_callback): Cast the button->x/y doubles to int.
28128 (button_press_callback): Same.
28129 (motion_notify_callback): Cast event->x/y to int.
28130 (crossing_notify_callback): Same.
28132 * dependencyobject.cpp: EventObjects now use a List class for
28133 event_lists rather than GSList which is far more costly for
28135 (Emit): Reduce the number of linked-list iterations from 5 to 2.
28137 2008-01-04 Chris Toshok <toshok@ximian.com>
28139 * runtime.h, runtime.cpp: completely overhaul the way we handle
28140 mouse events. Instead of doing both hit testing and event
28141 dispatch in one recursive tree traversal, we build up a list of
28142 all elements that will bubble the event, and then use that list
28143 along with the previous one to generate Enter/Leave events for the
28144 elements that require it. Also fix the way capture is done (it's
28145 not handled until the end) and fix the Enter event dispatch when
28146 you release mouse capture.
28148 * uielement.h, uielement.cpp: rename the mouse events to match the
28149 names used in C# and JS, as it's been singularly annoying to
28150 remember that ButtonPressEvent -> MouseLeftButtonDown, etc. Also
28151 rename all the Handle* event methods to Emit*, as that's all they
28152 do. Make them nonvirtual, as the traversal and emission of the
28153 events now happens in runtime.cpp. Add a new virtual
28154 method (HitTest), that is overridden by the container elements,
28155 which appends elements that are going to bubble the event to the
28158 * panel.h, panel.cpp: remove all the Handle* methods, implement
28161 * control.h, control.cpp: remove all the Handle* methods,
28164 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
28166 * media.cpp (UpdateProgress): Don't SetValue() unless the delta
28167 was large enough - otherwise we could get into a situation where
28168 we never emit a progress changed event in a case where the data
28169 trickles in at < 0.05%.
28171 2008-01-04 Chris Toshok <toshok@ximian.com>
28173 * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
28174 up the clock hierarchy for the target property like we do with the
28177 2008-01-04 Chris Toshok <toshok@ximian.com>
28179 * media.h: add Image::DownloaderFailed.
28181 * media.cpp (Image::UpdateProgress): make sure to qualify the
28182 DownloadProgressProperty we lookup on the Downloader, since
28183 without the Downloader:: it'll try to get
28184 Image::DownloadProgressProperty, which will always return 0.0.
28185 (Image::SetSource): use the static qualifier for
28186 events (Downloader:: instead of downloader->).
28187 (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
28189 * brush.cpp (ImageBrush::image_progress_changed): make sure to set
28190 our ImageBrush::DownloadProgressProperty before emitting the
28192 (brush_init): lookup the ImageBrush::ImageFailedEvent.
28194 2008-01-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
28196 * runtime.cpp: Free background_color upon surface
28197 destruction. Fixes a minor leak.
28199 * clock.cpp|h: Free the tick_call_mutex upon destruction.
28201 2008-01-03 Jeffrey Stedfast <fejj@novell.com>
28203 Fix for bug #350962
28205 * media.cpp (MediaBase::OnPropertyChanged): Don't emit
28206 DownloaderProgressChanged events anymore, leave that up to Image
28207 and MediaElement classes so that we don't emit events when an
28208 outside source changes the value.
28209 (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
28210 event if the proper download delta has occured.
28211 (Image::UpdateProgress): Same.
28213 2008-01-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
28215 * dependencyobject.h: Remove warning.
28217 2007-12-31 Jeffrey Stedfast <fejj@novell.com>
28219 * runtime.h (CreateDownloader): Simplified.
28221 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28223 * collection.cpp: Upon destruction on VisualCollection, remove the visual
28224 parent of all items.
28225 * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
28227 * dirty.cpp: Don't take a ref in DirtyNode.
28229 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28231 * media.cpp: Add const modifier
28233 2007-12-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
28235 * downloader.cpp: Null-initialize a field.
28236 * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
28238 2007-12-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28240 * pipeline.h: Added, the start of the new media pipeline.
28242 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
28244 * collection.cpp|h: Add missing method AddStylusPoints for
28245 StylusPointCollection
28247 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
28249 * geometry.h: Remove hack for PathGeometry::FiguresProperty
28250 * xaml.cpp: If a collection is null by default then we must call
28251 parent->SetValue(dp, collection) or the collection, and it's
28252 contents, won't be available. Fix (correctly) Chess.
28254 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
28256 * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
28257 there's no default Figure collection. Fix Chess crasher.
28258 * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
28259 foir doubles, and as an "empty" (but not NULL) Value for
28262 2007-12-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
28264 * media.cpp, media.h: Implement support for markers as a separate stream
28265 (the demuxer will call a callback when it encounters any streamed
28268 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
28270 * xaml.cpp: Add create_item_func for PathFigureCollection. This is
28271 now needed since it defaults to null and not an empty collection.
28273 2007-12-19 Stephane Delcroix <sdelcroix@novell.com>
28275 * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
28277 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
28279 * color.cpp: Handle empty string correctly in color_from_str. Unit
28280 tests shows this return 0 (and not transparent).
28282 2007-12-18 Stephane Delcroix <sdelcroix@novell.com>
28284 * xaml.cpp: fix for bnc 348581.
28286 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
28288 * brush.cpp: Fix default color values for SolidColorBrush::Color and
28289 GradientStop::Color properties (see js unit tests).
28290 * geometry.cpp|h: Remove default collection from PathGeometry. Fix
28291 testPathGeometry unit test.
28293 2007-12-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
28295 * media.cpp: ReadASFMarkers: Read markers as well as script commands.
28296 Subtract the preroll value from the pts before adding the marker. Unref
28297 the created collection and markers when finished with them.
28298 AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
28299 frame (might be necessary if the last frame has a marker).
28301 2007-12-17 Jb Evain <jbevain@novell.com>
28303 * xaml.cpp: fix testMatrixWithZeroItem test case.
28305 2007-12-17 Jb Evain <jbevain@novell.com>
28307 * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
28308 value type, has SL exposes it as a DependencyObject.
28310 * transform.cpp|h: define and implement the
28311 Matrix DependencyObject type.
28313 * xaml.cpp: create a Matrix DO on a Matrix xaml element.
28314 Also create such an object with the <MatrixTransform Matrix='...'>
28317 2007-12-17 Sebastien Pouliot <sebastien@ximian.com>
28319 * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
28320 is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
28322 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
28324 * runtime.cpp (fps_report_default): Default printf FPS report
28326 (Surface::render_cb): Use instance-local variables for keeping
28327 track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
28330 * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
28331 (class Surface): New method to set the FPS report callback for a
28334 2007-12-14 Chris Toshok <toshok@ximian.com>
28336 * type.cpp.in, type.cpp (types_init_register_events): need to
28337 register DownloadProgressChanged and ImageFailed events on
28340 * brush.h, brush.cpp: same, and hook up the events from
28341 ImageBrush's embedded image so that we can re-emit the events.
28343 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
28345 * downloader.cpp (Downloader::Abort): Don't abort if we've already
28346 been aborted or been notified that we've failed (needed protection
28347 for the Plugin downloader).
28348 (Downloader::Send): Set aborted = false.
28349 (Downloader::NotifyFailed): Don't do anything if we've already
28350 been notified of failure for this download request.
28352 * downloader.h (class Downloader): Keep track of aborted state as
28355 2007-12-14 Stephane Delcroix <sdelcroix@novell.com>
28357 * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
28358 only one (Width XOR Height) is provided.
28360 2007-12-14 Sebastien Pouliot <sebastien@ximian.com>
28362 * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
28363 been built before calling cairo_stroke_extents. This fix sample
28364 http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
28366 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
28368 * shape.cpp|h: Shortcut path bounds calculation when both Width
28369 and Height are specified. Add same clipping rules to Line,
28370 Polyline and Polygon classes.
28372 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
28374 * geometry.cpp: Resume using cairo_stroke_extents in some cases
28375 because we need very precise bounds for Fill to work properly.
28376 This fix Sprawl's cowboy hat ribbon :-)
28378 2007-12-12 Stephane Delcroix <sdelcroix@novll.com>
28380 * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
28382 2007-12-11 Jeffrey Stedfast <fejj@novell.com>
28384 * downloader.cpp|h: Made the ::Write() method take the same
28385 int-type args as the NPP_Write() function (which means int32 for
28386 both offset and nbytes).
28388 2007-12-11 Sebastien Pouliot <sebastien@ximian.com>
28390 * stylus.cpp: Fix JS unit tests for Stroke properties by having
28391 a default DrawingAttributes inside the Stroke.
28393 2007-12-10 Chris Toshok <toshok@ximian.com>
28395 * dependencyobject.h, dependencyobject.cpp: more event changes.
28396 events keep a integer "token" per event, that starts at 0, that is
28397 returned from the plugin's addEventListener method, and can be can
28398 be passed to the plugin's removeEventListener method.
28400 2007-12-10 Sebastien Pouliot <sebastien@ximian.com>
28402 * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
28403 property of the Shape. Fix bug #346018
28405 2007-12-10 Jeffrey Stedfast <fejj@novell.com>
28407 * runtime.cpp (InitializeDrawingArea): Removed the call to
28408 gtk_widget_set_size_request() - we now call it elsewhere (since
28409 going fullscreen requiers us to call set_size_request() /before/
28410 calling gtk_window_fullscreen(). When going to fullscreen mode,
28411 this was causing the FullScreenMessage item to appear in the
28412 upper-left corner rather than centered like it should have been.
28413 (Surface): Make the call to gtk_widget_set_size_request() here now
28414 that it no longer is called inside InitializeDrawingArea().
28416 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
28418 * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
28419 * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
28420 bounds calculation on paths when Height *and* Width are present.
28422 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
28424 * shape.cpp: In Shape::ComputeBounds don't compute half thickness
28425 unless the value is needed.
28427 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
28429 * xaml.cpp: Plug more leaks.
28431 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
28433 * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
28434 detected by the javascript tests.
28436 2007-12-06 Jeffrey Stedfast <fejj@novell.com>
28438 * media.cpp (media_element_get_attributes): Added.
28439 (media_element_set_attributes): Added.
28440 (MediaElement): Set an empty list of attributes as per the spec.
28442 2007-12-06 Stephane Delcroix <sdelcroix@novell.com>
28445 * brush.cpp: implement RelativeTransform for image brushes and
28446 LinearGradientBrush. RadialGradientBrush still missing.
28448 2007-12-06 Chris Toshok <toshok@ximian.com>
28450 * dependencyobject.h, dependencyobject.cpp: make
28451 EventObject::AddHandler return the id (when using the event_name
28454 2007-12-06 Chris Toshok <toshok@ximian.com>
28456 * xaml.cpp (xaml_init): register the right constructors for
28457 PathSegmentCollection, GeometryCollection, and
28458 TransformCollection.
28460 2007-12-05 Chris Toshok <toshok@ximian.com>
28462 * animation.cpp, animation.h: a couple of fixes. Move away from
28463 watching the clock state in AnimationStorage and resetting the
28464 property value there. instead, just override Clock::Stop in
28465 AnimationClock and call ResetPropertyValue on the storage.
28467 Also, when a storyboard's clock group is stopped, free it and
28468 remove it from the parent clock's list of children. This should
28469 keep us from growing the number of clocks over time for
28470 storyboards which don't have Begin() called again (the only
28471 circumstance under which we destroy the clock).
28473 * clock.cpp, clock.h: handle the case where a clock can be started
28474 and then stopped before the next clock tick. This happens when
28475 you move the mouse very quickly over the thumbnails in pageturn.
28477 2007-12-05 Sebastien Pouliot <sebastien@ximian.com>
28479 * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
28480 (no path provided). Fix Build/ComputeBounds when no center point
28483 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
28485 * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
28486 dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
28487 and make it a real property with accessors.
28489 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
28491 * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
28492 animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
28493 logical_parent/SetLogicalParent/GetLogicalParent.
28495 2007-12-04 Larry Ewing <lewing@novell.com>
28497 * media.cpp (Image::Render): fix the conditions for the opacity
28500 2007-12-03 Larry Ewing <lewing@novell.com>
28502 * src/media.cpp (Image::Render): use paint_with_alpha if opacity
28503 is changing, use the old buffered alpha if it is not.
28505 2007-12-04 Jb Evain <jbevain@novell.com>
28507 * stylus.cpp|h: add stylus_info_get_current function.
28508 Right now, it's an hack which always return a StylusInfo
28509 of type Mouse, not inverted.
28511 2007-12-03 Chris Toshok <toshok@ximian.com>
28513 * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
28514 it now clamps to [0,duration_timespan]. This fixes the Simon
28515 "button flying off the screen" bug.
28517 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
28519 * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
28520 iterating thru the list 6 times :)
28521 (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
28522 child_clocks list here too, or we end up corrupting memory.
28524 2007-12-03 Larry Ewing <lewing@novell.com>
28526 * media.cpp (Image::Render): wrap the region clipping in a #define
28529 2007-12-03 Larry Ewing <lewing@novell.com>
28531 * media.cpp (Image::Render): remove accumulated drawing cruft.
28533 2007-12-03 Chris Toshok <toshok@ximian.com>
28535 * animation.cpp: put back in the calls to ComputeBeginTime that I
28536 accidentally committed a few days ago (and lewing reverted to fix
28537 the build). they're needed with the new clock changes.
28539 2007-12-03 Chris Toshok <toshok@ximian.com>
28541 * clock.cpp, clock.h: rework the clock code a bunch. There are a
28542 couple of large changes.
28544 Get rid of the stupid new_ and current_ fields. Just update the
28545 field immediately. This cuts down on logic in if checks, and also
28546 makes subclocks update much faster in relation to their parent
28547 clock (we used to have to wait 1 tick per level in the tree for
28548 state to propagate).
28550 Abstract out all the QueueEvent calls into setters in clock.h.
28552 Break up Clock::Tick some, so more of the code is reusable from
28553 ClockGroup::Tick without having to call Clock::Tick and then work
28556 2007-12-03 Sebastien Pouliot <sebastien@ximian.com>
28558 * brush.cpp: Fix breakage introduced in r90549 (the matrix is
28559 already set on the pattern).
28561 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
28563 * dependencyobject.cpp (RemoveHandler): Simplified a little.
28565 * animation.cpp (Stop): Remove the CompletedEvent root_clock
28566 handler. Fixes Simon's GAME OVER! textblock storyboard.
28568 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
28570 * runtime.cpp: Added clipping/bounding-box override values.
28572 * uielement.cpp (DoRender): Changed optional bounding-box/clipping
28573 debugging drawing based on runtime settable bitflags.
28575 2007-12-03 Larry Ewing <lewing@novell.com>
28577 * uielement.cpp: Clean up the debug rendering code for bounding
28578 boxes and clip regions.
28580 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
28582 Fixes a bug pointed out by Larry when rendering lines beginning
28583 with a 'J', where the tail escapes the bounding box.
28585 * font.cpp (Layout): Use the horiBearingX font metric.
28586 (RenderLine): Same.
28588 2007-12-03 Larry Ewing <lewing@novell.com>
28590 * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
28591 if we can't invert the matrix but still draw someting.
28593 2007-11-29 Larry Ewing <lewing@novell.com>
28595 * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
28596 bounds to the clip region as well.
28598 * control.cpp (Control::ComputeBounds): differenciate between our
28599 bounds and our subpath bounds.
28601 * control.h: add bounds_with_children and GetSubpathBounds ().
28603 2007-11-29 Jeffrey Stedfast <fejj@novell.com>
28605 * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
28606 the font face charmap, use unichar = 0 rather than returning NULL.
28608 2007-11-28 Chris Toshok <toshok@ximian.com>
28610 * runtime.cpp (Realloc): when we Realloc(), we need to tell the
28611 toplevel canvas to update its bounds. This *may* be wrong, but it
28612 definitely fixes matrix.
28613 (UpdateFullScreen): we need to stop the timesource when emitting
28614 the fullscreenchangeevent. otherwise we can end up stuck in a
28615 nested glib mainloop and never return from the emit (actually we
28616 never even invoke the JS callback in matrix. the nested loop
28617 happens somewhere deep in the bowels of NPN_Invoke).
28619 2007-11-28 Jeffrey Stedfast <fejj@novell.com>
28621 * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
28622 hack that forced the assumption of a streaming (vs progressive)
28623 media download. Also fixed to emit a DownloadProgressChanged event
28624 at progress == 1.0 (which is what th Silverlight book says we're
28627 2007-11-28 Larry Ewing <lewing@novell.com>
28629 * src/uielement.cpp (UIElement::DoRender): make sure we don't
28630 leave a path on the cairo context when clipping.
28632 2007-11-28 Chris Toshok <toshok@ximian.com>
28634 * uielement.cpp (UIElement::UIElement): compute the initial total
28635 hit test visibility.
28637 * dirty.cpp (process_dirty_elements): don't invalidate/update
28638 bounds when the hit test visibility changes.
28640 * frameworkelement.(h,cpp): calculate the bounds here using
28643 * panel.cpp: chain up to frameworkelement.
28645 2007-11-27 Jeffrey Stedfast <fejj@novell.com>
28647 * text.cpp (TextBlock::SetValue): Check the resulting Inlines
28648 collection formed from the Text property being set against the old
28649 Inlines - if no change, don't set the new Inlines collection,
28650 simply keep using the old. The idea is to prevent unnecessary
28651 layout re-calculations and invalidates.
28653 2007-11-27 Chris Toshok <toshok@ximian.com>
28655 * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
28656 canvas.cpp, collection.cpp, shape.cpp:
28658 rather large change - don't use a large rectangular bounding box
28659 encompassing both the panel's frameworkelement bounds as well as
28660 the bounds of all its children. Instead, only worry about the
28661 frameworkelement bounds, and let the children invalidate
28662 themselves. but do all this in a way that we still use the
28663 subtree's bounding box to prune rendering and hit testing.
28665 since we won't be invalidating the entire box surrounding all
28666 children, we need to propagate visibility information down the
28667 tree as we do opacity.
28669 This should really speed up most animations (such as those in
28670 sprawl and airlines) since we'll be invalidating far smaller
28673 (this code was stupidly hard for lewing and me to get right. yay
28676 2007-11-23 Larry Ewing <lewing@novell.com>
28678 * runtime.cpp: add show=expose to toggle expose display.
28680 2007-11-22 Jb Evain <jbevain@novell.com>
28682 * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
28683 a glib warning if set_properties is NULL.
28685 2007-11-21 Chris Toshok <toshok@ximian.com>
28687 * media.cpp (MediaElement::UpdateProgress): only set 1 of
28688 DownloadProgressProperty and BufferingProgressProperty. The
28689 former is used if we're playing progressively, the latter if we're
28690 buffering before playing. This fixes the buffering animation on
28693 2007-11-21 Chris Toshok <toshok@ximian.com>
28695 * runtime.cpp (Surface::Invalidate): add the int case around the
28696 complete expression to quiet gcc.
28698 2007-11-20 Larry Ewing <lewing@novell.com>
28700 * runtime.cpp (Surface::expose_event_callback): take allocation
28701 offsets into account when invalidating and drawing. Fixes
28704 2007-11-20 Chris Toshok <toshok@ximian.com>
28706 * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
28707 2.12, destroy the hash table and set it to NULL so we'll recreate
28710 2007-11-20 Chris Toshok <toshok@ximian.com>
28712 * collection.cpp (VisualRemoved): switch from using
28713 item->parent->ChildInvalidated(UIElement), use
28714 item->parent->Invalidate (item->GetBounds()).
28716 * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
28717 Invalidate (Region*) and update calls to it. Remove
28718 ChildInvalidated(UIElement*). Also, remove all references to the
28719 children_dirty_region field. everything goes through dirty_region
28722 * dirty.cpp: switch to using item->parent->Invalidate instead of
28723 item->parent->ChildInvalidated, and remove references to
28724 children_dirty_region.
28726 2007-11-20 Chris Toshok <toshok@ximian.com>
28728 * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
28729 copy before emitting an event.
28731 2007-11-20 Jeffrey Stedfast <fejj@novell.com>
28733 * runtime.cpp (surface_get_toplevel): Removed.
28735 * uielement.cpp (uielement_get_isloaded): Removed.
28737 2007-11-20 Jb Evain <jbevain@novell.com>
28739 * downloader.h (Downloader): override SetSurface and GetSurface
28740 to work on a custom surface field.
28741 * downloader.cpp (Downloader::Downloader): initialize
28743 * runtime.h (Surface::CreateDownloader): initialize the surface
28745 * collection.cpp: when removing an UIElement from an UIElementCollection,
28746 clear out its surface to NULL.
28747 * visual.cpp: remove null check preventing to set the surface to NULL.
28748 * dependencyobject.cpp: (DependencyObject::FindName): if the
28749 current DO has no parent, fallback to its surface to try
28750 FindName on its top level element (needed to call FindName
28751 on a downloader for instance). Fixes #335018.
28753 2007-11-20 Jackson Harper <jackson@ximian.com>
28755 * xaml.cpp: If we need to reparse the attributes for an element
28756 (because we loaded a class and the props need to be set on the new
28757 class) we have to clear out the hash of properties that are marked
28758 as already set. Otherwise we get a property already set error.
28760 2007-11-20 Jackson Harper <jackson@ximian.com>
28762 * xaml.cpp: Add new function to create a value from a string
28763 without having the Kind available (you still need to have the type
28765 - SetAttribute now ensures that the attribute was set properly
28766 - If the object we are trying to set an attribute on is a managed
28767 object and there is no DependencyProperty for the attribute, we
28768 try setting the attribute on the object.
28770 2007-11-20 Sebastien Pouliot <sebastien@ximian.com>
28772 * uielement.cpp: Ensure the default value for VisibilityProperty
28773 is VisibilityCollapsed even if the value is invalid (for Javascript
28774 compatibility, since 1.1 should throw an exception). See #340799
28776 2007-11-20 Stephane Delcroix <sdelcroix@novell.com>
28778 * uielement.cpp: FullInvalidate on setting Viibility to Visible.
28781 2007-11-19 Larry Ewing <lewing@novell.com>
28783 * uielement.cpp: setup the clip before push/pop group so that
28784 we reduce the temp surface size.
28786 2007-11-16 Sebastien Pouliot <sebastien@ximian.com>
28788 * transform.cpp: Use cairo_matrix_init_translate instead of
28789 cairo_matrix_init + cairo_matrix_translate where possible (which
28790 avoid the multiplication with the identity matrix).
28792 2007-11-16 Jeffrey Stedfast <fejj@novell.com>
28794 * runtime.cpp (surface_get_toplevel): New function needed by the
28795 managed land to implement a bit of a hack for the Resize
28796 event (when someone connects to the Resize event, if the toplevel
28797 canvas is already loaded, we want to immediately call the
28800 * uielement.cpp (uielement_get_isloaded): Same.
28802 2007-11-15 Jackson Harper <jackson@ximian.com>
28805 * parsertest.cpp: Some tests I use for checking the parsing
28808 2007-11-15 Jackson Harper <jackson@ximian.com>
28810 * color.h: Add equality operators.
28812 2007-11-15 Jackson Harper <jackson@ximian.com>
28814 * xaml.cpp: use isalpha for determining whether or not an int32 is
28815 an enum. This allows things like -1 to work.
28817 2007-11-15 Jackson Harper <jackson@ximian.com>
28819 * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
28822 2007-11-15 Jackson Harper <jackson@ximian.com>
28825 * rect.h|cpp: Update signatures to allow for error checking when
28826 creating types from strings.
28827 * xaml.h|cpp: Consolidate code to create values from strings, add
28828 some error checking. Update most of the parsing methods so it is
28829 possible to return errors when parsing.
28830 * playlist.cpp: Sig update.
28832 2007-11-15 Jackson Harper <jackson@ximian.com>
28834 * stylus.h|cpp: Initialize these collections so we don't get NULLs
28835 for GetValue on them.
28837 2007-11-14 Chris Toshok <toshok@ximian.com>
28839 * runtime.cpp (strcase_hash): swap this out for mono's eglib
28840 implementation, augmented with g_ascii_tolower, to remove the
28841 malloc/free and 2 passes over the string.
28843 2007-11-14 Chris Toshok <toshok@ximian.com>
28845 * dependencyobject.cpp: move the strcase_hash/equals functions...
28847 * runtime.cpp: here.
28849 * runtime.h: and make them public.
28851 * type.cpp.in, type.cpp (RegisterEvent): and use them here
28852 (RegisterType): and here.
28854 2007-11-14 Jb Evain <jbevain@novell.com>
28856 * media.cpp|h: remove specific Image and MediaElement
28857 accessors for progress property now that the code
28858 moved to MediaBase.
28860 2007-11-14 Jb Evain <jbevain@novell.com>
28862 * type.cpp.in, type.cpp, media.h, media.cpp: Move
28863 DownloadProgressProperty and DownloadProgressChangedEvent
28864 to MediaBase so it gets shared for both Image and MediaElement.
28867 2007-11-14 Jb Evain <jbevain@novell.com>
28869 * value.h.in: update code template to match current value.h.
28871 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
28873 * openfile.cpp: Added support for Filter and FilterIndex.
28875 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
28877 * animation.cpp: Replaced g_assert_not_reached with g_warning.
28878 At least until #340799 (enum validation) is fixed. Part of #335413
28879 * shape.cpp: Add g_warning to replace the g_assert_not_reached
28880 removed earlier. At least until #340799 (enum validation) is fixed.
28881 * uielement.cpp: Replaced g_assert_not_reached with g_warning.
28882 At least until #340799 (enum validation) is fixed. Part of #335413
28884 2007-11-13 Miguel de Icaza <miguel@novell.com>
28886 * value.cpp (Value::ToString): Add method to help debug some
28889 2007-11-13 Jeffrey Stedfast <fejj@novell.com>
28891 * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
28894 2007-11-13 Sebastien Pouliot <sebastien@ximian.com>
28896 * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush
28897 as this is unrequired (API wise) and can be expensive (it was enough
28898 to add custom bound calculation code to shapes and geometries).
28900 2007-11-12 Sebastien Pouliot <sebastien@ximian.com>
28902 * shape.cpp: Removed g_assert_not_reached and, if any bad value is
28903 supplied (should be catched well before that, #340799), use the
28904 default value. Fix part of #335413
28906 2007-11-09 Chris Toshok <toshok@ximian.com>
28908 * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
28909 convert this over to using our List class. Also fix a bug where
28910 elements with down dirty flags weren't being inserted propertly
28911 into the up dirty list.
28913 2007-11-09 Sebastien Pouliot <sebastien@ximian.com>
28915 * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
28917 2007-11-09 Miguel de Icaza <miguel@novell.com>
28919 * value.h (struct Value): Cope with NULL strings.
28921 2007-11-09 Jackson Harper <jackson@ximian.com>
28923 * xaml.cpp: Closepath needs to draw a line to the path's starting
28924 point and needs to create a new path figure element at the
28927 2007-11-09 Jackson Harper <jackson@ximian.com>
28929 * type.cpp|h.in: Add an accesor for the ContentProperty name.
28931 2007-11-09 Jackson Harper <jackson@ximian.com>
28933 * xaml.cpp: Rework to allow unparented properties. createFromXaml
28934 ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
28935 basically ignore the property and will return the SolidColorBrush
28936 as the top element. This fixes 335865.
28938 2007-11-08 Chris Toshok <toshok@ximian.com>
28940 [ may go a long way toward fixing #337714, if it doesn't fix it
28943 * uielement.h, uielement.cpp: add an overload of ChildInvalidated
28944 that takes a UIElement* instead of a region. The implementation
28945 just invalidates the entire bounds of the child in the parent.
28947 * collection.h, collection.cpp: we weren't breaking the
28948 item->parent link when removing visuals from a VisualCollection.
28949 Add VisualRemoved, which invalidates the child's region (and stop
28950 using child->Invalidate, since that won't work once the link to
28951 the parent is broken) and breaks the parent link. Call
28952 VisualRemoved from everywhere we remove/replace a visual in our
28953 collection. Also, rename VisualUpdated to VisualAdded, since
28954 that's more indicative of why the method is being called.
28956 2007-11-08 Jeffrey Stedfast <fejj@novell.com>
28958 * runtime.cpp (Attach): Emit the Resize event.
28959 (drawing_area_size_allocate): Emit the Resize event.
28961 2007-11-07 Chris Toshok <toshok@ximian.com>
28963 * clock.cpp (Clock::Begin): guard against division by zero.
28965 2007-11-07 Chris Toshok <toshok@ximian.com>
28967 * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
28968 width the canvas tells the surface to be (if it does). this fixes
28969 issues uncovered by larry's improved bounds checking code. Also,
28970 remove the instance fields for screen_height/width. they're only
28971 used in one place, so make them local to that function.
28973 2007-11-07 Chris Toshok <toshok@ximian.com>
28975 * brush.h, brush.cpp: add some c++ setters/getters to make some
28976 code a little smaller.
28978 2007-11-06 Larry Ewing <lewing@novell.com>
28980 * src/frameworkelement.cpp: Force a full invalidate if the width
28981 or height property because panels include their children in the
28982 bounds compution and will pass the dirty check.
28984 * media.cpp: Implement the Region based rendering for MediaElement
28987 * panel.cpp: Unconditionally pass the region to the Children.
28989 * panel.cpp: when rendering children treat panels and other
28990 objects differently. For containers pass the clipped region
28991 directly, for elements subdivide the region and paint each block.
28992 Renable FindStartingElement with a slightly less expensive
28995 * rect.cpp: don't collapse complicated regions the drawing code is
28998 2007-11-06 Jeffrey Stedfast <fejj@novell.com>
29000 * font.cpp (TextFont): Fixed to not exit() even when no font could
29001 be loaded from FreeType.
29003 2007-11-06 Chris Toshok <toshok@ximian.com>
29005 * dependencyobject.cpp (GetObjectType): make this g_critical, and
29006 also print out a stack trace if STACK_DEBUG is enabled.
29008 * dependencyobject.h: stop Emitting the DestroyedEvent from the
29009 dtor. instead do it from unref before we delete the object.
29011 2007-11-05 Chris Toshok <toshok@ximian.com>
29013 * rect.h (ToGdkRectangle): quiet countless warnings.
29015 2007-11-05 Larry Ewing <lewing@novell.com>
29017 Merge most of dirty region branch. This makes the dirty logic and
29018 rendering code use the new region class to track more complicated
29019 shapes than bounding boxes when processing changed areas.
29021 * media.cpp: switch back to indirect rendering for drawing media
29022 elements until a solution to the boundry clipping can be found.
29024 * panel.cpp: disable FindStartingElement (the buggy) until a more
29025 optimal method can be found.
29027 * dirty.cpp: Use dirty regions. Process DirtyOpacity first (still
29028 needs to be fixed to order dirty children.
29030 2007-11-03 Chris Toshok <toshok@ximian.com>
29032 * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
29033 call SkipToFill if we have no active child clocks.
29034 (ClockGroup::Stop): simplify this.
29035 (ClockGroup::Seek): make this look a little more like ::Stop.
29037 2007-11-03 Chris Toshok <toshok@ximian.com>
29039 * xaml.cpp (repeat_behavior_from_str): add support for the
29040 "ff.ffx" format for repeat behaviors.
29042 * clock.cpp, clock.h: the first sizeable amount of work done in a
29043 while to correct the multitude of tiny bugs in clock handling.
29044 this gets AnimationMatrix.xaml maybe 40% working. Clean up and
29045 comment Clock::Tick a lot, and remove a bunch of the old
29046 CLOCK_DEBUG spew which was making the code that much more
29047 difficult to look at.
29049 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
29051 * font.cpp (TextFontDescription::SetScale): Removed, this hack
29052 wasn't working as well as I'd hoped.
29053 (TextFontDescription::GetScale): Same.
29054 (TextFontDescription::CreatePattern): If the requested font size
29055 is < 41.0 (seems to be the magic number where scaling loses impact
29056 on metrics), use FontSize=41.0 and do proper scaling to get the
29057 actual size we want. My worry was that asking for small font sizes
29058 (smaller than 16.0?) would look ugly with this hack, but that is
29059 surprisingly not true. By always requesting a font size that will
29060 yield the generic font metrics (e.g. not some hacked font size),
29061 we will always be able to wrap identically no matter what FontSize
29062 is requested (so long as the width gets scaled appropriately).
29064 * text.cpp (TextBlock::ComputeTransform): Removed.
29066 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
29068 * font.cpp (RenderLine): Render glyphs with index 0 too, so that
29069 we render an empty box for glyphs not in the font (just like
29072 * text.cpp (ComputeTransform): Fixed to use the correct matrix for
29073 getting the scale values.
29075 2007-11-01 Jackson Harper <jackson@ximian.com>
29083 * panel.h: Add ContentProperty 'attributes'.
29085 * type.cpp|h: Add content property information to types. This
29086 will be used by the parser and will allow the parser to drop it's
29087 special type system.
29089 2007-11-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
29091 * animation.cpp: AnimationStorage: unregister from registered events on
29094 2007-11-01 Jeffrey Stedfast <fejj@novell.com>
29096 * text.cpp (TextBlock::SetValue): Oops - if we are setting an
29097 empty string on the Text property, then we need to clear out
29098 whatever was there before (if anything).
29100 2007-10-31 Jeffrey Stedfast <fejj@novell.com>
29102 Fixes for handling lwsp cdata between <Run> elements.
29104 * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
29105 arg suggesting that we are being called in response to a new
29106 element starting vs an element ending.
29107 (start_element_handler): Pass true as the start arg to
29109 (end_element_handler): Pass false as the start arg to
29112 * text.cpp (SetValue): Only add a run if the string is non-empty.
29114 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29116 * dependencyobject.cpp: Guard against calling NULL.
29118 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29120 * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
29121 return value is always checked.
29123 2007-10-31 Chris Toshok <toshok@ximian.com>
29125 * trigger.cpp (EventTrigger::SetTarget,
29126 EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
29129 2007-10-31 Jackson Harper <jackson@ximian.com>
29131 * dependencyobject.h|cpp: Give DependencyProperties the ability to
29134 * animation.cpp: Signature updates
29136 2007-10-30 Jackson Harper <jackson@ximian.com>
29138 * xaml.h: Add the error args to the loader.
29139 * xaml.cpp: Make most of our parsing errors match Silverlight.
29141 2007-10-30 Jeffrey Stedfast <fejj@novell.com>
29143 * font.cpp (Path): Check the path data != NULL before we make any
29144 cairo calls, no sense wasting cycles if we will no-op in the end.
29146 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29148 * media.cpp, media.h: Fix signedness mismatch warning.
29150 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29152 * mplayer.h: Added asf_player field.
29154 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29156 * Makefile.am: Add files in asf/.
29157 * media.cpp, media.h: Read ASF markers from the file. Save the position when
29158 advancing frames. Use the difference between the last position and the
29159 current position to determine if any MarkerReached events are supposed
29161 * mplayer.cpp: Add some error checking/reporting when opening streams.
29162 Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
29163 to actually use it).
29165 2007-10-26 Jeffrey Stedfast <fejj@novell.com>
29167 * font.cpp (RenderLine): Split out from TextLayout::Render() and
29168 made to reset the brush at each segment to match Silverlight's
29171 2007-10-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
29173 * debug.cpp: Added print_gdb_trace with an explaining comment.
29174 * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
29177 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29179 * font.cpp (TextLayout::Render): Set y1 before creating/appending
29180 the path instead of in the segment loop.
29181 (TextLayout::Render): Make underline pos relative to y1 (aka the
29182 baseline) that we calculated above. Makes this easier to
29185 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29187 * font.cpp (TextLayout::Layout): Always calculate segment->width
29189 (TextLayout::Render): Not here.
29191 * text.cpp (Glyphs::GetTransformOrigin): Implemented.
29193 2007-10-25 Jackson Harper <jackson@ximian.com>
29196 * runtime.h|cpp: Add the Error event to the surface. Raising this
29197 event will cause the plugins onError handler to be invoked, the
29198 default onError handler notifies the user of the error with a
29201 2007-10-25 Sebastien Pouliot <sebastien@ximian.com>
29203 * stylus.cpp|h: Keep the semi-working code as a fast path to
29204 render strokes (if no outline color is used and when width ==
29205 height). Added a hack to support OutlineColor.
29207 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29209 * brush.cpp (Brush::SetupBrush): Now takes width and height
29210 arguments. Updated all brushes.
29212 * text.cpp (Glyphs::Render): We want to check this->width and
29213 this->height, not the width/height arguments.
29215 * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
29216 yet (surface = NULL), return.
29217 (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
29220 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
29222 * text.cpp (Glyphs::GetSizeForBrush): Implemented.
29224 * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
29226 2007-10-24 Jackson Harper <jackson@ximian.com>
29228 * type.cpp.in/h.in: Add some c-style functions for creating
29231 2007-10-24 Jackson Harper <jackson@ximian.com>
29234 * type.cpp.in/h.in: Add a create instance call to types. This
29235 will allow the parser to use our Type object instead of creating
29238 2007-10-24 Chris Toshok <toshok@ximian.com>
29240 * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
29241 g_main_context_iteration so we don't block if there isn't anything
29242 to do. also, emit 3 TickEvents to make sure the tick is
29243 propagated down into the animations.
29245 2007-10-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
29247 * xaml.cpp: No need to check if the created object is an UIElement before
29248 calling SetSurface anymore.
29249 * visual.h: Update SetSurface to virtual.
29250 * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
29252 * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
29253 the methods do nothing, the surface is still stored in Visual, but this
29254 allows classes that do not inherit from Visual to correctly set the
29255 surface on their members which do inherit from Visual).
29257 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
29259 * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
29261 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
29263 * text.cpp (TextBlock::ComputeTransform): If the scale has
29264 changed, set dirty = true so that we recalculate the layout.
29266 * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
29267 macro, just do it w/o so that we hush the compiler warning.
29269 2007-10-23 Chris Toshok <toshok@ximian.com>
29271 * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
29272 a clock in absolute terms. instead, offset it from the current
29273 time of the parent clock (or time manager).
29274 (Clock::Begin): clamp progress to 1.0
29275 (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
29276 by making it less sensitive to immediate changes.
29278 2007-10-23 Chris Toshok <toshok@ximian.com>
29280 * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
29281 audio (so we sync to the clock).
29283 * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
29285 2007-10-23 Chris Toshok <toshok@ximian.com>
29287 * clock.cpp (ManualTimeSource::SetCurrentTime): call
29288 g_main_context_iteration as a stopgap to make video elements show
29290 (TimeManager::TimeManager): remove spew.
29291 (TimeManager::Tick): re-enable the clock throttling. oops.
29293 2007-10-23 Larry Ewing <lewing@novell.com>
29295 * src/runtime.cpp: clear the background in more cases.
29297 2007-10-23 Larry Ewing <lewing@novell.com>
29299 * src/runtime.cpp: make the eventbox windowless and remove the
29300 stale event code. Let gtk do the clearing.
29302 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
29304 * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
29305 (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
29306 the correct frame rather than just rendering the first frame we
29309 2007-10-23 Chris Toshok <toshok@ximian.com>
29311 * mplayer.cpp: replace all occurences of av_gettime with
29312 TimeManager::Instance()->GetCurrentTimeUsec().
29314 * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
29316 (render_cb): re-enable the fps on the console. oops.
29318 * runtime.h (RuntimeInitFlags): add
29319 RUNTIME_INIT_TIMESOURCE_MANUAL.
29321 * type.h.in, type.cpp.in: remove BASE (should have happened on my
29322 last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
29325 * type.h, type.cpp: sync to the .in files.
29327 * clock.h, clock.cpp: add the idea of a TimeSource to the
29328 TimeManager. Two are written - SystemTimeSource, which uses the
29329 gtk timeout, and ManualTimeSource, which allows code to set what
29330 the global time should be. Also, add GetCurrentTimeUsec() for use
29331 by mplayer, so we can switch it away from av_gettime and make it
29332 possible for video to sync to the ManualTimeSource.
29334 2007-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
29336 * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
29338 2007-10-23 Larry Ewing <lewing@novell.com>
29340 * runtime.cpp: make sure we unref the surface.
29342 2007-10-23 Larry Ewing <lewing@novell.com>
29344 * runtime.cpp: avoid making gdk calls that pull in the platform
29347 2007-10-22 Jeffrey Stedfast <fejj@novell.com>
29349 * text.cpp: Don't allow Pango rendering if disabled at
29351 (TextBlock::ComputeTransform): Moved the scale logic here from
29352 OnPropertyChanged() so that we catch all transform changes.
29354 * uielement.h: Made ComputeTransform() virtual.
29356 2007-10-22 Chris Toshok <toshok@ximian.com>
29358 * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
29359 we can just cast to Clock here.
29361 * dependencyobject.h, dependencyobject.cpp: remove the Base class,
29362 and make roll EventObject and Base into one class (still called
29365 2007-10-20 Sebastien Pouliot <sebastien@ximian.com>
29367 * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
29368 * stylus.cpp|h: Add some missing functions. Rendering changes
29369 (not active, work in progress).
29371 2007-10-18 Chris Toshok <toshok@ximian.com>
29373 * dependencyobject.h: fix comment.
29375 * animation.h, animation.cpp: use the
29376 Clock::CurrentStateInvalidated event to reset the property value
29377 to baseValue instead of overriding the Clock::Stop method. This
29378 fixes clocks with FillBehavior="Stop" instead of storyboard with
29379 FillBehavior="Fill".
29381 * clock.cpp (Clock::Tick): remove a stupid block of code that was
29382 causing clocks which were Filling to spontaneously end up in their
29383 Active state again.
29385 2007-10-18 Sebastien Pouliot <sebastien@ximian.com>
29387 * geometry.cpp: New code to handle arc segments. No known issues
29388 (except the handling of near zero values which doesn't seems to
29390 * libmoon.h, Makefile.am: Remove reference to rsvg.h
29391 * rsvg.cpp|h: Remove from SVN.
29393 2007-10-17 Andrew Jorgensen <ajorgensen@novell.com>
29395 * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
29396 based on the ones from libgdiplus.
29398 2007-10-17 Chris Toshok <toshok@ximian.com>
29400 * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
29401 created managed dob to the created_elements list so it gets
29403 (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
29404 (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
29406 2007-10-17 Chris Toshok <toshok@ximian.com>
29408 * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
29409 (sizes_LDADD): same.
29411 2007-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
29413 * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
29414 OBJECT_TRACKING isn't defined.
29415 * runtime.h: Enable the contextual downloader warning again.
29416 * dependencyobject.cpp: Fix build when DEBUG is defined.
29418 2007-10-16 Jeffrey Stedfast <fejj@gnome.org>
29420 * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
29421 properties changing value, don't fall thru to the rest of the
29422 checks (as then we'd re-emit it to sublisteners which isn't what
29423 we want I don't think). Also, don't change the font scale unless
29424 it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
29426 2007-10-16 Jeffrey Stedfast <fejj@novell.com>
29428 * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
29429 changes and apply the y-scale to the font so that we can more
29430 accurately path the font glyphs at the scale we intend to render
29433 * font.cpp (TextFont): Cache the scale here.
29434 (Kerning): Apply the scale.
29435 (Descender): Here too.
29436 (Ascender): And here.
29438 (GetGlyphInfo): Create and apply the scale/invert matrix. Also
29439 scale the glyph metrics.
29440 (UnderlinePosition): Apply the scale.
29441 (UnderlineThickness): Same here.
29442 (TextFontDescription): Added a scale, default to 1.0
29443 (CreatePattern): Set the scale on the pattern.
29444 (UnsetFields): When unsetting values, restore them to their
29446 (Merge): Merge the scale.
29447 (GetScale): New method.
29448 (SetScale): New method.
29450 2007-10-16 Chris Toshok <toshok@ximian.com>
29452 * dependencyobject.cpp (detach_depobj_values): call
29453 obj->SetParent(NULL) here as well, so we don't reference a
29456 * runtime.cpp (Surface::Surface): use Surface::timeline instead of
29458 (Surface::~Surface): make sure to remove the surface's clock_group
29459 from the time manager. Also, unref the timeline we create in the
29461 (runtime_shutdown): reimplement the oldest 10 alive object
29462 printing stuff in the face of using a hashtable.
29464 * runtime.h: add Surface::timeline, so we can clean it up in
29467 * dependencyobject.h (Base::) use a hash table to track alive
29468 objects instead of a list. this speeds up things immensely.
29470 * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
29471 children so any further GetParent() calls won't return a destroyed
29474 * animation.cpp (Storyboard::~Storyboard): guard against a crash
29475 when a parent clock is freed before the child clock.
29477 * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
29479 2007-10-15 Chris Toshok <toshok@ximian.com>
29481 * animation.[h,cpp]: remove the strong reference from
29482 AnimationStorage to its target object, and instead use the
29483 EventObject::DestroyEvent to implement a weak reference. See the
29484 TODO for a blurb about generalizing this.
29486 * typegen.cs (GenerateTypeCpp): remove the special case code that
29487 makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
29488 EVENTOBJECT as the parent for the DestroyedEvent to line up
29489 properly in the event tables.
29491 * type.cpp.in, type.cpp (types_init_register_events): register the
29494 * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
29495 emitted just before we clean up the EventObject's event list.
29497 2007-10-15 Jeffrey Stedfast <fejj@novell.com>
29499 * text.cpp (Layout): I think I finally figured out the scaling to
29500 apply to the units provided in the Indices property and also
29501 discovered that the Advance is not applied at the uOffset, it is
29502 applied independently of the uOffset.
29503 (Render): Same fixes as in Layout().
29505 2007-10-13 Chris Toshok <toshok@ximian.com>
29507 * animation.cpp (balf): fix bug 325175 by not taking the square
29508 root of a negative number (fixes the flashing in the credits for
29509 Monotone.) Also clean up this code so that we're not using
29510 globals to communicate parameters (through Simpson) between balf
29511 and BezierArcLength, and lower the tolerance (I doubt we need
29512 *that* much precision).
29514 2007-10-12 Chris Toshok <toshok@ximian.com>
29516 * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
29517 dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
29518 transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
29519 which gives the actual object whose property changed. Also, in a
29520 few instances fix the NotifyAttachersOnPropertyChanged call that
29521 some classes used to not use the subprop, but the prop. The
29522 subprop doesn't refer to "this" in those instances, but to @obj.
29523 @prop refers to "this".
29525 * collection.[h,cpp]: use the above change to correctly support
29526 the DependencyObject parameter of OnCollectionChanged (when the
29527 change type is ItemChanged).
29529 * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
29530 move the ZIndex property support from UIElement to Panel, which
29531 makes more logical sense (and is likely the reason MS removed the
29532 property from UIElement in 1.1) -- ZIndex is about what happens to
29533 this UIElement in relation to its siblings.
29535 2007-10-12 Sebastien Pouliot <sebastien@ximian.com>
29537 * shape.cpp: Only set miter limit if line join is set to miter.
29539 2007-10-12 Chris Toshok <toshok@ximian.com>
29541 * collection.cpp: move the panel logic away from VisualCollection.
29542 It belongs in Panel::OnCollectionChanged.
29544 * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
29545 everything the VisualCollection code used to do on its behalf.
29547 * uielement.h, uielement.cpp: introduce a new field for use with
29548 the dirty code - force_redraw_of_new_bounds. Basically, we set
29549 the field according to the parameter passed to UpdateBounds.
29551 * dirty.cpp (UpdateBounds): force an invalidate if
29552 el->force_redraw_of_new_bounds is set.
29554 2007-10-12 Chris Toshok <toshok@ximian.com>
29556 * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
29557 RemoveTimeout) which wrap the glib timeout calls we were making.
29558 This lets us keep track of active timeout ids and remove them all
29559 when the TimeManager shuts down. So, if we leak MediaElements
29560 (which seems to be happening in TopBanana), we don't crash.
29562 * mplayer.cpp: use the new TimeManager timeout call instead of the
29563 glib mainloop directly.
29567 2007-10-12 Jeffrey Stedfast <fejj@novell.com>
29569 * downloader.cpp (downloader_init): Default the DownloadProgress
29572 2007-10-12 Jackson Harper <jackson@ximian.com>
29574 * downloader.h: Add an access to the downloader state. I need
29575 this in the plugin.
29577 2007-10-12 Jb Evain <jbevain@novell.com>
29579 * brush.cpp|h: add image_brush_set_source.
29581 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
29583 * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
29584 where it doesn't handle J-Type picture frames.
29586 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
29588 * panel.cpp|h: Split Render into Render and RenderChildren, so
29589 the later can be overriden in InkPresenter.
29590 * stylus.cpp|h: A quick (see FIXME) implementation to render
29591 ink found in some xaml files.
29593 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
29595 * mplayer.cpp: Updated to use the new Queue class.
29596 (AdvanceFrame): Accessing the queue directly as a linked list
29597 allows us to simplify the loop a little so that we don't have to
29598 keep a reference to the previous packet's decoded frame.
29600 * list.cpp: Added a new Queue class which will replace GAsyncQueue
29603 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
29605 * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
29606 (AdvanceFrame): Keep a reference to the previous frame in case we
29607 reach the end of the queue.
29609 2007-10-11 Jb Evain <jbevain@novell.com>
29611 * dependencyobject.cpp|h: add dependency_object_set_name.
29613 * media.cpp|h: add media_attribute_get_value and
29614 media_attribute_set_value
29616 * playlist.cpp|h: populate MediaAttributeCollection when
29617 a playlist entry is opened.
29619 2007-10-11 Larry Ewing <lewing@novell.com>
29621 * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
29622 areas... have more fun in general.
29624 * src/rect.h: replace Floor function with RoundOut function.
29625 * panel.cpp, dirty.cpp: use RoundOut where appropriate. Fixes
29626 clipping issue in sprawl.
29628 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
29630 * xaml.cpp: Let InkPresenter handle childs like a Canvas (from
29633 2007-10-11 Jb Evain <jbevain@novell.com>
29635 * playlist.cpp: replace C++ casts to plain casts.
29637 2007-10-11 Jb Evain <jbevain@novell.com>
29639 * collection.cpp: replace dynamic_casts with plain casts
29640 as per Miguel suggestion.
29642 2007-10-11 Jb Evain <jbevain@novell.com>
29644 * collection.cpp|h: add, implement and expose the
29645 MediaAttributeCollection::GetItemByName method.
29647 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29649 * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
29651 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29653 * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
29654 * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
29655 char/char mismatch warnings.
29656 * visual.cpp: Fix no newline warning.
29657 * runtime.cpp: Fix a initialization warning.
29658 * demo.cpp: Remove unused variable.
29660 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29662 * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
29663 matches base_unref behaviour.
29664 * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
29667 2007-10-10 Chris Toshok <toshok@ximian.com>
29669 * runtime.cpp (runtime_shutdown): explicitly drain all remaining
29670 pending managed unrefs.
29672 * dependencyobject.cpp: remove the Base::ref/unref implementations
29673 from here. Add the threadsafe base_unref_delayed code, as well as
29674 code to manage a tick call to free up the instances on the next
29675 clock tick. Also provide an external api (drain_unrefs -- bad
29676 name, fix me plz k thx) so that runtime.cpp can explicitly unref
29677 everything when we shutdown (if they haven't already been dealt
29680 * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
29681 we don't have 2 implementations of all these methods. Instead,
29682 just ifdef the relevant portions of the methods, and keep them in
29683 dependencyobject.h. Also, add prototypes for drain_unrefs and
29684 base_unref_delayed, which is called from managed code.
29686 * collection.h, collection.cpp: make Clear take an optional
29687 "emit_event" argument (default = true.) Call Clear instead of
29688 list->Clear(true) in our dtor so we clean up the namespaces and
29691 * debug.cpp: use an extern "C" block. looks nicer.
29693 2007-10-10 Sebastien Pouliot <sebastien@ximian.com>
29695 * brush.cpp: Handle GradientStop with negative offset like
29696 Silverlight (seems to) do.
29698 2007-10-10 Chris Toshok <toshok@ximian.com>
29700 * panel.cpp (Panel::~Panel): no need to clear our Children
29701 collection. the normal dtor stuff will do that for us.
29703 2007-10-10 Larry Ewing <lewing@novell.com>
29705 * media.cpp: Fill with the element extents don't just paint the
29706 surface because if the stretch is specified we may end up painting
29707 outside the proper area.
29709 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
29711 * media.cpp: When updating the MediaElement's progress, get the Downloader's
29712 DownloadProgressProperty.
29714 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
29716 * visual.cpp, visual.h: Added visual_set_surface, and guard against
29717 overwriting a set surface with null.
29719 2007-10-10 Jackson Harper <jackson@ximian.com>
29721 * collection.cpp: Set the surface when adding a visual element.
29723 2007-10-10 Jackson Harper <jackson@ximian.com>
29725 * shape.cpp: We need to do something when line properties are
29726 changed. Fixes test-animation-line.xaml
29728 2007-10-10 Jackson Harper <jackson@ximian.com>
29730 * xaml.cpp: Don't allow the same property to be set twice.
29732 2007-10-09 Jackson Harper <jackson@ximian.com>
29734 * xaml.cpp: When we create custom elements we also need to set the
29735 surface on them and mark them for cleanup.
29737 2007-10-09 Jackson Harper <jackson@ximian.com>
29739 * xaml.cpp: When we are creating objects from a string, set the
29740 encoding to utf8 so that expat doesn't try to determine the
29741 encoding from the ?xml declaration (which will be incorrect
29742 because the string is in utf8).
29744 2007-10-09 Chris Toshok <toshok@ximian.com>
29746 * clock.cpp (ClockGroup::Stop): If the clock group has children we
29747 depend on stopping them first. But if the clock group is without
29748 children, chain up to Clock::Stop here.
29750 2007-10-09 Jb Evain <jbevain@novell.com>
29752 * uielement.h: define new methods RenderClipPath and
29753 IntersectBoundsWithClipPath.
29754 * uielement.cpp: implement them.
29755 * panel.cpp, shape.cpp, media.cpp: use them.
29757 2007-10-09 Chris Toshok <toshok@ximian.com>
29759 * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
29760 frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
29761 brush.cpp, text.cpp: s/Attachee/Attacher.
29763 * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
29764 call that is used at dtor time to call Detach on all
29765 DependencyObject-subclassed Values, and 2) make NULL available in
29766 detach as a wildcard - passing NULL for the property detaches all
29767 properties that the current object might be watching on.
29769 Also, correct a longstanding problem in terminology/api. if A's
29770 code calls B->Attach (..., this), then A is the Attacher, not the
29771 Attachee. Basically s/Attachee/Attacher in all places,
29774 * dependencyobject.cpp: same changes as above. Also, change the
29775 current_values hash table to key off the DependencyProperty, not
29776 off the DependencyProperty name. This allows us to use a direct
29777 hash, as opposed to a string hash.
29779 * collection.cpp (dtor): make sure sure to detach from all the
29780 list elements before we clear the list.
29782 2007-10-09 Jeffrey Stedfast <fejj@novell.com>
29784 * font.cpp (Layout): Only break words on ASCII lwsp, we should not
29785 break on nbsp's for example.
29787 2007-10-09 Jackson Harper <jackson@ximian.com>
29789 * xaml.cpp: Make sure the Surface gets set on custom created
29790 UIElements. Also add them to the created list, so they get freed.
29792 2007-10-09 Jackson Harper <jackson@ximian.com>
29794 * control.cpp: Since controls are UIElements we need to make sure
29795 their surface is set when we create them from XAML.
29797 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
29799 * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
29801 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
29803 * debug.cpp, debug.h: Conditionally compile support for managed stack
29806 * runtime.cpp: add more debug code.
29808 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
29810 * text.cpp (OnPropertyChanged): We may need to relayout even if
29811 the wrapping is set to NoWrap.
29813 2007-10-08 Zoltan Varga <vargaz@gmail.com>
29815 * text.cpp (OnPropertyChanged): Do a relayout if the Width property
29816 changes and text wrapping is enabled.
29818 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
29820 * mplayer.cpp (Open): If the media has video, load the first video
29823 (AdvanceFrame): Fixed to "end" properly.
29825 * media.cpp: Don't manually call DisplayFrame() anymore.
29827 2007-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
29829 * xaml.cpp: Set the surface of newly created objects (where applicable).
29830 * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
29831 * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
29832 brand new CreateDownloader method.
29833 * visual.h: Added a surface field, complete with setters and getters.
29834 * downloader.cpp, downloader.h: Add a context field.
29835 * runtime.h: Add a downloader_context field, and CreateDownloader methods.
29836 * runtime.cpp: Add a downloader_context field.
29838 2007-10-09 Larry Ewing <lewing@novell.com>
29840 * media.cpp: add clipping to shape::DoDraw and to the bounds
29843 2007-10-08 Larry Ewing <lewing@novell.com>
29846 * panel.cpp: intersect the bounds with the clip path to
29847 optimize the invalidated region.
29849 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29852 2007-10-08 Larry Ewing <lewing@novell.com>
29855 * panel.cpp: intersect the bounds with the clip path to
29856 optimize the invalidated region.
29858 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29861 2007-10-08 Larry Ewing <lewing@novell.com>
29864 * panel.cpp: intersect the bounds with the clip path to
29865 optimize the invalidated region.
29867 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29870 2007-10-08 Larry Ewing <lewing@novell.com>
29873 * panel.cpp: intersect the bounds with the clip path to
29874 optimize the invalidated region.
29876 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29879 2007-10-08 Larry Ewing <lewing@novell.com>
29882 * panel.cpp: intersect the bounds with the clip path to
29883 optimize the invalidated region.
29885 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
29888 2007-10-08 Larry Ewing <lewing@novell.com>
29890 * runtime.cpp: change previous logic to drop the alpha
29891 completely here until more testing can be done.
29893 2007-10-08 Larry Ewing <lewing@novell.com>
29895 * runtime.cpp: draw the background color blended over white.
29897 2007-10-08 Larry Ewing <lewing@novell.com>
29899 * media.cpp: render clip paths on media elements.
29901 2007-10-07 Larry Ewing <lewing@novell.com>
29906 * array.cpp: use g_utf8_next_char in some places to start making
29907 the parsers more utf8 safe. Make rect/point_from_str more robust
29908 against separator characters
29910 2007-10-07 Chris Toshok <toshok@ximian.com>
29912 * clock.cpp (Clock::Tick): make sure we're reversed before
29913 switching to Fill if the clock is at 0 (and make sure we're not
29914 reversed before switching to Fill on the other end of the
29915 timespan). Some animations were skipping directly to fill without
29917 (ClockGroup::Tick): don't Tick a child clock if it's about to
29918 Stop. the new tick might cause it to fill.. this needs work
29921 2007-10-06 Jb Evain <jbevain@novell.com>
29923 * media.cpp (Image::Render): Deal with clipping.
29925 2007-10-05 Chris Toshok <toshok@ximian.com>
29927 * animation.cpp (KeyFrameComparer): fix airlines (and probably a
29928 host of other keyframe usage besides). The problem was that this
29929 function was treating its args as keyframe*'s, when in actuality
29930 they were keyframe**'s. that explains the intermittent nature of
29931 the bug, as well as the faulty sorting I was experiencing earlier.
29933 * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
29935 2007-10-05 Chris Toshok <toshok@ximian.com>
29937 * clock.cpp (TimeManager::Tick): I have no idea how this is
29938 possible, but the throttle code is *completely* screwing up the
29939 Airlines demo animations.
29941 2007-10-05 Jackson Harper <jackson@ximian.com>
29943 * control.cpp: need to pass this down. Fixes dragging controls in
29946 2007-10-05 Jeffrey Stedfast <fejj@gnome.org>
29948 * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
29951 (SetValue): And here too after a Seek() (altho it won't work if
29952 the media is paused).
29954 * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
29955 update, which is true if any avcodec_decode_video() sets redraw to
29957 (DisplayFrame): New method largely based on JB's work to load the
29958 current video frame into the mplayer surface.
29960 2007-10-05 Jb Evain <jbevain@novell.com>
29962 * media.cpp|h, playlist.cpp|h: Don't open the first entry
29963 when a playlist entry has been stopped before switching to
29966 2007-10-04 Chris Toshok <toshok@ximian.com>
29968 * clock.cpp: fix a couple of compilation warnings, and tighten up
29969 the list_clocks output.
29971 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
29973 * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
29974 since it is not locale dependant.
29976 * rect.cpp (rect_from_str): Same.
29978 * point.cpp (point_from_str): Same.
29980 * xaml.cpp (get_point): Fixed to update *in properly on success.
29982 2007-10-05 Jb Evain <jbevain@novell.com>
29984 * media.cpp: correctly advertise 'Opening' state of MediaElement.
29986 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
29988 * xaml.cpp: (more_points_available): Simplified by looping while
29989 isspace. Also, update our input pointer if we have to scan over
29991 (get_point): Now returns bool based on whether it manages to
29992 extract a point or not.
29993 (geometry_from_str): Updated.
29995 2007-10-04 Jackson Harper <jackson@ximian.com>
29997 * xaml.cpp: Points after the initial two line points should
29998 actually create new line segments, not a polyline, this fixes
29999 relative points on multiple lines.
30001 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
30003 * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
30004 hasn't completely been initialized.
30005 (Glyphs::SetIndices): Do not do scaling here, this seems to be
30006 font size dependant.
30008 * shape.cpp (DoDraw): Use 'delete []' to free dmul.
30010 2007-10-04 Jackson Harper <jackson@ximian.com>
30012 * xaml.cpp: Handle repeated bezier segments properly.
30014 2007-10-04 Chris Toshok <toshok@ximian.com>
30016 * clock.cpp: lots of little changes. fixes clock16.xaml, and
30017 therefor the score animation in dr.popper goes away properly.
30018 also fixes a few other issues with FillBehavior (checked by our
30021 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
30023 * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
30025 (Layout): Use a local TextFont variable.
30027 (text_init): Always call font_init() as Glyphs use it even when
30028 text=pango is specified.
30030 2007-10-04 Sebastien Pouliot <sebastien@ximian.com>
30032 * shape.cpp|h: Shapes that uses their Width and Height must use
30033 them for brush size. Fix brush rendering when used with
30034 UIElement.RenderTransform property.
30036 2007-10-03 Chris Toshok <toshok@ximian.com>
30038 * text.cpp: make Glyphs usable even when text=pango. "usable"
30039 means "don't crash" :)
30041 2007-10-03 Chris Toshok <toshok@ximian.com>
30043 * uielement.h: rename UseAA() to EnableAntiAlias(). it's
30044 arguably a better name, and more importantly it's the name that
30045 media.cpp/h changed it too, which broke the AA hack used in
30048 * dirty.cpp (process_dirty_elements): rename UseAA() to
30051 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
30053 * array.cpp: Move double array allocations back to new/delete.
30055 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
30057 * font.cpp (EmSize): Removed, not needed.
30058 (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
30059 bit of memory that we aren't using.
30061 * text.cpp (TextBlock::SetFontSource): Implemented.
30062 (text_init): Default StyleSimulations to None.
30064 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
30066 * brush.cpp|h: SL and Cairo defaults to different values (end
30067 color versus start color) when a gradiant is restricted to a
30068 single color (e.g. if the start and end points of a linear
30069 gradient are identical).
30071 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
30073 * text.cpp: Implemented the Glyphs element.
30075 * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
30076 with the the Glyphs element implemented in text.cpp.
30077 (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
30078 (GetGlyphInfoByIndex): New method.
30079 (CreatePattern): If the filename is specified, don't call
30080 FcFontMatch(), simply return the constructed pattern.
30082 2007-10-02 Chris Toshok <toshok@ximian.com>
30084 * clock.h, clock.cpp: remove TimeManager::current_fps, it's
30087 2007-10-02 Chris Toshok <toshok@ximian.com>
30089 * runtime.cpp (Surface::UpdateFullScreen): just call
30090 gtk_window_fullscreen instead of setting decorations/above
30091 manually. this puts us on top of the panel.
30093 2007-10-02 Chris Toshok <toshok@ximian.com>
30095 * clock.h, clock.cpp: rip out the old stupid throttling code and
30096 replace it with an exponential moving average of the delays.
30098 2007-10-02 Chris Toshok <toshok@ximian.com>
30100 * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
30101 use them to make test/xaml/clock8.xaml work.
30103 2007-10-02 Larry Ewing <lewing@novell.com>
30105 * shape.cpp (Path::ComputeBounds): use the specified width/height
30106 if stretch is != StretchNone. Fixes rendering issues with halo
30107 and several other sites.
30109 2007-10-02 Chris Toshok <toshok@ximian.com>
30111 * animation.h, animation.cpp: override Stop() on AnimationClocks
30112 so we can reset the property value to the baseValue stored in our
30115 * clock.h, clock.cpp: fix the starting of stopped clockgroups when
30116 there are active children (fixes the storyboards running for 1
30117 tick then stopping). Add more convoluted code in order to get the
30118 expected behavior when FillBehavior=Stop on a storyboard.
30120 2007-10-02 Chris Toshok <toshok@ximian.com>
30122 * clock.h, clock.cpp: a few changes. quit with all the delay
30123 computation in the throttling code, and just deal with fps until
30124 we're ready to switch to delays. it simplifies everything a
30125 bunch. Also, narrow the type for Clock::Get/SetParent to
30126 ClockGroup. Add some rudimentary code for printing out the state
30127 of all clocks (use TimeManager::Instance()->ListClocks() or
30128 time_manager_list_clocks()). Also, remove the TimeManager::Tick
30129 code which started clocks. This commit changes the way
30130 storyboards are registered, so the only things in the
30131 TimeManager's list should be the per-surface ClockGroups, which
30132 are started in Storyboard::Begin (if they aren't already running.)
30134 * collection.cpp (VisualCollection::Add): this is a bug waiting to
30135 happen. Call VisualUpdate (thereby setting the child's parent and
30136 initializing the transforms/opacity) before emitting Loaded on the
30139 * animation.h, animation.cpp: Storyboards now add their clocks to
30140 the per-surface ClockGroup. This involves some groveling to find
30141 the surface, but it's nothing we haven't seen before. There's no
30142 direct TimeManager calls here now - stopping the surface's
30143 ClockGroup will stop all animations running on it.
30145 * runtime.h, runtime.cpp: add the per-surface ClockGroup. all
30146 storyboards attach to this, and this attaches to the TimeManager.
30148 2007-10-02 Jackson Harper <jackson@ximian.com>
30150 * media.cpp: Some default values to avoid nullref exceptions.
30152 2007-10-02 Sebastien Pouliot <sebastien@ximian.com>
30154 * xaml.cpp: Add support for 'F' in the PML parser to enable setting
30155 the FillMode of Geometry objects. Removed default value set as it is
30156 identical to the default property value.
30158 2007-10-02 Jb Evain <jbevain@novell.com>
30160 * playlist.cpp|h: implemented start time for playlist entries.
30162 2007-10-02 Jb Evain <jbevain@novell.com>
30164 * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
30166 2007-10-02 Larry Ewing <lewing@novell.com>
30168 * uielement.cpp (UIElement::Invalidate): Only invalidate if
30170 * dirty.cpp (process_dirty_elements): be sure to invalidate before
30171 and after the opacity change.
30173 2007-10-02 Jb Evain <jbevain@novell.com>
30175 * playlist.cpp: deal with non lowercase file exts.
30177 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30179 * font.cpp: Reduced Glyph table memory usage.
30181 2007-10-01 Chris Toshok <toshok@ximian.com>
30183 * dirty.cpp (process_dirty_elements): remove the special if checks
30184 which kept the ComputeBounds/Invalidate code from running on the
30185 toplevel surface. Canvas::ComputeBounds() does the right thing
30186 for the toplevel surface, so we just trust it. fixes invalidation
30189 * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
30190 (OnSubPropertyChanged): same.
30192 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30194 * brush.cpp|h: Change SetupBrush and SetupGradient signatures to
30195 void (instead of the, now, unused bool);
30197 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30199 * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
30201 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30203 * shape.cpp|h: Remove Path::IsFilled since the property
30204 PathFigure::IsFilledProperty doesn't exists anymore.
30206 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30208 * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
30211 * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
30213 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
30215 * runtime.cpp: Only show the server as the url in the fullscreen
30218 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30220 * panel.cpp: Call ComputeBounds before invalidating on Background
30221 changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
30223 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
30225 * fullscreen.h, fullscreen.xaml: Added.
30226 * text.h: Make GetActualHeight and GetActualWidth public.
30227 * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
30228 objects now: the fullscreen message and the toplevle canvas),
30229 SetSourceLocation and Show/HideFullScreenMessage.
30230 * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
30231 Surface::GetTopLevel.
30233 2007-09-30 Zoltan Varga <vargaz@gmail.com>
30235 * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
30238 * text.cpp (text_destroy): Avoid crash if default_foreground_brush
30241 2007-09-28 Chris Toshok <toshok@ximian.com>
30243 * Makefile.am: remove the XRANDR conditional here. it's #defined
30246 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30248 * font.cpp (CreatePattern): If a filename has been specified for
30249 loading a font, don't set family values. Also, call
30250 FcDefaultSubstitute() on the pattern before trying to find a
30253 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30255 Optimization hack that saves time by not recalculating the layout
30256 when the foreground brush changes (since we'd have exactly the
30259 * font.cpp (TextRun): Now takes the address of the brush than the
30260 brush itself, so that when brushes change on the Inline, we get
30261 the brush change for free.
30263 * text.cpp (LayoutSilverlight): Pass the addresses of the
30264 foreground brushes to TextRun ctor and don't bother with the
30265 default foreground brush here, save that for ::Paint-time.
30266 (LayoutPango): Same idea as LayoutSilverlight().
30267 (Paint): Get the default foreground and pass that off to the
30268 pango/silverlight text renderers.
30269 (OnPropertyChanged): Don't force a re-layout if the property that
30270 changed was the TextBlock::ForegroundProperty.
30271 (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
30273 * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
30274 argument so that we don't have to specify it in the creation of
30275 our layout attributes (this saving us a re-layout when a brush
30277 (mango_attr_foreground_new): Now takes the address of the brush
30278 rather than the brush itself, so that when brushes change on the
30279 Inline, we get the brush change for free.
30281 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30283 * text.cpp (TextBlock): We cannot re-use the
30284 default_foreground_brush here because we cannot allow it to be
30285 altered in any way.
30287 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30289 * font.cpp (TextFont::IsScalable): New method.
30290 (TextFont::Path): Paths a glyph but does not stroke or fill. Only
30291 available if the font is scalable.
30292 (TextLayout::Render): Cache each segment's cairo_path_t so that
30293 future renders do not have to do it on a glyph-by-glyph basis
30294 (avoids possible glyph cache misses). May also save time by doing
30295 a single fill rather than a fill per glyph.
30297 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30299 * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
30301 (RenderGlyphPath): Same.
30302 (UnderlinePosition): New method.
30303 (UnderlineThickness): New method.
30304 (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
30307 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
30309 * text.cpp (LayoutSilverlight): LineBreaks don't really care about
30310 TextDecorations or Foreground properties.
30312 * font.cpp (TextRun::~TextRun): unref the font.
30313 (TextSegment): now references the original TextRun instead of
30314 copying pointers/values.
30315 (TextLayout::Render): Updated for above change.
30317 2007-09-28 Zoltan Varga <vargaz@gmail.com>
30319 * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
30321 (LoadCode): Change return type to bool to indicate a loading error.
30323 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
30325 * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
30326 (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
30327 false, then it signifies MediaEnded, no need to explicitly check.
30328 (MediaElement::SetSource): Delete the current source here.
30329 (MediaElement::~MediaElement): C++ `delete' operator doesn't
30330 handle freeing NULL pointers.
30331 (MediaElement::DownloaderComplete): No need to delete the source
30332 here, done in SetSource() instead.
30334 * font.cpp: Created my own GlyphMetrics struct which uses doubles
30335 instead of ints for more accurate layout/rendering calculations.
30336 (Layout): When comparing to max_width, add 1.0 to account for
30337 rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
30338 width/height values for the same reason.
30340 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
30342 * xaml.cpp: Free locally allocated Points inside get_point_array.
30344 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
30346 * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
30349 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
30351 * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
30352 thickness == 0 optimization.
30354 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
30356 * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
30359 * text.cpp: Merged with custom text layout code - layout algorithm
30360 is chosen at runtime_init() via flags or environment variable.
30362 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
30364 * runtime.cpp (runtime_init): Don't check pango version info,
30365 we're just gonna statically link in pango (and/or do
30366 configure-time checks if the user decides to link to a system
30367 pango). Implemented some preliminary environment variable parsing
30368 action to decide if the user wnts to use ffmpeg vs ms codecs,
30369 pango vs my "silverlight" text layout engine, etc.
30371 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
30373 * runtime.cpp (runtime_init): Now takes a flags argument for
30374 enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
30375 then make sure pango is recent enough (if not, print a warning
30376 akin to the cairo warning).
30378 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
30380 * array.cpp: Fix issues on double parsing, including bug #328915 and
30381 test cases in /moon/test/xaml/points-torture.xaml
30383 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
30385 * animation.cpp: Add a few null checks.
30387 2007-09-27 Larry Ewing <lewing@novell.com>
30389 * media.cpp: Don't mark our download progress as 100% until we've
30390 been notified by the downloader that it is complete. Some
30391 programs check download progress to decide when they can safely
30392 poke at the media element properties.
30393 * downloader.cpp: set the final downloader progress to 1.0 not 100.
30395 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
30397 * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first
30398 line. Fix bug #328907.
30400 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
30402 * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
30403 change InitializeFromXaml to take a XamlLoader argument.
30405 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
30407 * xaml.cpp: More unrefs.
30409 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
30411 * text.cpp: Unref a few newly created objects.
30412 * control.cpp: Remove an unnecessary ref.
30414 2007-09-26 Zoltan Varga <vargaz@gmail.com>
30416 * text.cpp (SetValue): Implement proper handling of the Text property.
30418 (OnPropertyChanged): Force a relayout when the foreground property changes.
30419 (Layout): Remove the laying out of the contents of the Text property, since the
30420 text is now contained in the first inline.
30422 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
30424 * font.cpp (Layout): Include the space char on the line before
30425 wrapping, this is noticable when TextDecorations="Underline" is
30427 (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
30428 (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
30429 (TextFont::Render): Implemented.
30431 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
30433 * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
30434 (and was removed elsewhere, except here);
30436 2007-09-26 Chris Toshok <toshok@ximian.com>
30438 * clock.cpp (TimeManager::Tick): a few changes. first and
30439 foremost, fix the signs on the FPS_ADJUSTMENTS. oops. also, add
30440 a buffer of 50ms on either side of the timeout before we consider
30441 the Tick either slow or fast. Increase the number of out-of-line
30442 ticks we need and decrease the fps adjustment.
30444 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
30446 * text.cpp (OnCollectionChanged): Needs to call Invalidate().
30448 2007-09-26 Chris Toshok <toshok@ximian.com>
30450 * clock.cpp: initialize the min_timeout based on a good default
30451 max fps (60 in our case). Also, calculate the fps adjustments in
30454 * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
30455 it's handled by TimeManager's default.
30457 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
30459 * font.cpp: A bunch of fixes/changes to mimic Microsoft's
30460 Silverlight TextBlock layout logic.
30462 2007-09-26 Andrew Jorgensen <ajorgensen@novell.com>
30464 * Makefile.am: Added missing files for dist tarball
30466 2007-09-26 Chris Toshok <toshok@ximian.com>
30468 * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
30469 we just adjust fps by a fixed amount (4fps) either up or down, if
30470 a certain number (5, by default) of ticks in a row take either
30471 less or more time to complete (respectively), than the current
30474 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
30476 * moon-path.c: Fix typos.
30477 * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
30479 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
30481 * shape.h|cpp: Remove Line (direct path manipulation) hack.
30483 2007-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
30485 * xaml.cpp: Unref collections and matrix transforms we create.
30487 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
30489 * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo
30492 2007-09-26 Zoltan Varga <vargaz@gmail.com>
30494 * text.cpp (TextBlock): Set an empty string as a default Text property.
30495 (InsideObject): Implement this for text blocks.
30497 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
30499 * font.cpp: Fix warning.
30501 2007-09-25 Larry Ewing <lewing@novell.com>
30503 * brush.cpp|h: add image_brush_create_similar to simplify creating
30504 similar surfaces. Use it where appropriate.
30506 * media.ccp: use image_brush_create_similar where possible. In
30507 MediaElement::Render draw with opacity directly rather than
30508 creating a temporary surface for every frame. Rework image opacity
30509 cache so that we don't have to recreate the surface every time.
30511 2007-09-25 Jb Evain <jbevain@novell.com>
30513 * media.cpp|h: let the MediaElement be the only one to trigger
30514 its own events, terminate its friendship with MediaBase.
30516 2007-09-25 Jb Evain <jbevain@novell.com>
30518 * playlist.cpp|h: trigger a parsing error when no href attribute
30519 is found for base and ref elements.
30521 2007-09-25 Jb Evain <jbevain@novell.com>
30523 * playlist.cpp|h, media.cpp: Auto play for playlists.
30525 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
30527 * font.cpp (Render): Fixed some y1 offset logic that didn't amke
30528 any sense (and was wrong afaict anyway). We now render exactly
30529 like Microsoft Silverlight.
30531 2007-09-24 Jb Evain <jbevain@novell.com>
30533 * playlist.cpp: close the previous source before playing
30536 2007-09-24 Jb Evain <jbevain@novell.com>
30538 * mplayer.cpp: on Close, reset height and width to zero.
30540 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
30542 * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
30543 either the NaturalWidth or NaturalHeight changes.
30545 2007-09-24 Jb Evain <jbevain@novell.com>
30547 * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
30548 only a SingleMedia deals with the MediaPlay directly. A playlist
30549 being a collection of either other playlist or singlemedias,
30550 playing one at a time.
30552 2007-09-24 Jb Evain <jbevain@novell.com>
30554 * media.cpp, playlist.cpp: let the Media Sources change
30555 the state of the MediaElement (Playing/Paused/Stopped).
30557 2007-09-24 Jb Evain <jbevain@novell.com>
30559 * media.h: let the media source change the properties
30560 of the media element. Make MediaSource friend of MediaElement
30562 * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
30564 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
30566 * font.cpp: Added kerning.
30568 * mplayer.cpp: Added mutex locking for the target_pts variable.
30570 2007-09-24 Jb Evain <jbevain@novell.com>
30572 * playlist.cpp: Playlist::IsPlaylistFile: return false
30575 2007-09-23 Jb Evain <jbevain@novell.com>
30577 * playlist.cpp: A base element stores the base in
30578 a href attribute, not in its body.
30580 2007-09-22 Chris Toshok <toshok@ximian.com>
30582 * Makefile.am (USE_XRANDR): define USE_XRANDR.
30584 * runtime.cpp (Surface::realized_callback): get the RANDR screen
30585 config info, and set the TimeManager's max refresh to match the
30588 * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
30591 2007-09-22 Zoltan Varga <vargaz@gmail.com>
30593 * xaml.h xaml.cpp: Add support for parsing x:Code elements and
30594 passing them to managed code.
30596 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
30598 * mplayer.cpp (audio_play): Slightly optimized the volume
30601 * font.cpp (Layout): Keep track of the line ascend and pad our
30602 extents with an extra pixel on all sides to account for hinting.
30603 (Render): Starts rendering glyphs 1 pixel in. Also modified the
30604 logic such that we didn't have to treat path/bitmap glyphs
30607 2007-09-21 Jeffrey Stedfast <fejj@novell.com>
30609 * font.cpp: Now handles scalable fonts by rendering their outline
30610 paths rather than rendering bitmaps.
30612 * moon-path.c (moon_path_move_to): Resize the path auto-magically
30613 if we don't have enough room. Same for all of the other
30614 line_to/curve_to/etc.
30616 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
30618 * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
30619 the old width extents).
30620 (Layout): When breaking a long line, the new line height should
30621 not be set to 0 (duh), it should be set to the font height.
30623 2007-09-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
30625 * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
30626 the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
30627 managed code to set them. Keep track of mappings in native code, call
30628 into managed code only if a mapping is not found here. Keep a list of
30629 missing assemblies, allows managed code to request downloading of
30630 several assemblies before trying to parse xaml again. Added
30631 XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
30632 successful (and only then), requests a vm to be loaded, before calling
30633 into managed code to actually create the managed object.
30635 2007-09-20 Chris Toshok <toshok@ximian.com>
30637 * type.cpp, type.cpp.in (types_init_register_events): register the
30638 LostFocus/GotFocus events.
30640 * uielement.h: add LostFocusEvent/GotFocusEvent.
30642 * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
30644 2007-09-20 Jeffrey Stedfast <fejj@gnome.org>
30646 * text.cpp (InsideObject): Removed.
30648 * font.cpp (Layout): Add the horiBearingX value of the last glyph
30649 in each line to the width of said line.
30650 (RenderGlyphBitmap): Cache the surface and use it as a mask when
30651 filling so that the true source pattern shows thru.
30653 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
30655 * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
30657 (mango_renderer_show_layout): Instead of having pango render the
30658 text, do it ourselves using our cached paths from the previous
30659 call to mango_renderer_layout_path().
30660 (mango_renderer_layout_path): Clear our cache paths.
30662 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
30664 * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
30665 foreground changes.
30666 (OnSubPropertyChanged): Same.
30668 * font.cpp (GetFont): No longer need to pass the size to
30670 (TextFont::Load): No longer needs the size argument.
30671 (TextFont::.ctor): We just get the size from the pattern now.
30672 (TextFontDescription::CreatePattern): Call FcFontMatch() on our
30673 generated font pattern here instead of having our lower-level
30674 TextFont::.ctor do it.
30675 (TextFont::Ascender): Use the size metrics so that this always
30676 works properly (at least it seems to).
30677 (TextFont::Height): Same.
30678 (TextLayout::Layout): Changed line-height logic a bit for
30681 2007-09-20 Chris Toshok <toshok@ximian.com>
30683 * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
30684 type event hashes as well if we don't find it in ours.
30686 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
30688 * brush.cpp: Implemented MappingMode for LinearGradientBrush.
30689 Buttons from Dr Popper are now rendered correctly.
30691 2007-09-20 Chris Toshok <toshok@ximian.com>
30693 * typegen.cs (GenerateTypeCpp): add a call to
30694 types_init_register_events.
30696 * type.h.in, type.cpp.in: add Type::RegisterEvent,
30697 Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
30699 * type.cpp.in: add types_init_register_events, which registers all
30700 the events we care about for all the types. we do it here to
30701 guarantee that events have been registered by the time any
30702 instance code is run for any type.
30704 * dependencyobject.h, dependencyobject.cpp: remove the event
30705 registration from EventObject, it's moving to Type. so the Type
30706 will contain the name to id hash, and the EventObject will only
30707 contain an array of GSLists, where the index into that array is
30710 * clock.cpp (clock_init): lookup the static events here.
30712 * runtime.cpp (runtime_init): same.
30714 * animation.cpp (animation_init): same.
30716 * downloader.cpp (downloader_init): same.
30718 * uielement.cpp (uielement_init): same.
30720 * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
30721 src/type.h, src/runtime.h, src/downloader.h: events are static to
30722 the classes now, instead of being per-instance.
30724 * src/types.h src/types.cpp: regen.
30726 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
30728 * geometry.cpp: Avoid re-allocating path memory when possible.
30729 * moon-path.c|h: Added documentation and new moon_path_renew and
30730 moon_path_clear functions to reduce memory re-allocations.
30731 * shape.cpp|h: Avoid re-allocating path memory when possible.
30733 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
30735 * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
30736 Bubbles from bubblemark.com are now rendered correctly.
30738 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
30740 * shape.cpp|h: Remove dead code.
30742 2007-09-19 Jeffrey Stedfast <fejj@novell.com>
30744 * font.cpp: More fixes to make stuff build/work (more or less).
30746 * text.patch: Patch to make text layout/rendering use my new code
30749 2007-09-19 Chris Toshok <toshok@ximian.com>
30751 * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
30753 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
30755 * moon-path.c|h: New. Create simple or complex paths without a
30756 (expensive) cairo_context_t using an API similar to cairo.
30757 * geometry.cpp|h: Use moon_path functions. Added (still inactive)
30758 code to compute bounds for paths.
30759 * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API
30760 for Polylines and Polygons. Still not perfect for large thickness
30761 and steep angles but 8-10x faster and better (no artifact left)
30762 than previous code, see new xaml animation tests).
30763 * rsvg.cpp|h: Adapt to use moon-path functions.
30764 * Makefile.am: Add moon-path.c and moon-path.h to the build.
30766 2007-09-19 Jeffrey Stedfast <fejj@gnome.org>
30768 * font.cpp: More hackery.
30770 2007-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
30772 * panel.cpp: Add a null check.
30773 * xaml.cpp: Created a list that contains most created elements in order to
30774 unref them once parsing is finished (we need to unref all created
30775 elements except the top one, but the parser callback functions don't
30776 know which is the top one, so we delay the unrefing until the end). If
30777 parsing is done manually (*_from_str, etc), just use unref.
30778 * text.h, text.cpp: Add text_destroy to properly destroy the default
30779 foreground brush on shutdown.
30780 * clock.cpp: When we allocate a clock, unref it after adding it to the
30782 * collection.h: Store the parent in the Node, since we can't call
30783 obj->GetParent () in a destructor (it will walk up the hierarchy using
30784 the type system, but since the parent can be in the destructor, the type
30785 system isn't reliable anymore).
30786 * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
30787 foreground brush, not to the element. Add a mango_renderer_get_type_safe
30788 that can reinitialize static variables (after a libmoon reload) from
30790 * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
30792 * collection.cpp: Store the parent in the Node, since we can't call
30793 obj->GetParent () in a destructor (it will walk up the hierarchy using
30794 the type system, but since the parent can be in the destructor itself,
30795 the type system isn't reliable anymore).
30796 * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
30797 * media.cpp: Sprinkle a few unrefs here and there.
30798 * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
30799 Add a null check in the Storyboard destructor. Use Value::CreateUnref
30800 for default values.
30801 * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
30804 2007-09-18 Jeffrey Stedfast <fejj@gnome.org>
30806 Continued fixes to go along with Rolf's other TextBlock leak
30809 * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
30810 (mango_attr_foreground_destroy): Don't unref the fg.
30812 * text.cpp (default_foreground): Make return a static reference.
30813 (Layout): Don't ref the fg.
30815 2007-09-17 Jeffrey Stedfast <fejj@gnome.org>
30817 * font.cpp: more progress on text layout.
30819 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30821 * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
30823 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30825 * xaml.cpp: Fix warning.
30827 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30829 [Removed mono dependency for 1.0 moonlight applications.
30830 We now have a native [Plugin]XamlLoader that is the native counterpart of the
30831 managed Loader object, the native loader handles xaml loading when the
30832 mono runtime isn't loaded.]
30834 * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
30835 Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
30836 was necessary because the callback handler isn't given enough
30837 information (it needs to know the plugin, but this information is not
30838 passed on), and it now also avoids the potential problem of overwriting
30839 static callbacks when several plugins are created simultanously.
30840 * control.cpp, demo.cpp: Update according to API change.
30842 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30844 * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
30846 2007-09-14 Jeffrey Stedfast <fejj@novell.com>
30848 * font.cpp|h: New font/text rendering engine (e.g. replacement for
30849 pango). Nowhere near complete yet.
30851 2007-09-14 Miguel de Icaza <miguel@novell.com>
30853 * media.cpp (Stop, Pause): Do not dereference source if it is not
30854 yet set (TopBanana does this).
30856 2007-09-13 Jb Evain <jbevain@novell.com>
30858 * media.cpp|h, playlist.cpp|h: Work on playlist integration.
30860 2007-09-10 Jeffrey Stedfast <fejj@novell.com>
30862 * mplayer.cpp (StopThreads): When resetting current_pts and
30863 target_pts, use the audio (or video) initial_pts value rather than
30864 0 since they are meant to be absolute pts values, not
30865 relative. This fixes a bug in the halo3 site where pressing Stop
30866 would cause the current time string to become "59:55" when it
30867 should have been "00:00".
30869 * media.cpp (OnPropertyChanged): Only Invalidate() on
30870 PositionProperty changes if we have video content to render. Fixes
30873 * mplayer.cpp (HasVideo): New method that returns true if the
30874 media source has video content.
30876 2007-09-10 Jeffrey Stedfast <fejj@gnome.org>
30878 * mplayer.cpp (Duration): Only use audio duration as the defacto
30879 duration if we've got a valid pcm handle.
30881 2007-09-10 Chris Toshok <toshok@ximian.com>
30883 * animation.cpp (HookupAnimationsRecurse): make the message
30884 involving failure to hookup a property more verbose. Looks like
30885 MS is treating a TranslateTransform as a ScaleTransform in popfly
30886 - that is, they're trying to animate ScaleX on a
30887 TranslateTransform (which is oddly enough named "scale".)
30889 * media.cpp: Emit ImageFailedEvent if we failed to load the image.
30890 Remove that damn TODO printf.
30892 * media.h: add ImageFailedEvent to Image, and change signature of
30893 CreateSurface so we can return false if there's an error.
30895 * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
30897 * error.h: make these classes instead of structs, and also make
30898 them copy/free the type specific strings. it'll result in more
30899 allocations but it cleans up the code using them.
30901 2007-09-07 Sebastien Pouliot <sebastien@ximian.com>
30903 * shape.cpp: Fixed Polygon "special" case when it only has to draw
30904 a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't
30905 working) which is now 10x faster than calling ComputeBoundSlow (the
30906 working alternative). Started to reuse the same concept for Polyline
30907 and Polygon but the (#def-out) code doesn't yet handle line joins
30908 correctly (so it still use the correct ComputeBoundSlow);
30910 2007-09-06 Chris Toshok <toshok@ximian.com>
30912 * dirty.cpp (process_dirty_elements): some guards against unioning
30913 an empty rectangle.
30915 2007-09-06 Chris Toshok <toshok@ximian.com>
30917 * runtime.cpp (Surface::Invalidate): only invalidate the actual
30918 rectangle. The +1/-2 stuff is done in dirty.cpp, if it needs to
30921 * rect.h (Rect::Floor): drop fractional part of all values.
30923 * media.h,media.cpp: we cheat and turn off AA on MediaElements
30924 when they aren't rotated or skewed.
30926 * uielement.h, uielement.cpp: we need to keep track of 2
30927 dirty_rects. one for the element itself, which is GrowBy(1)'ed in
30928 dirty.cpp if the child uses AA, and one for children who have
30929 passed their invalidation rect up the tree (we don't grow this
30930 one). Also, add the default UseAA method, which returns true, and
30931 the ChildInvalidated method, which mirrors Invalidate(Rect r) but
30932 uses the children_dirt_rect.
30934 * panel.h, panel.cpp (Panel::~Panel): clear our children
30936 (Panel::FindStartingElement): the meat of the optimization hack -
30937 we determine if we can skip parts of the tree if the expose
30938 rectangle exists completely within the bounds of an opaque
30939 element, unrotated, unskewed element.
30941 * dirty.cpp (process_dirty_elements): handle
30942 item->children_dirty_rect as well as item->dirty_rect. Also, Grow
30943 the item's dirty_rect by 1 before combining them, if the item uses
30946 2007-09-05 Jb Evain <jbevain@novell.com>
30948 * playlist.cpp: the asx format is case insensitive, parse it
30951 2007-09-05 Sebastien Pouliot <sebastien@ximian.com>
30953 * animation.h: Make KeySpline::GetObjectType virtual.
30955 2007-09-05 Jb Evain <jbevain@novell.com>
30957 * playlist.cpp, playlist.h: work on playlist parsing.
30959 2007-09-05 Jb Evain <jbevain@novell.com>
30961 * xaml.h: export timespan_from_str.
30963 2007-09-05 Jb Evain <jbevain@novell.com>
30965 * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
30967 2007-09-04 Chris Toshok <toshok@ximian.com>
30969 * media.cpp (Image::Render): unref the backing pixbuf as soon as
30971 (Image::CleanupSurface): guard against double unreffing the
30974 2007-09-04 Chris Toshok <toshok@ximian.com>
30976 * xaml.cpp (xaml_set_property_from_str): delete the color.
30977 (dependency_object_set_attributes): same.
30979 2007-09-04 Chris Toshok <toshok@ximian.com>
30981 * media.cpp (Image::CreateSurface): if we need to create a new
30982 surface, make sure to unref the old one.
30984 * geometry.cpp (PathGeometry::PathGeomtry): use
30985 Value::CreateUnrefPtr (bad name, imo, but eh)
30986 (PathFigure::PathFigure): same.
30988 2007-09-04 Jb Evain <jbevain@novell.com>
30990 * playlist.h, playlist.cpp: Work on the overall design.
30992 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
30994 * brush.cpp (image_brush_create_pattern): Revert previous patch as
30995 it broke test suite.
30997 2007-09-04 Jb Evain <jbevain@novell.com>
30999 * list.h, list.cpp: add a List::ForEach method.
31001 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31003 * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
31004 (based on lewings performance patch).
31006 2007-09-04 Sebastien Pouliot <sebastien@ximian.com>
31008 * text.h|cpp: TextBlock actual_[height|width] are already cached
31009 because they're expansive to calculate. Make sure we don't compute
31010 them until they're really required (e.g. when a lot of properties
31011 changes when loading an XAML file).
31013 2007-09-04 Chris Toshok <toshok@ximian.com>
31015 * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
31016 keyframes in reverse order so the sort works.
31018 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31020 * list.cpp (Insert): Fixed.
31022 * runtime.cpp (render_cb): Added some "FPS" debug spew.
31024 * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
31025 timeout id, by returning false, it is removed for us.
31027 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
31029 * media.cpp: fix memory leaks and crashes when a download gets
31032 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31034 * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
31035 as that seems to be what ffmpeg uses internally. Also added a new
31036 'eof' state so that we can easily tell if we've reached the end of
31037 the media stream (eof is true and no packets queued).
31039 2007-09-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
31041 * media.h, media.cpp: If we get a play request before the media is loaded,
31042 save the request and start playing when the media is loaded. Hopefully
31043 this is what MS is doing.
31045 2007-09-04 Jeffrey Stedfast <fejj@gnome.org>
31047 * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
31048 than comparing the Length() to 0.
31050 * list.cpp: Added more tests.
31052 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
31054 * rect.cpp: Safer IsEmpty (handles negative values)
31055 * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
31056 empty bounds. In Shape::DoDraw avoid call to cairo_set_matrix if
31059 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
31061 * media.cpp: Fix premul and remove confusing macro.
31063 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
31065 * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
31066 canvas.cpp, namescope.cpp: Plug some leaks.
31067 * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
31068 * dependencyobject.cpp: free_attachee: unref the contained dob. Use
31069 base_unref () instead of accessing the pointer in a few places to allow
31071 * debug.cpp: get_stack_trace is now able to get meaningful data for managed
31072 parts of the stack trace as well.
31074 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
31076 * list.cpp: List::Unlink: Link my neighbours to eachother.
31078 2007-09-01 Sebastien Pouliot <sebastien@ximian.com>
31080 * rect.cpp: Fix union with empty rectangles (so x and y are not
31081 assigned to 0 resulting in large bounds). Fix IsEmpty.
31082 * shape.cpp: Fix possible division by 0, resulting in infinite
31083 values (and much too large bounds)
31085 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
31087 *.cpp: Updated for the slightly different List API (list nodes no
31088 longer have Next() or Prev() methods, just access the pointers
31091 * animation.cpp: Made sorted_list a GPtrArray and updated to use
31092 g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
31093 sorted_list) accesses assumed nodes were of type KeyFrameNode,
31094 which they were not. Fixed.
31096 * xaml.cpp: Made XamlElementInstance.dtor virtual.
31098 * collection.h: Made the Collection::Node.dtor virtual.
31100 * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
31101 can no longer guarantee that List::Node->next will have the same
31102 address as the List::Node object and so the list implementation
31103 broke. This rewrite is a bit less fancy, but doesn't rely on that
31106 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31108 * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy
31109 doesn't change the current rectangle (but returns a new one).
31110 However everything seems to work, so they are probably not needed.
31112 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
31114 * text.cpp (OnPropertyChanged): Need to Invalidate() too.
31116 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
31118 * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
31119 now reference either the fullscreen drawing area or the normal drawing
31120 area. Refactored drawing area initialization and destruction into
31121 seperate methods. Modified ConnectEvent to be able to specify whether
31122 the drawing area should attach to realize/unrealize events (fullscreen
31123 drawing area shouldn't). Only emit ResizeEvent if we're not in
31124 fullscreen mode. Added normal_height/width, contains the size of the
31125 surface when not in fullscreen (as opposed to screen_height/width for
31126 fullscreen mode). Height/width now contains the actual size of the area
31127 where we draw, whether in fullscreen mode or not.
31129 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31131 * shape.cpp: #ifdef out an optimization that doesn't work with
31132 ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
31133 wouldn't render at all with it's fill brush). Added same shortcut
31134 (as before) for Shape::ComputeBoundsSlow.
31136 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31138 * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
31139 are known to be empty (UIElement::SHAPE_EMPTY).
31141 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
31143 * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
31144 apparently a point is inside a shape unregarding to whether it's filled
31145 or not, unlike geometries.
31147 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31149 * shape.cpp: Better degenerate handling for round-rectangles and
31152 2007-08-30 Chris Toshok <toshok@ximian.com>
31154 * collection.h, collection.cpp: change the prototype of
31155 Collection::Add, ::Insert, and ::SetVal to return bool. Make the
31156 subclasses check the return value before doing their type specific
31157 handling of the child. Fixes the crash from invalid xaml in
31160 * animation.h, animation.cpp: track collection api change.
31162 2007-08-30 Chris Toshok <toshok@ximian.com>
31164 * collection.cpp (Collection::Add): make the warning a lot more
31165 useful if the child isn't of the right type.
31167 2007-08-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
31169 * xaml.cpp: Unref the namescope.
31170 * debug.h, debug.cpp: Added. Implemented get_stack_trace and
31172 * clock.cpp: Unref the _instance.
31173 * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
31174 debug purposes. It's able to log to console object creation,
31175 destruction, ref/unrefs with a stacktrace with C++ unmangled function
31176 names, file and line number. Keep a count of created and destroyed
31177 objects, and a list of objects still alive. Ref and unref attached
31178 objects, and free the attachees when we're deleted.
31179 * animation.h, animation.cpp: Add animation_destroy, and destroy the default
31180 dependency property for a few properties.
31181 * type.cpp, type.cpp.in: Initialize Type::types to NULL.
31182 * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
31183 types. Call animation_destroy on shutdown, and add some object tracking
31184 output to runtime_init and runtime_shutdown.
31185 * Makefile.am: Added debug.*.
31187 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31189 * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored
31192 2007-08-30 Jeffrey Stedfast <fejj@novell.com>
31194 * mplayer.cpp (AdvanceFrame): If there is no video stream, return
31195 based on audio state. Also, if current_pts >= target_pts already,
31196 return true rather than false to pretend we advanced a frame (it's
31197 really not that important to our caller, all the value is used for
31198 is updating position).
31200 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31202 * shape.cpp: Handle negative values for Height and Width (not
31203 drawn) and for Radius[X|Y] (absolute values).
31205 2007-08-30 Jb Evain <jbevain@novell.com>
31207 * media.h, media.cpp: introduce a new MediaSource class that a
31208 MediaElement uses, so we can have either a SingleMedia or a Playlist
31210 * playlist.cpp, playlist.h: added
31211 * Makefile.am: add the previous files.
31213 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31215 * shape.cpp: Fix small rectangle fills when no stroke brush is
31218 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
31220 * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
31221 bounds on TextProperty change explicitly, it should already be
31222 recalculated later in the function in the same place it gets
31223 reclauclated for other property changes.
31224 (ComputeBounds): Updated to work the same as the rest of the
31227 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
31229 * shape.cpp: Fix ComputeBoundsFast to consider the stroke
31232 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
31234 * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify
31235 the path after we get a copy of it. Remove the now unrequired
31236 clipping inside the *::BuildPath for StretchUniformToFill.
31238 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
31240 * media.cpp (Render): Cache the pattern matrix.
31241 (DownloaderComplete): Remove the assert and simply handle that
31242 case by returning (which defers the call until OnLoaded).
31244 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
31246 * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
31247 making things consistent.
31249 2007-08-29 Chris Toshok <toshok@ximian.com>
31251 * merged delayed-rendering-branch branch to head. ChangeLog is:
31253 2007-08-28 Chris Toshok <toshok@ximian.com>
31255 * control.cpp (GetTransformFor): change this to act as
31256 Canvas::GetTransformFor does - we only put in the transform from
31257 parent to child here - don't include the parent's transform as
31258 well. Fixes the airlines demo.
31260 2007-08-28 Chris Toshok <toshok@ximian.com>
31262 * dirty.cpp (process_dirty_elements): use a different method for
31263 checking if against the toplevel canvas, and also use
31264 UIElement::parent instead of DependencyObject::GetParent() to get
31265 controls working a little better than before.
31267 * control.h, control.cpp: remove UpdateTransform. this is handled
31268 by the dirty.cpp code now.
31270 * dependencyobject.h, dependencyobject.cpp: copy over the
31271 event_object_{add,remove}_event_handler change from the trunk so
31272 we can continue to work with HEAD olive.
31274 2007-08-22 Chris Toshok <toshok@ximian.com>
31276 * uielement.cpp (Invalidate): don't actually invalidate the
31277 element unless it's visible.
31278 (OnPropertyChanged): the above change requires us to invalidate
31279 the element before setting the flags (in the case where we're
31280 hiding an element).
31282 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
31284 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
31285 unless unspecified, only then should we use video width/height.
31287 2007-08-21 Chris Toshok <toshok@ximian.com>
31289 * uielement.cpp (DoRender): short-circuit rendering of uielements
31290 when their opacity is 0.
31292 * dirty.cpp (process_dirty_elements): handle controls.
31294 2007-08-21 Chris Toshok <toshok@ximian.com>
31296 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
31297 (cairo_*_extents) codepath for computing bounds. Use this path
31298 for polygons, polylines, and paths. Implement a Line-specific
31299 fast ComputeBounds.
31301 2007-08-20 Chris Toshok <toshok@ximian.com>
31303 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
31304 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
31306 2007-08-20 Chris Toshok <toshok@ximian.com>
31308 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
31310 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
31311 call, and Rect::GrowBy
31313 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
31316 2007-08-20 Chris Toshok <toshok@ximian.com>
31318 * shape.h, shape.cpp: move the ellipse bound computing to shape
31321 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
31323 * clock.h: Implement TimeManager::GetObjectType.
31324 * dependencyobject.h, dependencyobject.cpp: Move all type management down to
31325 Base (GetObjectType, Is, GetType, GetTypeName), and implement
31326 GetObjectType in the classes that don't do it already. Remove
31327 BASE_FLOATS, simplifying ref counting.
31328 * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
31329 that don't already inherit from DependencyObject.
31330 * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
31331 raises events), and implement GetObjectType.
31333 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
31335 * shape.cpp: Fix StretchUniformToFill
31337 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
31339 * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
31340 (new since refresh?) need to be multiplied with the stroke's
31343 2007-08-28 Jeffrey Stedfast <fejj@novell.com>
31345 * text.cpp (Render): Fixed the "no text to render" optimization:
31346 don't check TextBlock::TextProperty to see if we have any text to
31347 render, instead check TextBlock::layout (which will have any text
31348 from inlines as well).
31349 (OnPropertyChanged): If the TextProperty changes, recalculate the
31352 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
31354 * geometry.h: Add a Path* parameter to Draw as we need to know some
31355 stuff (e.g. stroke thickness) in order to detect degenerate cases.
31356 * geometry.cpp: Handle degenerate case for RectangleGeometry.
31357 * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path
31358 element (NULL in the case of clipping).
31359 * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
31360 class. Add GetFillRule method. Handle most cases where a large stroke
31361 thickness change the SL drawing behaviour (wrt Cairo behaviour)
31362 * uielement.h: Add flags for empty/normal/degenerate shapes
31364 2007-08-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
31366 * panel.cpp: InsideObject: The point is only inside us if we have a
31367 background, otherwise we act like if we were transparent (which is what
31368 we are if we aren't painting anything inside us).
31369 * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
31370 it's closer to what it actually does.
31371 * shape.cpp: Changed implementation of Shape::CanFill to return true only if
31372 we're actually filled, and rename CanFill to IsFilled so that it's
31373 closer to what it actually does.
31375 2007-08-27 Jackson Harper <jackson@ximian.com>
31377 * dependencyobject.cpp|h: Don't return Collections when getting
31380 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
31382 * mplayer.cpp (Play): Always add a timeout, even for audio-only
31383 media, so that the callback can check if the media has ended and
31384 emit the MediaEnded event.
31386 * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
31388 * mplayer.cpp (MediaEnded): New convenience function.
31390 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
31392 * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
31393 as this clear any path data in the context (see
31394 test-path-group.xaml)
31396 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
31398 * mplayer.cpp (audio_play): Implement software balance/volume here
31399 rather than using the system's mixer (as that changes the
31400 balance/volume for all applications which is a bad thing). Fixes
31403 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31405 * panel.cpp: InsideObject: only skip checking the children if the
31406 point is not in the clipped area.
31408 * uielement.h, uielement.cpp: Added InsideClip, and moved the
31409 corresponding code from InsideObject to InsideClip.
31411 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
31413 * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
31414 tests/xaml/test-path-smoothquadraticbezier.xaml
31416 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31418 * uielement.h, uielement.cpp: Implement InsideObject here too, the same
31419 implementation as Shape has (for our Clip property).
31420 * frameworkelement.cpp: InsideObject: call new base implementation as well.
31421 * panel.cpp: InsideObject: don't check our children, the mouse may be over
31422 them, but they're not visible for some reason (the parent object might
31425 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31427 * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
31428 motion event even though the mouse isn't over us.
31429 * runtime.h: Add a public Surface::GetCapturedElement.
31431 2007-08-24 Jeffrey Stedfast <fejj@novell.com>
31433 * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
31434 video frames will update if we seek backwards.
31436 * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
31438 * media.cpp (UpdateProgress): Use the downloader progress value as
31439 the buffering progress value as well (since we don't yet stream).
31440 (DownloaderComplete): Call UpdateProgres() here so that we can
31441 flush the 100% progress value.
31443 * downloader.cpp (Write): Update the progress first, so that the
31444 writer callback can query the actual progress (all data read up to
31445 and /including/ this point in time).
31446 (NotifyFinished): Set progress to 100% and emit an event.
31448 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
31450 * value.h[.in]: Added AsNPObj.
31451 * type.cpp[.in]: Initialize Type::NPOBJ correctly.
31453 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
31455 * media.cpp: (DownloaderCompleted): The initial state of media
31456 elements that aren't autoplayed is 'Paused'.
31458 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
31460 * media.cpp (MediaElement): Initialize 'loaded' to false.
31461 (SetSource): Don't call DownloaderComplete() if we haven't been
31463 (GetValue): Convert to position from ms to TimeSpan ticks.
31464 (OnLoaded): Set loaded to true and, if we have a downloader which
31465 has completed the download, call DownloaderComplete() which will
31466 then open the media file and autoplay if appropriate.
31467 (OnPropertyChanged): Protect against creating a downloader for an
31470 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
31472 * media.cpp (DownloaderComplete): If we fail to open, emit the
31473 MediaFailedEvent and set some default values.
31474 (OnPropertyChanged): Don't StopLoader() here, do that all in
31475 SetSource (since SetSource needs to do it anyway).
31476 (SetSource): Call StopLoader() here and close the MediaPlayer,
31479 2007-08-23 Jackson Harper <jackson@ximian.com>
31481 * runtime.cpp|h: Make Resize use our event system (so the plugin
31483 * dependencyobject.cpp|h: Rename the add/remove handler functions
31484 to not require dependencyobjects.
31486 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
31488 * media.cpp (OnPropertyChanged): Don't autoplay here.
31489 (advance_frame): Do ms->TimeSpan conversion here, too.
31490 (DownloaderComplete): Instead of calling ::Pause(), just set the
31491 pause state since the MediaPlayer already starts out in paused
31494 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
31496 * clock.h: Add defines and methods to convert between timespans and
31498 * media.cpp: Create a default (empty) Markers collection. When setting
31499 MediaPlayer time values, convert between ticks (in TimeSpans) and
31500 milliseconds (which is what MediaPlayer expects). Emit MediaOpened
31501 when we're finished downloading a media, and if we're not autoplaying
31502 it, we're pausing it. Update uses of Value (gint64) constructors.
31503 * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a
31504 Value (gint64, Type::Kind) constructor to avoid mixups between
31505 INT64 and TIMESPAN values. Check for null before unref'ing a
31507 * xaml.cpp: Update uses of Value (gint64) constructors.
31509 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
31511 * type.[cpp|h].in: Add const's here that were only added manually
31512 to the generated files.
31514 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
31516 * mplayer.cpp: Implemented volume/balance
31518 2007-08-23 Sebastien Pouliot <sebastien@ximian.com>
31520 * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
31521 code in Polygon::Draw.
31523 2007-08-22 Chris Toshok <toshok@ximian.com>
31525 * clock.cpp (Tick): guard against division by zero. gets
31526 "monotone" displaying.
31528 2007-08-22 Sebastien Pouliot <sebastien@ximian.com>
31530 * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them
31531 from Rectangle and Ellipse. Monotone requires that on Path and I can't
31532 recall the reason I made this (while all the test cases I made still
31535 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
31537 * mplayer.cpp (MediaPlayer): Init mixer variables.
31539 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
31541 * media.cpp (advance_frame): Don't bother invalidating here, we'll
31542 do that in OnPropertyChanged() for the PositionProperty.
31543 (OnPropertyChanged): Invalidate if Position has changed and
31544 opacity > 0.0f (and we actually have video).
31545 (ComputeBounds): Use the FrameworkElement width/height if set.
31546 (GetTransformOrigin): Same.
31548 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
31550 * mplayer.cpp (Open): Merged both Open() implementations into a
31551 single one. We no longer use Open() without passing a uri (since
31552 Stop() has been implemented in a better way).
31553 (AdvanceFrame): Keep track of our current pts so that we won't get
31554 ahead of the audio if called too often.
31556 2007-08-20 Chris Toshok <toshok@ximian.com>
31558 * rect.cpp (bounding_rect_for_transformed_rect): oops, got
31559 MAX2/MIN2 mixed up.
31561 2007-08-20 Chris Toshok <toshok@ximian.com>
31563 * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
31564 name, I know, but we need this functionality. it's not enough to
31565 use UL and LR corners of the rectangle when computing the bounding
31566 rect for a transformed rectangle. we have to test all 4 points.
31568 * panel.cpp (ComputeBounds): use
31569 bounding_rect_for_transformed_rect.
31571 2007-08-17 Chris Toshok <toshok@ximian.com>
31573 * dependencyobject.cpp (strcase_equal, strcase_hash): new case
31574 insensitive hash functions.
31575 (RegisterFull): the property hash tables (per type, used for
31576 GetDependencyProperty) need to be case insensitive.
31578 2007-08-17 Chris Toshok <toshok@ximian.com>
31580 * xaml.cpp: remove Hidden from the visibility_map.
31581 (enum_from_str): if we don't see a name we recognize, try to parse
31582 it as a number. This could maybe be someplace else.
31584 * enums.h: remove VisibilityHidden
31586 * uielement.h, uielement.cpp: remove
31587 VisibilityHidden/LAYOUT_VISIBLE
31589 * control.h: remove GetLayoutVisible.
31591 * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
31592 item->GetVisible, since there's no need to distinguish between the
31595 2007-08-17 Jackson Harper <jackson@ximian.com>
31597 * clock.h: Add ToSeconds utility functions.
31599 2007-08-16 Jeffrey Stedfast <fejj@novell.com>
31601 * list.cpp (InsertSorted): For the stable evrsion, work backwards
31602 instead of forwards (improves performance in the typical case,
31603 altho we aren't gonna sue this feature anymore - z-sorted lists
31604 will now be GPtrArrays).
31606 * garray-ext.cpp|h: New src file containing an extension to
31607 GPtrArray for inserting an item into a presorted array.
31609 * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
31610 updated all usages of it.
31612 * panel.cpp (Render): Updated now that z_sorted is an array
31613 instead of a linked list.
31615 2007-08-16 Jackson Harper <jackson@ximian.com>
31617 * xaml.cpp: Transforms can be set as attributes, they are just a
31618 matrix in string form, that become a MatrixTransform on the
31620 - Made the debug a little nicer
31622 2007-08-15 Jackson Harper <jackson@ximian.com>
31624 * xaml.cpp: Since the callback setting is now a once per a domain
31625 thing, we don't want to check if they are already set. The 'are
31626 they already set' check only worked when we were setting them at
31627 the beginning of each parsing attempt. With our current setup it
31628 was causing everything to get loaded in the same domain.
31630 2007-08-13 Jeffrey Stedfast <fejj@novell.com>
31632 * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
31633 segfault if there are no packets in the queue.
31635 2007-08-13 Chris Toshok <toshok@ximian.com>
31637 * animation.cpp (*KeyFrame::InterpolateValue): for all the
31638 keyframes, if we don't have a Value defined, don't bother
31639 interpolating anything, just return baseValue.
31641 2007-08-13 Chris Toshok <toshok@ximian.com>
31643 * collection.cpp: fix merging/unmerging of child namescopes.
31645 * namescope.h, namescope.cpp: add a flag (merged) and a list of
31646 child merged namescopes which are searched any time this namescope
31647 is searched. Reimplement merge as list->Append, and unmerge as
31650 * dependencyobject.h: add ClearValue, and make GetParent
31653 * dependencyobject.cpp: add impl for ClearValue, and remove
31654 GetParent. Also, when finding a name we only check non-merged
31655 namescopes. The merged ones in the hieararchy will be checked as
31656 the children of the non-merged ones. Given that the set of names
31657 in merged scopes can't overlap, I'm not strictly sure this is
31658 necessary, except to reproduce Silverlight's faulty lookups after
31661 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
31663 * collection.cpp (Clear): Unregister the object names.
31665 * dependencyobject.h (GetName): uhh... just return the value, lets
31666 not go returning "(null)" in string form.
31668 2007-08-10 Chris Toshok <toshok@ximian.com>
31670 * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
31671 to the silverlight Key and call s->toplevel->HandleKeyDown.
31672 (key_release_callback): same.
31673 (gdk_keyval_to_key): new function, to map between gdk and
31676 * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
31677 just package up the args into a structure and Emit the event.
31679 * enums.h: add the Key enum from the silverlight docs.
31681 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
31683 * dependencyobject.cpp (resolve_property_path): Keep track of the
31684 last '.' so that when we go to get the DependencyProperty, we can
31685 pass the property name component rather than the full path of the
31686 property name. Fixes the color fades in Monotone.
31688 2007-08-09 Chris Toshok <toshok@ximian.com>
31690 * animation.h, animation.cpp: if any keyframe's keytime changes,
31691 we need to re-resolve the collection.
31693 2007-08-09 Jeffrey Stedfast <fejj@novell.com>
31695 * mplayer.cpp (Play): Only start up the io/audio threads if we
31696 aren't simply paused (e.g. if they are already alive).
31697 (IsPlaying): Return true only if playing && !paused.
31698 (audio_loop): Changed the locking logic to lock outside of the
31699 loop rather than inside. We now only release the lock inside the
31700 loop if/when the paused state changes.
31702 2007-08-08 Chris Toshok <toshok@ximian.com>
31704 * animation.h: sprinkle Resolve() methods and resolved flags
31707 * animation.cpp (Storyboard::HookupAnimationsRecurse): call
31708 Resolve() on the animation as we recurse.
31709 (KeyFrameNodeComparer): compare using the keyframe's resolved
31711 (KeyFrameNodeFinder): nuke.
31712 (KeyFrameCollection::Add): just mark the collection as needing to
31713 be resolved. don't muck with the sorted list here.
31714 (KeyFrameCollection::Insert): same.
31715 (KeyFrameCollection::Remove): same.
31716 (KeyFrameCollection::Clear): also mark the collection as
31718 (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
31719 (KeyFrameAnimation_ResolveKeyFrames): implement most of the
31720 algorithm posted at
31721 http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
31722 keytimes of different types. this is all untested, unfortunately,
31723 as I can't get non-TimeSpan keytimes to work on SL.
31724 (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
31726 (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
31727 the key frames before using sorted_list.
31728 (*AnimationUsingKeyFrames::Resolve): override the empty
31729 default, and call KeyFrameAnimation_ResolveKeyFrames.
31731 2007-08-08 Chris Toshok <toshok@ximian.com>
31733 * clock.cpp (Begin): make sure we handle clocks that seek in the
31736 2007-08-08 Chris Toshok <toshok@ximian.com>
31738 * canvas.cpp (Canvas::Canvas): create a temporary namescope
31739 whenever we create a canvas. We need this for animations that are
31740 started before the canvas is attached to the tree, or in any case
31741 where FindName is called on code associated with a subtree before
31742 it's added to the surface.
31744 * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
31745 Storyboard.TargetName can be assigned to the parent storyboard as
31746 well as the animation. Loop up the clock hierarchy when looking
31747 for the targetname.
31749 2007-08-07 Chris Toshok <toshok@ximian.com>
31751 * animation.cpp, animation.h
31752 (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
31753 iterate over all the keyframes looking for the last one - just
31754 look at the last one in the sorted list.
31756 2007-08-07 Jeffrey Stedfast <fejj@novell.com>
31758 * media.cpp (SetValue): Only crop position values if we're not
31759 updating state from the media player (we're allowed to set values
31760 outside of the duration range from the media player). Also, do our
31762 (OnPropertyChanged): Don't do our seeking here because we can't
31763 get the actual seek position as GetValue()'s override will
31764 re-query the media player for its actual position.
31766 * mplayer.cpp (Open): Don't create the threads here anymore,
31767 create them in Play() instead. Also calculate ahead of time the
31768 new audio->pts_per_frame value which allows the video to keep even
31769 better sync with the audio (we used to base this on actual time
31770 spent playing the audio frame rather which could sometimes be off
31772 (AdvanceFrame): If seek_pts is non-zero, then we need to base
31773 target_pts on it rather than video->initial_pts (assuming we have
31774 no audio to sync to).
31775 (Play): Set playing = true and create the audio/io threads.
31776 (Close): A lot of the logic has been moved into a new method,
31778 (StopThreads): Stop the threads and reset minimal state.
31779 (Stop): Call StopThreads() and seek back to the beginning of the
31781 (Seek): Implemented.
31782 (Position): Back to subtracting the initial_pts so that we always
31783 have a range of 0:duration. If seek_pts is set and >target_pts,
31784 use that rather than target_pts so even if we are in a stopped
31785 state, querying the position will return expected results.
31786 (audio_play): Return audio->pts_per_frame rather than the actual
31789 2007-08-06 Jackson Harper <jackson@ximian.com>
31791 * xaml.cpp: add VisualCollections.
31793 2007-08-06 Chris Toshok <toshok@ximian.com>
31795 * clock.cpp, clock.h: this might be completely wrong and break
31796 other demos... but childless clockgroups Stop when they hit their
31797 duration, they don't SkipToFill. fixes the silverlightclr balls
31800 2007-08-06 Larry Ewing <lewing@novell.com>
31802 * dependencyobject.h:
31803 * dependencyobject.cpp:
31806 * type.cpp: add const to the various string apis.
31808 2007-08-06 Jeffrey Stedfast <fejj@novell.com>
31810 * mplayer.cpp: Fixes to make it work with media files w/ no audio
31811 (or where we are unable to play the audio).
31813 2007-08-04 Chris Toshok <toshok@ximian.com>
31815 * brush.h, brush.cpp: add VisualBrush.
31817 * xaml.cpp (xaml_init): hookup VisualBrush parsing.
31819 * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
31821 2007-08-04 Chris Toshok <toshok@ximian.com>
31823 * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
31824 to work properly, panel needs to call
31825 FrameworkElement::Invalidate, not parent->ChildInvalidated
31828 * uielement.h, uielement.cpp: add an Invalidated event for use by
31831 2007-08-03 Chris Toshok <toshok@ximian.com>
31833 * collection.cpp (Collection::Add, Collection::Insert): reinstate
31834 jackson's merging code, but only do it if @data's namescope is
31837 * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
31839 * xaml.cpp (xaml_create_from_str): set the namescope to be
31840 temporary if create_namescope is false.
31841 (xaml_create_from_file): same.
31843 2007-08-03 Chris Toshok <toshok@ximian.com>
31845 * panel.h, panel.cpp: add an optimization for the 2 updates that
31846 travel down the tree (UpdateTotalOpacity and UpdateTransform).
31847 Since we're already invalidating the panel's bounds (in fact we do
31848 it before traversing), we can ignore the invalidates which come
31849 back up the tree from the children.
31851 * media.cpp, media.h: make NaturalDuration a Duration. this gets
31852 the last of roeder's demos sorta working.
31854 2007-08-03 Jeffrey Stedfast <fejj@novell.com>
31856 * mplayer.cpp: Whenever we change the 'paused' state, signal to
31857 the other thread(s) that it has changed so that they can go on
31858 with their lives immediately rather than waiting for the kernel to
31861 2007-08-02 Chris Toshok <toshok@ximian.com>
31863 * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
31864 you get your panties in a twist, check this out. If you have a
31865 control and set both its Canvas.LeftProperty and that of its root
31866 object (the return value of InitializeFromXaml), the effects are
31867 *additive*, yet GetValue on each object returns exactly what you'd
31868 expect - the value you set on it. The only reasonable explanation
31869 for this is that Control has Canvas's layout algorithm c&p'ed into
31872 2007-08-02 Chris Toshok <toshok@ximian.com>
31874 * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
31875 functions to returning DependencyObjects instead of UIElements.
31876 in javascript you can create arbitrary xaml hierarchies (transform
31877 groups, brushes, etc).
31879 * control.cpp: need a cast here due to the above change.
31881 2007-08-02 Chris Toshok <toshok@ximian.com>
31883 * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
31884 stuff the gtk_widget_queue_draw_area call there.
31886 * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
31887 panel.cpp, control.h, control.cpp: change the way
31888 UIElement::Invalidate works. It used to call GetSurface() which
31889 would recurse up the tree to the root, and return the Surface*
31890 back down. It would then call gtk_widget_queue_draw_area there.
31891 This left little room for optimization. Switch everything over to
31892 using a new method implemented by all container classes,
31893 ChildInvalidated. Basically Invalidate's recurse up to the root
31894 as before, but the actual gtk call happens at the root (well, 1
31895 level above it. at the Surface itself). In the future we can
31896 freeze Invalidates in container elements when they do things like
31897 update their transform so we'll just send 1 Invalidate up the
31898 tree, not N Invalidates for N children.
31900 2007-08-02 Jeffrey Stedfast <fejj@novell.com>
31902 * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
31905 * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
31906 (IsPaused): New method.
31908 * media.cpp (MediaElement::GetValue): If the Position is being
31909 requested, query the MediaPlayer.
31910 (MediaElement::SetValue): Make sure the PositionProperty value is
31911 within bounds and force it to be if not.
31912 (MediaElement::Stop): Do nothing if we aren't playing/paused.
31913 (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
31916 2007-08-02 Chris Toshok <toshok@ximian.com>
31918 * uielement.h, uielement.cpp: propagate opacity changes the way we
31919 do transform changes. Store the total opacity of an item in the
31920 item, as we do with absolute_xform. This keeps us from doing a
31921 walk up to the root of the hierarchy every time we have to draw an
31922 element (which we we were doing before in
31923 UIElement::GetTotalOpacity.)
31925 * panel.cpp, panel.h: when we update our total opacity, loop over
31926 the children telling them to update as well.
31928 * collection.cpp: propagate the panel's total opacity downward
31929 into the newly added subtree.
31931 2007-08-02 Chris Toshok <toshok@ximian.com>
31933 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
31934 GetSurface/SetSurface.
31936 2007-08-02 Chris Toshok <toshok@ximian.com>
31938 * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
31939 handle the property changing.
31941 * control.h, control.cpp: rip out all the proxying behavior.
31942 Control now works as a very specialized container. Imagine if
31943 Panel had only 1 child, and no generalized way of manipulating it
31944 (other than initializing it from a xaml fragment), and you have
31947 2007-08-01 Larry Ewing <lewing@novell.com>
31949 * xaml.cpp: don't ever make the previous point relative.
31951 2007-08-01 Jeffrey Stedfast <fejj@novell.com>
31953 * text.h: Removed deprecated enum values for FontWeights
31955 * media.cpp, mplayer.cpp: Updated to add features newly added with
31956 the July 2007 release of Silverlight 1.1
31958 2007-07-31 Chris Toshok <toshok@ximian.com>
31960 * runtime.cpp (Attach): attach a namescope to the toplevel canvas
31961 if there isn't one when it's attached.
31963 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
31965 * media.cpp: NaturalDuration is actually a TimeSpan, not a
31968 2007-07-31 Chris Toshok <toshok@ximian.com>
31970 * media.h, media.cpp: move the MediaBase events to MediaElement.
31972 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
31974 * text.h: Added StyleSimulations enum values.
31976 * xaml.cpp: Updated the StyleSimulations enum mapping.
31978 2007-07-31 Chris Toshok <toshok@ximian.com>
31980 * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
31981 enum StyleSimulations.
31983 * xaml.cpp: add stylesimulations enum map.
31985 2007-07-30 Chris Toshok <toshok@ximian.com>
31987 * uielement.cpp, uielement.h: add the Tag property.
31989 2007-07-30 Chris Toshok <toshok@ximian.com>
31991 * animation.h, animation.cpp: add the three KeyFrameCollection
31992 subclass types, and switch all references to "KeyFrameCollection"
31993 to the more specific types.
31995 * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
31996 with Color/Double/PointKeyFrameCollections as subclasses.
31998 * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
32001 2007-07-30 Larry Ewing <lewing@novell.com>
32003 * color.cpp: make sure that we size expand 3 digit color
32004 specifications properly.
32006 2007-07-30 Chris Toshok <toshok@ximian.com>
32008 * uielement.h, uielement.cpp: remove InsideObject from here, and
32009 move its warning to Visual::InsideObject instead.
32011 * visual.h, visual.cpp: add visual.cpp, and move implementation of
32012 InsideObject there.
32014 * Makefile.am (libmoon_la_SOURCES): add visual.cpp
32016 2007-07-30 Larry Ewing <lewing@novell.com>
32018 * xaml.cpp: correct smooth path segments to use the correct value for
32019 cp1 and don't try to make it relative because all the sources are
32020 absolute. Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
32022 2007-07-30 Chris Toshok <toshok@ximian.com>
32024 * clock.h, clock.cpp: add very naive, probably broken first pass
32027 2007-07-30 Chris Toshok <toshok@ximian.com>
32029 * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
32031 2007-07-30 Chris Toshok <toshok@ximian.com>
32033 * brush.h, brush.cpp: track breaking change of the
32034 Brush.Transform/RelativeTransform properties - they're speced to
32035 be Transforms, not TransformGroups.
32037 2007-07-29 Chris Toshok <toshok@ximian.com>
32039 * collection.h, collection.cpp: change "ResourceCollection" to
32040 "ResourceDictionary".
32042 * uielement.cpp: same.
32044 * type.cpp, type.h, value.cpp, value.h: same.
32048 2007-07-27 Chris Toshok <toshok@ximian.com>
32050 * xaml.cpp (xaml_set_property_from_str): look up the enum map from
32051 the property name, not the value.
32053 2007-07-27 Chris Toshok <toshok@ximian.com>
32055 * transform.h, transform.cpp: cache the transformation matrix once
32056 we recompute it. This gives us the responsiveness of delayed
32057 updating without the cost of calculating the matrix once per
32058 object associated with it. a property change just sets the
32059 "need_update" flag, which causes a recompute on the next
32062 2007-07-27 Larry Ewing <lewing@novell.com>
32064 * uielement.cpp: implement initial support for OpacityMask.
32066 2007-07-26 Miguel de Icaza <miguel@novell.com>
32068 This implements support for relative MediaElement sources and
32069 makes all of them go through the downloader, like we do for
32072 * media.cpp (MediaElement): Do an implementation of SetSource
32073 similar to the one in Image. Although there is some code that
32074 could be shared, the problem is that some parameters get in the
32077 (MediaElement::DownloaderComplete): Move the playback here.
32079 (StopLoader): Utility routine, factor this out also on the Image
32080 case, and hook this up to the destructor of Image and
32084 2007-07-25 Chris Toshok <toshok@ximian.com>
32086 * media.h, media.cpp: add the MediaElement events,and emit
32087 DownloadProgressChanged and CurrentStateChanged.
32089 2007-07-25 Chris Toshok <toshok@ximian.com>
32091 * media.h, media.cpp: register the 3 MediaBase events. now we
32092 need to figure out where to emit them.
32094 2007-07-25 Jackson Harper <jackson@ximian.com>
32096 * value.cpp: Assign the kind for NPOBJs.
32098 2007-07-25 Miguel de Icaza <miguel@novell.com>
32100 * openfile.cpp (open_file_dialog_show): Change this method to
32101 return an array with all the selected files.
32103 2007-07-24 Chris Toshok <toshok@ximian.com>
32105 * runtime.h, runtime.cpp: permit setting of the the surface's
32106 background color, which is used to fill the widget before we
32107 render the toplevel canvas. only do this, though, if the canvas
32108 is not transparent.
32110 2007-07-24 Chris Toshok <toshok@ximian.com>
32112 * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
32113 of making the assignment.
32115 * canvas.h, canvas.cpp: make surface private, and add SetSurface
32116 for runtime.cpp to use.
32118 2007-07-24 Chris Toshok <toshok@ximian.com>
32120 * brush.h, brush.cpp: make ImageBrush::SetSource take a const
32123 2007-07-24 Jackson Harper <jackson@ximian.com>
32125 * type.h.in: Add the NPOBJ type.
32126 * value.h.in: Add the npobj value, it's just stored as a pointer
32127 so that we don't become dependent on mozilla.
32128 * value.cpp|h,type.h: sync.
32130 2007-07-24 Jackson Harper <jackson@ximian.com>
32132 * typegen.cs: Kind.cs lives in agmono now.
32135 2007-07-24 Chris Toshok <toshok@ximian.com>
32137 * media.h, media.cpp: const-ify the PartName argument of the
32138 SetSource methods. also, ref the new downloader before unreffing
32139 the old one in Image::SetSource. they could be the same object.
32141 2007-07-24 Chris Toshok <toshok@ximian.com>
32143 * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
32144 is NULL, return early.
32146 2007-07-23 Chris Toshok <toshok@ximian.com>
32148 * Makefile.am (libmooninclude_headers): add some missing headers.
32150 * error.h: split out the error classes here.
32152 * libmoon.h: include error.h
32154 * xaml.h: remove the error classes from here.
32156 * xaml.cpp: include error.h
32158 2007-07-23 Miguel de Icaza <miguel@novell.com>
32160 * runtime.cpp: Removed the timer code from here, move to plugin.
32162 2007-07-20 Chris Toshok <toshok@ximian.com>
32164 * xaml.cpp (custom_add_child): this method is what's called when
32165 we add a child to an element of a custom namespace. Trouble is,
32166 it might be a panel subclass. If it is, and the child is a
32167 UIElement subclass, go ahead and add the child using
32168 panel_child_add. This gets the Loaded events working properly in
32169 the chess demo (the trouble was that the custom children weren't
32170 even added to the tree, so their OnLoaded methods weren't being
32173 2007-07-20 Miguel de Icaza <miguel@novell.com>
32175 * collection.cpp: Add support for RemoveAt.
32177 * runtime.cpp (html_timer_timeout_add): Added helper routine to
32178 setup Html timeouts.
32180 2007-07-20 Chris Toshok <toshok@ximian.com>
32182 * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
32183 from Canvas to Panel. I consider this cleaning up the source, as
32184 it's entirely possible to write Panel subclasses that aren't
32185 Canvas subclasses, but if you did that you'd have no
32186 rendering/event handling.
32188 Now pretty much all logic that involves iterating over the list of
32189 children is in Panel. This also greatly simplifies Canvas. It is
32190 now just a Panel with 2 interesting things about it: 1) it
32191 provides 2 attached properties to lay out its children, and 2) it
32192 allows the surface to dictate its bounds if it's the toplevel
32195 2007-07-20 Chris Toshok <toshok@ximian.com>
32197 * downloader.cpp (Open): set the uri of the downloader.
32199 2007-07-20 Chris Toshok <toshok@ximian.com>
32201 * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
32202 so the potentially large number of objects which don't register
32203 events don't allocate them.
32205 2007-07-20 Chris Toshok <toshok@ximian.com>
32207 * clock.h, clock.cpp: lock around access to the tick_call list, so
32208 tick calls can be added from other threads.
32210 2007-07-16 Miguel de Icaza <miguel@novell.com>
32212 * media.cpp (SetSource): Also handle Completed.
32214 * downloader.cpp (Send): If a send operation is performed on an
32215 object that has completed its operation, immediately emit the
32216 finished event or error event.
32218 (Open): During open invalidate the state, to
32219 ensure that new downloads are properly triggered.
32221 2007-07-16 Chris Toshok <toshok@ximian.com>
32223 * frameworkelement.h, frameworkelement.cpp: we need
32224 framework_element_new so managed subclasses of FrameworkElement
32227 * uielement.h, uielement.cpp: same for this type.
32229 2007-07-13 Chris Toshok <toshok@ximian.com>
32231 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32232 normally we'd only update the bounds of this element on a
32233 width/height change, but if the render transform is someplace
32234 other than (0,0), the transform needs to be updated as well.
32236 2007-07-12 Chris Toshok <toshok@ximian.com>
32238 * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
32239 capturing. This should be on Visual and not UIElement, but we
32240 don't dispatch events that way.
32242 2007-07-12 Chris Toshok <toshok@ximian.com>
32244 * downloader.h, downloader.cpp: make the Downloader object a bit
32245 more C++ friendly, and make all the private data private.
32247 Also, take this opportunity to switch to using RegisterEvent/Emit
32248 to generate events, instead of the custom listeners. This will
32249 let JS hook up to the events.
32251 * media.h, media.cpp: track the downloader changes.
32253 2007-07-11 Jackson Harper <jackson@ximian.com>
32255 * collection.cpp: Comment out the namescope merging stuff for now,
32256 it causes some regressions.
32258 2007-07-12 Jackson Harper <jackson@ximian.com>
32260 * xaml.cpp: Restart the whole attribute parsing loop when the
32261 reparse flag is set, otherwise the first attribute will be
32264 2007-07-11 Chris Toshok <toshok@ximian.com>
32266 * uielement.cpp (UIElement::UIElement): the event names need to
32267 match those used by microsoft. makes it easier to handle the
32268 event hooking up in the plugin, where the event names are used.
32270 2007-07-11 Chris Toshok <toshok@ximian.com>
32272 * xaml.cpp (xaml_set_property_from_str): the plugin does its own
32273 resolution of properties now, so it doesn't need to pass the
32274 property name. Change this to take the DependencyProperty*
32277 * xaml.h: change prototype for xaml_set_property_from_str.
32279 2007-07-11 Jackson Harper <jackson@ximian.com>
32281 * collection.cpp: When new objects are added to a collection, try
32282 to merge them into the containers namescope.
32284 2007-07-11 Jackson Harper <jackson@ximian.com>
32286 * xaml.cpp: We need to stop parsing if there is an error while
32287 resolving a custom namespace type.
32289 2007-07-10 Chris Toshok <toshok@ximian.com>
32291 * dependencyobject.cpp (resolve_property_path): we need to reset
32292 "expression_found" when we hit a '.' so that we'll lookup what
32295 2007-07-10 Chris Toshok <toshok@ximian.com>
32297 * dependencyobject.cpp (resolve_property_path): we need to be able
32298 to handle more than just single digit indexers. use strtol and
32299 recompute 'i' afterward.
32301 * canvas.cpp (Canvas::InsideObject): revert the change that helped
32302 dr.popper because it breaks lunareclipse.
32304 2007-07-09 Chris Toshok <toshok@ximian.com>
32306 * demo.cpp: don't pass the parser callbacks to the individual xaml
32309 * control.h, control.cpp: don't pass the parser callbacks to
32310 initialize_from_xaml.
32312 * xaml.h, xaml.cpp: remove the parser callbacks from the
32313 individual parsing methods, and add xaml_set_parser_callbacks.
32315 2007-07-09 Jeffrey Stedfast <fejj@novell.com>
32317 * mplayer.cpp (audio_loop): If we break out of the loop because
32318 the media player was stopped, don't forget to unlock the pause
32320 (Close): Don't free the uri here.
32321 (~MediaPlayer): Free it ehre, though.
32323 2007-07-09 Chris Toshok <toshok@ximian.com>
32325 * uielement.h, uielement.cpp: we need to register the
32326 KeyUp/KeyDown events (even if we aren't emitting them) to keep
32327 from getting a warning when running aglayoutdemo.
32329 * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
32330 method (and remove all error handling, which should likely go back
32331 in) and replace the previous implementation. It was failing to
32332 parse timespans like this: 0:0:0.20000000 because it was treating
32333 it as if I wanted "20000000" tenths of a second, instead of 2.
32334 This makes the 'pop' animation in dr.popper actually show up.
32336 2007-07-09 Chris Toshok <toshok@ximian.com>
32338 * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
32340 (Storyboard::Begin): This is a dubious change. Remove the check
32341 to see if we weren't already Active. This fixes the calendar view
32342 in airlines, since there's a window where the start animation is
32343 startable when we enter a day, but the end animation isn't (since
32344 it's still active) when we leave. So we're left with a selected
32347 * clock.cpp: instead of Stopping clocks that come to the end of
32348 their active period, move to the Filling state. ClockGroups with
32349 automatic duration and no Active children still stop correctly.
32351 2007-07-08 Chris Toshok <toshok@ximian.com>
32353 * many-files (again!): another, smaller change to the event stuff.
32354 stop using strings for everything that we can. Register events at
32355 object construction time, and use those id's for everything else.
32356 The string interface is still around because of
32357 EventTrigger::Set/RemoveTarget, as well as the managed code.
32359 One further change that's needed - the id's are per-instance now,
32360 which is stupid. they should be static.
32362 This further cuts down the work (in terms of hash functions) that
32363 needs to be performed in order to dispatch an event.
32365 2007-07-08 Chris Toshok <toshok@ximian.com>
32367 * many-files: fairly big change. Stick the EventObject class
32368 between Base and DependencyObject in the hierarchy, and get rid of
32369 DependencyObject's "events" field. Get rid of all the registered
32370 events on surface, and emit them directly from the elements where
32371 they occur. This allows us to remove the Surface* parameter to
32372 all the event methods. Also, change the EventHandler signature to
32373 include the sender of the event as well as a "calldata" pointer,
32374 which is where we stuff the unmanaged MouseEventArgs (and later
32375 will the KeyboardEventArgs).
32377 Next step is to add RegisterEvent in EventObject and use that
32378 integer id everywhere instead of the string name when we Emit
32381 2007-07-07 Chris Toshok <toshok@ximian.com>
32383 * dependencyobject.h: add GetName() instance method.
32385 * dependencyobject.cpp (dependency_object_get_name): and call it
32388 * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
32389 implementation here since FrameworkElement just goes by
32392 * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
32393 same element" optimization. it's stupid and doesn't work. what
32395 (Canvas::ComputeBounds): simplify this by using
32396 item->GetLayoutVisible instead of item->GetValue.
32397 (Canvas::Render): enable the rendering optimization where we only
32398 bother rendering elements whose bounds intersect those of the
32399 rectangle we're repainting. This seriously speeds up airlines.
32401 * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
32402 another flag. now the three VisibilityProperty states are
32403 represented by two flags.
32405 Also, remove the implementation of GetSizeForBrush (not all
32406 UIElements are stroked) and warn callers.
32408 * control.cpp: Attach to the real object, and report back its
32409 property changes to our parents. Also, control_initialize_from_xaml
32410 should call Control::InitializeFromXaml.
32412 * control.h: override the 3 Get*Visible methods from UIElement,
32413 and return our real_object's state.
32417 2007-07-07 Jeffrey Stedfast <fejj@gnome.org>
32419 * demo.cpp (FileDownloadState::Send): Only notify complete if uri
32420 != NULL (if uri is NULL, then it means it couldn't be opened).
32421 (FileDownloadState::Open): notify error if we can't open the file.
32423 * mplayer.cpp: Fix to make sure we have
32424 AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
32425 before calling decode to prevent an ffmpeg warning.
32427 2007-07-07 Chris Toshok <toshok@ximian.com>
32429 * brush.cpp: make sure to use GetSizeForBrush for everything
32430 instead of cairo_stroke_extents, which won't work for non-stroked
32431 elements like canvases. Also, notify changes to the
32432 GradientStopCollection up the hierarchy properly.
32434 * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
32435 implementation for FrameworkElement so Canvases (and other
32436 uielement subclasses) can have brushes assigned to them (canvas
32437 uses it for its background.)
32439 * canvas.cpp (Canvas::Render): remove the unused label.
32441 2007-07-06 Miguel de Icaza <miguel@novell.com>
32443 * media.cpp: Do not pass the filename as the result now on the
32444 calls. Code must use the downloader_get_response_text or
32445 downloader_get_response_file to get the contents from the download
32446 (as the request will include the part name).
32448 * downloader.cpp: Add a cache for zip file parts.
32450 * media.h (Image): track the part name that was requested on the
32453 2007-07-06 Chris Toshok <toshok@ximian.com>
32455 * canvas.cpp (Canvas::ComputeBounds): if the width/height
32456 framework element properties haven't been set (their default is
32457 0.0), then don't union it with the rest of our bounds.
32459 2007-07-06 Chris Toshok <toshok@ximian.com>
32461 * runtime.h, runtime.cpp: continue the marginalization of
32462 Surface-as-general-data-dumping-ground by passing the cairo
32463 context to all the event handlers that need it (all but Leave, but
32464 should we make this distinction?).
32466 Make tons of stuff private that doesn't need exposing. Add
32467 accessors for the easier things, and leave the callbacks public
32468 for now. Also clean up the partially C/partially c++
32469 implementation in runtime.cpp. Now the C api is a thin wrapper
32470 around instance method calls, and all the gtk/clock event
32471 callbacks are static methods so they can still access the private
32474 * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
32475 uielement.cpp: fallout from the event signature changes - add
32476 cairo_t* to a lot of places, basically.
32478 * demo.cpp: no need to use the C api for Surface here. just use
32481 2007-07-06 Jeffrey Stedfast <fejj@novell.com>
32483 * media.cpp (OnPropertyChanged): Oops, be consistant with other
32484 implementations - only chain up if it wasn't a property owned by
32487 * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
32488 to save object size.
32490 * media.cpp (OnPropertyChanged): Fixed to always notify property
32491 listeners and chain up to our parent impl.
32493 2007-07-06 Miguel de Icaza <miguel@novell.com>
32495 * downloader.cpp: Implement the zip file support for the
32496 downloader using miniZip, from:
32498 http://www.winimage.com/zLibDll/minizip.html
32500 The implementation is in C++, so there are no needs to delegate
32501 this to the managed side as previously planned.
32503 There are two APIs: one returns a filename, the other returns the
32504 file loaded into memory, with the size of the memory blob.
32506 2007-07-06 Chris Toshok <toshok@ximian.com>
32508 * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
32509 track of the visibility (boolean, not three-state) and hit test
32510 visibility state in our flags. implement GetVisible() and
32511 GetHitTestVisible() using the flags.
32513 * canvas.cpp (Canvas::CheckOver): use GetVisible and
32514 GetHitTestVisible to avoid property lookups when dispatching
32517 2007-07-06 Chris Toshok <toshok@ximian.com>
32519 * runtime.cpp (measuring_context_create): we keep a singleton
32520 measuring context now.
32521 (measuring_context_destroy): do nothing here. it's freed in
32523 (runtime_shutdown): free up our measuring context.
32525 * canvas.cpp, canvas.h, control.cpp, control.h,
32526 frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
32527 text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
32528 InsideObject to take the cairo_t* instead of the Surface.
32530 2007-07-06 Chris Toshok <toshok@ximian.com>
32532 * runtime.cpp (Surface::SetCursor): new method, used in the event
32533 code to update the cursor as we enter/leave elements.
32535 * runtime.h: add method, cursor_instance field, and move the body
32536 of the Surface ctor (and initializations) to the .cpp file.
32538 * xaml.cpp: fix name of Cursor property enum mapping.
32540 * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
32541 control.cpp: add MouseCursor* arg to HandleMotion so we can report
32542 back cursor changes on elements.
32544 Also, in canvas.cpp, implement IsHitTestVisible checking in
32547 * enums.h: add the MouseCursor enum.
32549 2007-07-05 Chris Toshok <toshok@ximian.com>
32551 * Makefile.am (libmooninclude_headers): remove cutil.h
32552 (libmoon_la_SOURCES): remove cutil.cpp
32554 * cutil.h, cutil.cpp: remove. no longer necessary.
32556 * text.cpp (TextBlock::ComputeBounds): load the identity matrix
32557 before stroke/fill_extents to work around a cairo bug that was
32558 giving us enormous bounds on rotated elements. also, -1 from x/y
32559 and +2 to width/height of our bounds.
32561 * media.cpp (MediaElement::ComputeBounds): load the identity
32562 matrix before stroke/fill_extents to work around a cairo bug that
32563 was giving us enormous bounds on rotated elements. also, -1 from
32564 x/y and +2 to width/height of our bounds.
32565 (Image::ComputeBounds): same.
32567 * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
32568 no stroke, we drew it, and do_op was true.
32569 (Shape::ComputeBounds): load the identity matrix before
32570 stroke/fill_extents to work around a cairo bug that was giving us
32571 enormous bounds on rotated elements. also, -1 from x/y and +2 to
32572 width/height of our bounds.
32574 * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
32575 subproperty changes on RenderTransformOrigin, since it's a point
32576 and not a dependency object.
32578 2007-07-05 Chris Toshok <toshok@ximian.com>
32580 * runtime.cpp, runtime.h: store the last mouse position of events
32581 so that we can continue to update after the clock tick (and
32582 provide motion/enter/leave events to elements that might have
32583 moved under the pointer).
32585 The "update-input" event isn't presently emitted (see clock.cpp)
32586 because it results in this code calling HandleMotion on every
32587 tick, which ends up emitting the C# event (which is wrong).
32589 * clock.h, clock.cpp: add a (presently unused) phase to the clock
32590 tick to update the current mouse over after we've updated our
32591 clocks (and therefore possibly updated the transforms on
32594 2007-07-05 Chris Toshok <toshok@ximian.com>
32596 * dependencyobject.cpp (dependency_object_get_name): change this
32597 to return the x:Name value if there is one (and "(null)" if not).
32598 (dependency_object_get_type_name): and make this function do the
32599 job originally done by _get_name.
32601 * dependencyobject.h: add dependency_object_get_type_name
32604 2007-07-05 Chris Toshok <toshok@ximian.com>
32606 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
32607 mouse event code so that the Handle* calls return void, like the
32608 Enter/Leave calls do. Also, all checks for "inside"-ness happen
32609 in the canvas/parent object. Also factored out the loop over
32610 children to "FindMouseOver", with the checks happening in
32613 This needs more testing to make sure that we're still emitting
32614 events in the right order/amount as silverlight.
32616 In uielement.cpp, also add support for showing the bounding
32619 * control.h, control.cpp: track event refactoring.
32621 * frameworkelement.cpp (FrameworkElement::InsideObject): remove
32622 the bounding rect check. that's handled in the parent object now.
32624 2007-07-04 Chris Toshok <toshok@ximian.com>
32626 * media.cpp, media.h: rework our caching for images. we now
32627 properly refcount things, don't leak the filename (or the
32628 surface), share 1 xlib surface amongst all Image's, and don't
32629 crash. improvements all around!
32631 2007-07-04 Miguel de Icaza <miguel@novell.com>
32633 * value.cpp (Value): Add a couple of extra cases I had missed
32634 where we should be using g_new instead of new as FreeValue always
32637 2007-07-03 Jackson Harper <jackson@ximian.com>
32639 * xaml.cpp: Add the stylus types and some missing collections,
32640 this brings us up to sync with everything implemented in
32643 2007-07-03 Chris Toshok <toshok@ximian.com>
32645 * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
32646 filled), we need to call cairo_new_path.
32648 2007-07-03 Jackson Harper <jackson@ximian.com>
32650 * xaml.cpp: Some post parsing memory cleanup and a little extra
32653 2007-07-03 Chris Toshok <toshok@ximian.com>
32655 * text.h: add prototype for text_block_set_font_source.
32657 2007-07-03 Chris Toshok <toshok@ximian.com>
32659 * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
32660 brush property changes. Property chain up to
32661 Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
32662 (Shape::ComputeBounds): we need to do the fill, so pass true as
32663 consider_fill to DoDraw. otherwise a stroke-less filled shape
32664 gets bounds with w == h == 0.0.
32666 2007-07-03 Chris Toshok <toshok@ximian.com>
32668 * collection.cpp (VisualCollection::Clear): force the invalidate
32669 when we update our bounds. Also, don't do anything if the length
32670 of the collection is 0.
32672 2007-07-03 Chris Toshok <toshok@ximian.com>
32674 * canvas.cpp (Canvas::ComputeBounds): we need to always include
32675 our FrameworkElement::Width/Height in our bounds computation,
32676 instead of only consulting them if we have no children.
32678 2007-07-03 Chris Toshok <toshok@ximian.com>
32680 * media.cpp, media.h: add an image surface cache. we don't cache
32681 the xlib surface unfortunately, so there's still a slowdown from
32682 generating 1 per Image for shared pixbufs.
32684 2007-07-03 Miguel de Icaza <miguel@novell.com>
32686 * collection.cpp: Add support for reporting errors if the iterator
32687 gets out of sync with the collection.
32689 * demo.cpp: Updated to the new downloader interface.
32691 * downloader.cpp: Eliminates the in-memory buffer during
32694 We still do the progressive updates as those are necessary for the
32695 progress indicators, and if we ever need to hook up during
32696 progressive downloads again.
32698 But now downloads on completion must notify the downloader of the
32699 local file where the download contents have been placed (necesary
32700 for implementing the Zip-file support).
32702 (Downloader): eliminate our in-memory buffer byte_array_contents
32704 (downloader_notify): takes a new extra argument, overloaded
32705 depended on the operation.
32707 (get_response_text): currently not implemented, it needs to be
32708 implemented by a callback into managed code so we can use ZipLib
32709 (unless we can find a suitable unmanaged version).
32711 * media.cpp: Remove the stale code for progressive image
32713 2007-07-02 Miguel de Icaza <miguel@novell.com>
32715 * media.cpp (SetSource): If we had a previous downloader, unref
32718 2007-07-02 Chris Toshok <toshok@ximian.com>
32720 * collection.cpp (VisualCollection::Remove): punt on the optimized
32721 behavior for now. invalidating just the item should work if the
32722 item's bounds are correct, but for some reason the map path
32723 segments in the airline demo aren't redrawing properly. So, for
32724 now we just invalidate the parent container when an item is
32727 * control.h, control.cpp: override GetValue to report back values
32728 from our real_object if there is one, from us otherwise. and
32729 override SetValue to set values both on us and the real_object if
32732 Also, do nothing in our ComputeBounds call. Our GetBounds always
32733 returns the right thing (the bounds of the real_object), so
32734 there's no need to do any computation.
32736 lastly, remove the OnChildPropertyChanged. This is only invoked
32737 for attached properties, so we shouldn't ever be called.
32739 2007-07-02 Chris Toshok <toshok@ximian.com>
32741 * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
32742 updatebounds/invalidate here. UpdateTransform will take care of
32745 2007-07-02 Chris Toshok <toshok@ximian.com>
32747 * shape.cpp (Shape::OnPropertyChanged): turns out we need to
32748 update our bounds on the FillProperty changing as well, for shapes
32749 that aren't stroked.
32751 2007-07-02 Miguel de Icaza <miguel@ximian.com>
32753 * collection.cpp: Guard for cases where we are not attached to
32754 anything (closure is set to NULL).
32756 2007-07-02 Chris Toshok <toshok@ximian.com>
32758 * collection.cpp (collection_iterator_move_next): rework the logic
32759 here so we don't do the "current = next" assignment if
32760 iterator->first is true.
32761 (VisualCollection::Add): fix g++ warning.
32762 (TriggerCollection::SetVal): return the old element.
32764 2007-07-02 Jackson Harper <jackson@ximian.com>
32766 * xaml.cpp: Convert char data into Runs and set them on
32767 TextBlocks, also flush the char data when starting elements, so
32768 things like: <TextBlock>line one<LineBreak />line two</TextBlock>
32769 work properly. <TextBlock><TextBlock.Inlines>text... is illegal
32772 2007-07-02 Miguel de Icaza <miguel@novell.com>
32774 * value.cpp: Use g_malloc/g_free as the managed code is not able
32775 to use C++ new operator, so we have a potential error when we
32776 mismatch g_new with new and g_free with delete.
32778 Reported by Valgrind.
32780 * uielement.cpp: Add new helper method needed by Alan.
32782 2007-07-01 Chris Toshok <toshok@ximian.com>
32784 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32785 notify attachees here.
32787 * text.cpp (TextBlock::OnPropertyChanged): need to notify on
32788 Actual Width/Height property changes, even if we don't recalc
32791 2007-07-01 Chris Toshok <toshok@ximian.com>
32793 * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
32794 guidelines here. need to chain up to FrameworkElement. fixes
32797 2007-07-01 Chris Toshok <toshok@ximian.com>
32799 * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
32800 (Polygon::OnPropertyChanged): same.
32801 (Path::OnPropertyChanged): same.
32802 (Shape::OnPropertyChanged): same.
32803 (Rectangle::OnPropertyChanged): same.
32805 * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
32807 (PathGeometry::OnPropertyChanged): same.
32808 (PathFigure::OnPropertyChanged): same.
32810 * brush.cpp (Brush::OnPropertyChanged): use the recommended
32812 (SolidColorBrush::OnPropertyChanged): same.
32813 (GradientBrush::OnPropertyChanged): same.
32814 (LinearGradientBrush::OnPropertyChanged): same.
32815 (RadialGradientBrush::OnPropertyChanged): new method.
32818 * brush.h: add RadialGradientBrush::OnPropertyChanged.
32820 * animation.cpp (animation_init): mark the storyboard TargetName
32821 and TargetProperty properties as attached.
32823 * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
32825 (Run::OnPropertyChanged): same.
32826 (Inline::OnSubPropertyChanged): add to handle the inline's
32827 foreground brush changing.
32829 * text.h: add Inline::OnSubPropertyChanged.
32831 * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
32832 background brush, and invalidate whenever it changes.
32834 2007-06-30 Chris Toshok <toshok@ximian.com>
32836 * shape.cpp (Shape::OnPropertyChanged): when need to update our
32837 bounding rectangle when a number of the stroke properties change.
32838 Also update them when the stroke itself is changed.
32840 2007-06-29 Chris Toshok <toshok@ximian.com>
32842 * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
32843 we need it for the foreground property. Make this explicit.
32844 also, add an OnSubPropertyChanged method for Glyphs, to handle the
32847 2007-06-29 Chris Toshok <toshok@ximian.com>
32849 * uielement.cpp (UIElement::UpdateBounds): oops. really only do
32850 that invalidate if the flag is true.
32852 2007-06-29 Chris Toshok <toshok@ximian.com>
32854 * text.cpp: Do CalcActualWidtHeight on any property that might
32855 cause a change. This is going to be a performance hit, but we
32856 need to take this step backward to get things working with the new
32857 ComputeBounds stuff. we'll need to reoptimize this so that it
32858 still works. Make sure to listen to OnCollectionChanged so we'll
32859 update our bounds (and recompute our actual width/height) on
32860 Inlines collection changes.
32862 * text.h: remove OnSubPropertyChanged (since it's not used.) Add
32863 OnCollectionChanged.
32865 2007-06-29 Chris Toshok <toshok@ximian.com>
32867 * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
32868 can actually read it, and notify attachees of our property
32869 changes. this makes ZIndex setting resort the parent panels list.
32871 * uielement.h: add an arg to UpdateBounds (a bool that defaults to
32872 false) to force an invalidation of the new bounds.
32874 2007-06-29 Chris Toshok <toshok@ximian.com>
32876 * panel.h, panel.cpp: okay, i'm stupid. it's not
32877 OnChildPropertyChanged either. it's OnCollectionChanged. we
32878 seriously need to clean this stuff up.
32880 2007-06-29 Chris Toshok <toshok@ximian.com>
32882 * panel.h, panel.cpp: child ZIndex property changes are reflected
32883 via OnChildPropertyChanged, not OnSubPropertyChanged.
32885 2007-06-28 Chris Toshok <toshok@ximian.com>
32887 * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
32889 * collection.cpp (VisualCollectoin::Clear): update the panel's
32890 bounds after the clear so we redraw everything.
32892 2007-06-27 Chris Toshok <toshok@ximian.com>
32894 * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
32895 instead. Also, rename getbounds to ComputeBounds(), and add a new
32896 GetBounds which returns the bounding rectangle.
32898 * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
32899 Simplify it a bit by using Rect's instead of the 4 doubles. Note
32900 that the calls to item->GetBounds do *not* cause item's bounds to
32902 (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
32903 child when its Left/Top properties change.
32904 (Canvas::HandleMotion): use Rect.PointInside to clean up the
32906 (Canvas::HandleButton): same.
32907 (Canvas::Render): remove the local "item_rect" and just use the
32910 * uielement.cpp (UIElement::UpdateBounds): remember the old
32911 bounds, compute the new bounds, and (if they're different)
32912 invalidate both and chain up to the parent's UpdateBounds method.
32913 (UIElement::UIElement): init the bounds.
32914 (UIElement::OnPropertyChanged): when switch away from a lot of the
32915 FullInvalidate calls. If the clip or OpacityMask is changed, just
32916 Invalidate. If the RenderTransform or RenderTransformOrigin is
32917 changed, called UpdateTransform.
32918 (UIElement::UpdateTransform): all UpdateBounds, since it's
32919 uncommon that our transform will change without our bounds
32921 (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
32922 but again switch away from FullInvalidate to other more targeted
32923 methods. If the transform properties change, call
32924 UpdateTransform, for clip and OpacityMask just call Invalidate.
32925 (UIElement::Invalidate): add a Rect taking one that just
32926 invalidates the rect, and make the default variety call it with
32928 (UIElement::ComputeBounds): rename GetBounds().
32930 * shape.cpp (ComputeBounds): don't use GetSurface. use a
32931 measuring cairo context.
32932 (Shape::OnPropertyChanged): if the Stretch property changed,
32933 UpdateBounds. also, change from FullInvalidate to just Invalidate
32934 for everything. Remove the UpdateTransform call as that gets
32935 handled by UIElement::OnPropetyChanged.
32936 (Rectangle::OnPropertyChanged): we only need to invalidate on a
32938 (Polygon::OnPropertyChanged): if the Points property changes we
32939 need to UpdateBounds and force an Invalidate. otherwise, just
32940 Invalidate. no need for FullInvalidate always.
32941 (Polygon::OnCollectionChanged): new method.
32942 UpdateBounds+Invalidate to catch changes to the points collection.
32943 (Polyline::OnPropertyChanged): analogous changes as were made to
32944 Polygon::OnPropertyChanged.
32945 (Polyline::OnCollectionChanged): same as
32946 Polygon::OnCollectionChanged.
32948 * text.cpp (TextBlock::TextBlock): move the SetValue call to the
32949 end, past all the initialization of things that might be needed in
32950 ComputeBounds, which gets called.
32951 (TextBlock::ComputeBounds): don't use GetSurface. use a measuring
32953 (TextBlock::CalcActualWidthHeight): use a measuring context here.
32954 (TextBlock::OnPropertyChanged): remove unnecessary call to
32955 FrameworkElement::OnPropertyChanged from the end of the method.
32956 (Glyphs::ComputeBounds): return Rect (0,0,0,0).
32958 * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
32959 use a measuring context.
32960 (Image::ComputeBounds): same.
32961 (OnPropertyChanged): just Invalidate here, no need for
32963 (DownloaderEvent): just Invalidate here, not FullInvalidate.
32965 * frameworkelement.cpp (FrameworkElement::InsideObject): use
32968 * control.cpp (Control::GetBounds): use a Rect here.
32969 (Control::ComputeBounds): forward on to the real_object.
32971 * collection.cpp (VisualCollection::VisualUpdate): when adding an
32972 element, we need to force its invalidation, but not the parent's.
32973 we just update the parent's bounds and UpdateBounds will do the
32974 invalidating if it needs to.
32976 * runtime.cpp (surface_attach): we don't need to do a full
32977 invalidate. just update the bounds of the toplevel (which sets
32978 the width and height to the widget's) and force an invalidate
32979 (just in case the user set the width/height to exactly the same
32980 thing before attaching).
32981 (surface_size_allocate): same thing here - no need for
32982 FullInvalidate. Just update the bounds.
32983 (measuring_context_create): create a tiny surface and a cairo_t
32984 for use in measuring things.
32985 (measuring_context_destroy): destroy the surface and cairo_t.
32987 * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
32990 2007-06-28 Miguel de Icaza <miguel@novell.com>
32992 * runtime.cpp (expose_event_callback): Introduce a new
32993 "transparent" field in the Surface. If set, we clear the
32994 region with a transparent region.
32996 2007-06-27 Miguel de Icaza <miguel@novell.com>
32998 * runtime.cpp: Event handlers will work with or without GdkWindows
32999 on the GtkWindows in preparation to support Larry later.
33001 Paint the surface with alpha transparency for now, this breaks the
33002 F-Spot embedding but will be fixed later when we can paint at an
33003 offset, wonder if this will affect performance for now.
33005 Call gtk_event_box_set_visible_window () with TRUE, so that we
33006 have a window, for now we require this to get the events working
33009 * canvas.cpp: Drop the translate transform on the topmost canvas
33010 as that was breaking all the code that depended on the inverse
33011 matrix transform to work for doing coordinate mapping based on the
33014 Instead we need to draw the cairo context at the given offset
33015 in the repaint routine. This is left as an excercise for Larry.
33017 Tests to validate that the mouse input is working:
33019 * test/demo.exe: enter/leave
33021 * silverlight airlines
33022 * LunarEclipse designer.
33024 * value.cpp (FreeValue): New method that does the actual releasing
33025 of the value. We do this here so the managed code can release
33026 things in the same way.
33028 (value_free_value): helper method.
33030 2007-06-27 Chris Toshok <toshok@ximian.com>
33032 * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
33033 calls to RaiseAccumulatedEvents.
33035 2007-06-27 Chris Toshok <toshok@ximian.com>
33037 * clock.cpp (get_now): turns out we really do want this extra *10
33038 in there, so that it matches up with mono's TimeSpan.Tick values.
33040 2007-06-27 Chris Toshok <toshok@ximian.com>
33042 * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
33043 take part in bounds computation.
33044 (Canvas::HandleButton): !Visible elements don't take part in hit
33046 (Canvas::HandleMotion): same here.
33048 2007-06-27 Jackson Harper <jackson@ximian.com>
33050 * xaml.cpp: Use Type to lookup the property owner, because it
33051 might be a "ghost" type that the xaml parser can't lookup.
33053 2007-06-27 Miguel de Icaza <miguel@novell.com>
33055 * control.cpp: When handling events, we also need to pass the
33056 event notification to the control, not only to the "real_object"
33057 that we are proxying for. This is what cause the calendar to
33060 * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
33061 the canvas, instead use the point at (0,0) and the width, height
33062 with its absolute transformation.
33064 Otherwise canvases with children would end up with
33065 (0,0,0,0) and when compounded would extend the bounding box of
33066 containing ones to include this region even when not needed.
33068 2007-06-26 Chris Toshok <toshok@ximian.com>
33070 * uielement.h: add virtual GetSurface() method.
33072 * uielement.cpp: implement UIElement::GetSurface to just chain up
33073 to the parent element if we have one, and return NULL otherwise.
33074 Also, make item_get_surface call this method. removes the
33075 dependency on canvas.h from this file.
33077 * canvas.h: we override UIElement::GetSurface ()
33079 * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
33080 return our surface. otherwise call our base class's GetSurface.
33082 * media.h: rename Image::GetSurface here to GetCairoSurface to
33083 avoid name collision.
33085 * brush.cpp, media.cpp: track media.h change.
33087 2007-06-26 Miguel de Icaza <miguel@novell.com>
33089 * collection.h: Change of course. The actual public interface
33090 implements IList<T> and ICollection<T> not IList nor ICollection
33091 which means that Add does not need to return an index, and Remove
33092 must return whether it actually removed the object.
33094 * collection.h (Add): Make this method return the index of the
33095 object just created, so we can implement int IList.Add(...).
33097 Removed all the empty Add/Remove methods from collections that
33098 were not doing anything interesting with them, the remaining
33099 chunks of old hacks.
33101 * (SetVal): This method is used to replace a value at a given
33102 index with another one. For the C# IList.this [int] indexer.
33104 2007-06-26 Chris Toshok <toshok@ximian.com>
33106 * clock.cpp: make a copy of the child clocks lists before
33107 traversing them calling callbacks that could result in the lists
33110 2007-06-26 Chris Toshok <toshok@ximian.com>
33112 * dependencyobject.h: add OnCollectionChanged to allow
33113 propertychange notifications from elements in collections to
33114 bubble up to their parent.
33116 * collection.h: make the closure a DependencyObject*, just to be
33117 explicit. also, add OnSubPropertyChanged to Collection so we can
33118 generate OnCollectionChanged notifications.
33120 * collection.cpp: hook things up on elements in collections, and
33121 generate proper notifications from the collection to its closure.
33123 * enums.h: add CollectionChangeType for use in
33124 OnCollectionChanged.
33126 * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
33127 collection notification stuff to bubble changes up the hierarchy.
33129 2007-06-26 Jeffrey Stedfast <fejj@novell.com>
33131 * list.cpp (Replace): Added.
33133 * dependencyobject.cpp (dependency_object_get_value_no_default):
33134 New binding function.
33135 (dependency_object_get_object_type): Renamed from get_kind() which
33136 didn't mirror the native API at all.
33138 2007-06-26 Sebastien Pouliot <sebastien@ximian.com>
33140 * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
33141 * shape.cpp: Remove debugging output.
33143 2007-06-26 Chris Toshok <toshok@ximian.com>
33145 * uielement.h: change render/dorender to take a cairo_t* instead
33148 * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
33149 uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
33150 media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
33153 2007-06-25 Jeffrey Stedfast <fejj@gnome.org>
33155 * brush.cpp (LinearGradientBrush::SetupBrush): Use
33156 uielement->get_size_for_brush() because the framework width/height
33159 * text.cpp: Implement text wrapping and clipping to Width/Height
33160 bounds if specified.
33162 2007-06-25 Miguel de Icaza <miguel@novell.com>
33164 * runtime.cpp: Cope with the fact that we are now windowless and
33165 we will be sharing the parent's window. Fixes mouse events.
33167 * collection.cpp (collection_get_value_at, collection_count): Add
33170 2007-06-25 Jeffrey Stedfast <fejj@novell.com>
33174 * text.cpp: Rewritten to use the new MangoRenderer and
33175 MangoAttrForeground classes.
33177 * mango.cpp: New source file implementing a PangoRenderer and
33178 providing a new PangoAttribute for brushes.
33180 2007-06-25 Chris Toshok <toshok@ximian.com>
33182 * runtime.h: add decl for Panel::OnSubPropertyChanged.
33184 * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
33185 zIndex by invalidating the item's rectangle.
33186 (UIElement::OnSubPropertyChanged): add braces around all the if
33187 blocks for consistency.
33188 (Panel::OnSubPropertyChanged): if a child changes its z index we
33189 need to resort our visual collection.
33190 (Canvas::render): loop over the z sorted list of children instead
33191 of the default collection list.
33192 (item_init): just to be anal, cast the Zindex default value to
33195 x2007-06-25 Chris Toshok <toshok@ximian.com>
33197 * collection.cpp: keep a z-sorted list in VisualCollection,
33198 adding/removing elements from it when needed, and clearing it when
33199 the collection is cleared.
33201 * collection.h: add a virtual clear method so VisualCollection can
33202 override it. Also, add a z_sorted_list member to
33203 VisualCollection, so we can deal with the ZIndices of children.
33205 2007-06-24 Alan McGovern <amcgovern@novell.com>
33207 * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
33209 2007-06-24 Larry Ewing <lewing@novell.com>
33211 * runtime.cpp: rework size allocation and make toplevel Canvas
33212 items read the allocation->x and allocation->y offsets from the
33213 surface widget when computing their position.
33215 2007-06-24 Chris Toshok <toshok@ximian.com>
33217 * Makefile.am (libmooninclude_HEADERS): add collection.h
33218 (libmoon_la_SOURCES): add collection.cpp
33220 * collection.h, collection.cpp: new files. split out Collection
33221 and all the collection-related code from runtime.h/runtime.cpp.
33222 arguably the collections specific to certain elements should exist
33223 completely in those .cpp/.h files, instead of here.
33225 * runtime.h, runtime.cpp: remove collection stuff.
33227 * clock.h, animation.h, transform.h: #include collection.h
33229 * value.h, value.h.in: #include <string.h> here so we can stop
33230 requiring it for everyone else. really, though we should be using
33231 g_strcmp or something that's already pulled in from glib.
33233 2007-06-24 Chris Toshok <toshok@ximian.com>
33235 * Makefile.am (libmoon_la_SOURCES): add array.cpp
33236 (libmooninclude_HEADERS): add array.h
33238 * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
33240 * array.h, array.cpp: new files, split them out from
33243 2007-06-24 Chris Toshok <toshok@ximian.com>
33245 * Makefile.am (libmooninclude_HEADERS): add xaml.h
33247 * xaml.h: split this out from...
33249 * runtime.h: ... here.
33251 * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
33253 2007-06-24 Chris Toshok <toshok@ximian.com>
33255 * Makefile.am (libmooninclude_HEADERS): add control.h
33257 * control.h: split out class Control stuff...
33259 * runtime.h: .. from here.
33261 * runtime.cpp: #include control.h
33263 * control.cpp: same.
33265 2007-06-24 Chris Toshok <toshok@ximian.com>
33267 * runtime.h: add OnLoaded methods to UIElement, Panel, and
33270 * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
33272 (VisualCollection::Add): only invoke OnLoaded on the item if the
33273 closure (the parent of the collection) has been loaded.
33274 (VisualCollection::Insert): same.
33275 (Panel::OnLoaded): call OnLoaded on all our children, then chain
33277 (surface_attach): call canvas->OnLoaded instead of
33278 emit_loaded_events(canvas). also, don't use a special IS_CANVAS
33279 flag - just use the type system.
33280 (item_get_surface): get rid of the IS_CANVAS flag and just use the
33283 * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
33284 the real object before chaining up.
33286 2007-06-24 Larry Ewing <lewing@novell.com>
33288 * runtime.cpp: disable transparent surfaces while fixing the
33289 drawing offset problem.
33291 2007-06-24 Larry Ewing <lewing@novell.com>
33293 * brush.cpp: use cairo_create_similar rather than using an image
33296 2007-06-24 Chris Toshok <toshok@ximian.com>
33298 * runtime.cpp (VisualCollection::Add): only emit Loaded if the
33299 tree we're adding it to has already been loaded.
33301 2007-06-24 Larry Ewing <lewing@novell.com>
33303 * demo.cpp: add -trans flag to demo to make the toplevel transparent.
33305 2007-06-24 Larry Ewing <lewing@novell.com>
33307 * runtime.cpp: add comments to the new gtk functions.
33309 * runtime.h: expose surface_paint.
33311 2007-06-23 Miguel de Icaza <miguel@novell.com>
33313 * runtime.cpp: Since unrealize does not seem to be called when our
33314 widget is destroyed by Mozilla, we need to cleanup on destroy the
33315 tick event. This takes care of one of the plugin crashers.
33317 There are still others that I have to find out, I added some
33318 debugging prints for now.
33320 2007-06-24 Larry Ewing <lewing@novell.com>
33322 * runtime.cpp: derive from EventBox not drawing area so that we
33323 can use it as a quick method of switching back and forth between
33324 transparent and not. Add a method to let external code paint to a
33327 2007-06-23 Jeffrey Stedfast <fejj@gnome.org>
33329 * text.cpp (SetValue): Overridden to enforce Text strings not
33330 preserving any leading nor trailing whitespace (as defined in the
33333 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
33335 * xaml.cpp (matrix_value_from_str): use delete[] to free the array
33336 of doubles instead of g_free() as it was allocated with new, not
33339 * text.cpp (Layout): D'oh, make sure to always init text/block
33340 width/height values. This fixes VideoBrush again.
33342 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
33344 * mplayer.cpp: Initialize 'opened' state variable.
33346 * text.cpp (GetValue): Override DependencyObject::GetValue() so
33347 that we can special-case getting TextBlock::Actual[Width,Height]
33348 properties (this allows us to prolong re-calculating these values
33349 until after the user has set the values he's going to set -
33350 re-calculating on ever property change is too expensive.
33352 * runtime.h: Make DependencyObject::GetValue() virtual.
33354 2007-06-22 Jeffrey Stedfast <fejj@gnome.org>
33356 * text.cpp: Stubbed out the required virtual methods for Glyphs
33357 and attempted to make ActualWidth and ActualHeight calculated
33358 immediately in an attempt to get DrPopper working better.
33360 2007-06-22 Sebastien Pouliot <sebastien@ximian.com>
33362 * shape.cpp: Small hack to avoid calling Draw 2 times during render.
33364 2007-06-22 Chris Toshok <toshok@ximian.com>
33366 * xaml.cpp (key_spline_from_str): free up the point arrays from
33367 point_array_from_str after we use them.
33368 (xaml_set_property_from_str): same.
33370 2007-06-22 Chris Toshok <toshok@ximian.com>
33372 * value.cpp (Value): the copy ctor is definitely corrupting memory
33373 in the MATRIX case - we need to allocate the destination matrix.
33375 2007-06-21 Chris Toshok <toshok@ximian.com>
33377 * Makefile.am: not that anyone should be installing this yet,
33378 install the headers to $(includedir)/libmoon.
33380 2007-06-21 Jeffrey Stedfast <fejj@novell.com>
33382 * text.cpp: Reworked text layout/rendering logic - we now cache
33383 width/height info for each text string as well as the overall
33384 block width/height. This info is then used to align text strings
33385 on each line along the bottom edge (rather than along the top
33386 edge) of the line of text.
33388 * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
33390 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
33392 * stylus.h|cpp: Add InkPresenter.
33393 * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
33394 * value.h, type.h|cpp: Updated.
33396 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
33398 * animation.cpp: Register *KeyFrame::Value properties as nullable.
33399 * clock.cpp: Register TimelineMarker properties.
33401 2007-06-21 Jackson Harper <jackson@ximian.com>
33403 * xaml.cpp: When setting the x:Name also set the name property.
33405 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
33407 * stylus.cpp|h: Added Stroke and DrawingAttributes.
33408 * runtime.h: All collections can now implement GetElementType.
33409 * value.h, type.h, type.cpp: Updated.
33411 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
33413 * stylus.cpp|h: Added.
33414 * runtime.cpp|h: Define and call stylus_init.
33415 * Makefile.am: Add stylus.cpp|h.
33416 * value.h, type.h, type.cpp: Updated.
33418 2007-06-21 Jackson Harper <jackson@ximian.com>
33420 * xaml.cpp: Add a global set of callbacks, so that all of the
33421 custom callbacks for a given parsing instance use the same
33422 methods. This needs to be encapsulated properly, but for now is
33425 2007-06-20 Chris Toshok <toshok@ximian.com>
33427 * animation.cpp, animation.h: KeyFrameCollection overrides
33428 Collection::Clear to clear its sorted list.
33430 * runtime.cpp, runtime.h: add overrideable Collection::Clear
33431 method, and move collection_clear's body into it.
33433 2007-06-21 Jackson Harper <jackson@ximian.com>
33435 * runtime.cpp|h: Don't return false on single element collections
33438 2007-06-21 Jeffrey Stedfast <fejj@gnome.org>
33440 * text.cpp: Use absolute font sizes, makes the fonts not so huge.
33442 2007-06-20 Jackson Harper <jackson@ximian.com>
33444 * xaml.cpp: Set namecopes earlier, and make sure to copy the
33445 namescope when we recreate a class using x:Class.
33446 - When we use x:Class reparse the element's attributes, so it can
33447 hook up to events and set properties.
33448 * runtime.cpp|h: When the Name property is set, register it with
33449 the proper NameScope.
33451 2007-06-20 Chris Toshok <toshok@ximian.com>
33453 * runtime.cpp, runtime.h: add rudimentary Visibility support. we
33454 only support Visible/Hidden really, and treat Collapsed as Hidden.
33456 * xaml.cpp (enum_from_str): use g_strcasecmp here.
33458 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
33460 * shape.cpp|h: Implement caching of Path (this could be extended to
33462 * geometry.cpp|h: Notify on changes.
33464 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
33466 * xaml.cpp: Don't allocate (and free) a copy of the PML before
33467 calling geometry_from_str.
33469 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
33471 * shape.cpp: Fix some Stretch modes for paths. This can get very
33472 expansive, next step is to cache the cairo_path_t* in the Path and
33473 recompute it only on changes.
33475 2007-06-20 Chris Toshok <toshok@ximian.com>
33477 * xaml.cpp (is_valid_event_name): new function.
33478 (dependency_object_hookup_event): only allow valid events to be
33481 2007-06-20 Jackson Harper <jackson@ximian.com>
33483 * runtime.cpp|h: New method for finding an objects namescope.
33484 - Call an objects loaded event when it is added to a Collection
33485 - Some bits of namescope merging, these functions aren't called
33488 2007-06-20 Chris Toshok <toshok@ximian.com>
33490 * xaml.cpp (dependency_object_hookup_event): we need more than
33491 just the Loaded event.
33493 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
33495 * text.cpp (Run): Don't set default font values here... we need
33496 them to be unset if they aren't explicitly set by the user so that
33497 we can inherit font properties from our parent TextBlock.
33498 (Draw): Fixed to make Runs inherit unset font properties from the
33499 TextBlock at render-time. Also fixed to make sure we have a
33500 foreground brush to draw with... if unset, use the default brush.
33502 2007-06-20 Chris Toshok <toshok@ximian.com>
33504 * runtime.cpp (UIElement::render): make this print the classname
33505 like UIElement::getbounds() does.
33507 * runtime.h, runtime.cpp: make control_initialize_from_xaml take
33508 the xaml parser custom element callbacks.
33510 2007-06-20 Chris Toshok <toshok@ximian.com>
33512 * runtime.cpp (runtime_shutdown): set inited to false, since we
33513 want people to be able to call runtime_init again after this.
33515 * type.cpp.in (Type::RegisterType): allocate types if we need to.
33516 (Type::Shutdown): free types.
33518 * type.h.in (private): make the types array dynamically allocated.
33520 * type.h, type.cpp: sync
33522 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
33524 * text.cpp (TextBlock): Need to actually set ActualWidth and
33525 ActualHeight values.
33527 2007-06-20 Chris Toshok <toshok@ximian.com>
33529 * clock.cpp (Clock::Tick): if we hit our natural duration but our
33530 duration is Automatic, go to Fill mode, since we may have child
33531 clocks that started after us and need a chance to run their last
33534 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
33536 * runtime.cpp (collection_iterator_move_next): If we can't iterate
33537 to the next item, don't set current = NULL.
33538 (dependency_object_get_name): New function needed for the binding.
33540 2007-06-20 Larry Ewing <lewing@novell.com>
33542 * runtime.cpp: use gdk_cairo helper functions and clip to the
33543 expose event region.
33545 * runtime.h: remove unused members.
33547 * media.cpp: use cairo_get_target rather than keeping track of
33550 2007-06-20 Jackson Harper <jackson@ximian.com>
33552 * xaml.cpp/runtime.h: Add one more callback, this one will hookup
33553 events to methods. So things like Loaded=CanvasLoaded will work.
33557 2007-06-20 Jackson Harper <jackson@ximian.com>
33559 * xaml.cpp: More verbose debug output with namespace lookup
33561 - Map in the default namespaces if we are unable to lookup the
33562 proper namespace name.
33564 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
33566 * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
33567 or the mouse moving won't work.
33569 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
33571 * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
33572 assigned, in that case we get the extents of the fill.
33574 2007-06-20 Chris Toshok <toshok@ximian.com>
33576 * animation.cpp: um.. "oops".
33578 * xaml.cpp (xaml_init): enable the parsing of the color/point
33581 2007-06-20 Chris Toshok <toshok@ximian.com>
33583 * animation.cpp: guard against division by zero in the double
33584 keyframe GetCurrentValue method. I'll fix this method up some
33585 more and then report it to the other animation types.
33587 Also, add the Spline(Color,Point)KeyFrames.
33589 * clock.cpp, clock.h: fixes to get all this working again while
33590 still supporting the needed things from the last patch (like
33593 * transform.cpp (GetTransform): i hate like hell to have to do
33594 this, but if we scale by 0.0 cairo can't invert the matrix and
33595 then everything goes belly up. 0.00002 is the smallest number I
33596 found (0.00001 doesn't work, for instance) where cairo doesn't
33597 complain about the inverse stuff.
33599 * media.cpp (media_element_set_buffering_time): we have to use the
33600 hacky Value ctor here.
33601 (media_element_set_position): and here.
33603 * runtime.cpp (emit_loaded_events): new function to walk the tree
33604 and emit loaded events.
33605 (surface_attach): call emit_loaded_events here - the docs specify
33606 that Loaded is emitted after it's associated with the host but
33607 before it's rendered.
33608 (Canvas::render): don't emit Loaded here.
33609 (runtime_init): output a nice message here if you run cairo
33610 against a verion of cairo that you shouldn't be using.
33612 * type.h, type.cpp, value.h: resync.
33614 2007-06-20 Jackson Harper <jackson@ximian.com>
33616 * xaml.cpp: Improve the way we handle x:Class attributes failing
33619 2007-06-20 Jackson Harper <jackson@ximian.com>
33621 * xaml.cpp: Hookup attached properties in the property_from_str
33624 2007-06-19 Chris Toshok <toshok@ximian.com>
33626 * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
33627 (media_element_get_position): same.
33628 (media_init): mark BufferingTime and Position as TimeSpan's.
33630 2007-06-19 Chris Toshok <toshok@ximian.com>
33632 * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
33633 but this was necessary to get BeginTime's to be supported. It
33634 reintroduces the "popping" in the surface demo, though, and
33635 honestly I'm unsure how we can ever guarantee that enough ticks
33636 will have occured to be sure we won't see the initial state of the
33639 * animation.cpp: track clock api changes.
33641 * runtime.h: decl for FramworkElement::OnPropertyChanged.
33643 * runtime.cpp (EventObject::Emit): make a copy of the list before
33644 we start emitting, to keep us crashing if the list is modified
33645 while we're traversing it.
33646 (FramworkElement::OnPropertyChanged): invalidate on width/height
33649 * xaml.cpp: when parsing a TIMESPAN property, use
33650 timespan_from_str. This fixes the parsing of BeginTime
33653 * type.cpp.in: register TIMESPAN.
33655 * value.h.in: add a AsTimeSpan method, and special hacky
33656 constructor so the parser can construct a value of type TIMESPAN
33657 (which is problematic since it's typedef'ed to gint64.) Move the
33658 TimeSpan typedef here.
33660 * value.cpp: add the impl for that hacky ctor.
33662 * type.h.in: add a TIMESPAN kind.
33664 * type.h, value.h, type.cpp: sync.
33666 2007-06-19 Jackson Harper <jackson@ximian.com>
33668 * xaml.cpp: we need to new the points.
33670 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33672 * geometry.cpp: Add safety to ensure the number of points are
33673 valid before iterating on them.
33675 2007-06-19 Jackson Harper <jackson@ximian.com>
33677 * xaml.cpp: make sure to get all the points.
33678 - sneak peek at the exciting new attached property setting code.
33679 - improve error message
33680 - dont step off the end of the string when the trailing characters
33683 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
33685 * *.cpp: Updated to use the new List type.
33687 * runtime.cpp|h (Collection): Modified to use List instead of
33688 GList which made some code simpler, we get to take advantage of
33691 * demo.cpp (main): Removed surface_destroy() and
33692 runtime_shutdown() out of the delete_event callback (gtk timeouts
33693 could still fire after the gtk_main_quit() call it seems).
33695 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33697 * runtime.cpp: Enforce UIElement::ClipProperty when rendering
33700 2007-06-19 Jackson Harper <jackson@ximian.com>
33702 * xaml.cpp: Content properties can be inherited.
33704 2007-06-19 Jackson Harper <jackson@ximian.com>
33706 * xaml.cpp: Make sure that we have a previous figure.
33708 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33710 * geometry.cpp|h: Revert previous changes. That didn't work well
33711 with groups/collections.
33712 * shape.cpp: Path::Draw now process the path (find and susbtract
33713 origin) when Stretch requires it.
33715 2007-06-19 Jackson Harper <jackson@ximian.com>
33717 * xaml.cpp: Set the namescope right away, so FindName will work in
33718 element constructors.
33720 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
33722 * animation.cpp: Switched to use List instead of GList.
33724 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33726 * geometry.cpp|h: Change API so the Strech value is propagated from
33727 the shape to all the geometry figures. Fixed Stretch for LineGeometry,
33728 EllipseGeometry and RectangleGeometry.
33729 * shape.cpp: Path::Draw now supply the Stretch property value to
33730 all Geometry objects drawing methods.
33732 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33734 * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
33735 the caller responsbility to do so, if required (e.g. it isn't for
33738 2007-06-19 Jackson Harper <jackson@ximian.com>
33740 * xaml.cpp: Implement all the optional points on path markup.
33742 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33744 * shape.cpp: Fix Stretch for Polyline and Polygon.
33746 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
33748 * xaml.cpp: Updated to use a real linked list implementation.. for
33749 added uberness. Also reduces memory leakage.
33751 * mplayer.cpp: Stubbed out a few more things and can now return
33752 the video duration.
33754 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33756 * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
33757 property to fill inside Rectangle and Ellipse ctors.
33759 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
33761 * runtime.cpp (Insert): Make this use SharedAdd too, which I
33762 presume was the whole point.
33764 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33766 * shape.cpp: Fix Strech support for Rectangle (it behave more like
33767 Ellipse but that shows only with non squares).
33769 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
33771 * mplayer.cpp (audio_loop): Fixed muting to advance the correct
33772 number of pts and not hang forever in a g_usleep() (gah, the timer
33773 was a huge negative value).
33775 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33777 * clock.h: Added TimelineMarker.
33778 * type.h, type.cpp, value.h: Updated.
33780 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33782 * shape.h: Fix filling for Polyline. MS supports filling polylines,
33783 even unclosed ones.
33785 2007-06-19 Chris Toshok <toshok@ximian.com>
33787 * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
33788 s->cairo_xlib after recreating the xlib stuff. avoids a crash
33789 when resizing surfaces.
33791 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33793 * shape.cpp: Add Strech support for Ellipse.
33795 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33797 * shape.cpp: Add Strech support for Rectangle (only None is different).
33798 Add comments to Line as Stretch doesn't apply for this Shape.
33800 2007-06-19 Miguel de Icaza <miguel@novell.com>
33802 * runtime.cpp (Collection): Add new Insert method, and update all
33803 the callers that overwrote it. We probably need to cleanup
33804 everything that is doing virtual overrides and is a no-op
33806 2007-06-19 Chris Toshok <toshok@ximian.com>
33808 * runtime.cpp (clear_drawing_area): this method doesn't need to
33809 clean up the xlib cairo context/surface and the pixmap.
33811 There are two possibilities:
33813 1) the drawing area has been realized, which means we have xlib
33814 surface/context + pixmap. We're guaranteed to hit
33815 unrealized_callback before this method is called, so they will
33816 have already been freed.
33818 2) the drawing area has not been realized, which means we have no
33819 xlib surface/context + pixmap, and this method doesn't need to do
33822 2007-06-19 Jackson Harper <jackson@ximian.com>
33824 * runtime.h/shape.cpp: Fix typo.
33826 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
33828 * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
33829 implementation and if one of our properties changed, notify our
33831 (Inline::OnPropertyChanged): Same.
33832 (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
33833 (TextBlock::Draw): Use our foreground brush directly and the same
33834 for run's foreground brush.
33836 2007-06-19 Miguel de Icaza <miguel@novell.com>
33838 * runtime.cpp: Implement collection iterators.
33840 2007-06-19 Chris Toshok <toshok@ximian.com>
33842 * xaml.cpp (timespan_from_str): don't walk off the end of the
33845 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33847 * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
33849 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33851 * animation.h|cpp: Add *_key_frame_new.
33853 2007-06-19 Jackson Harper <jackson@ximian.com>
33855 * xaml.cpp\runtime.h: Add a public function for setting
33856 properties, from strings. Basically a copy and paste of my
33857 set_attributes code. Eventually I should be able to merge the
33858 two, but they use different name lookup mechanisms right now.
33860 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
33862 * animation.cpp (Remove): Remove the KeyFrame from the sorted list
33863 before removing it from the collection (since it may be freed by
33864 Collection::Remove).
33866 2007-06-19 Miguel de Icaza <miguel@novell.com>
33868 * runtime.cpp: Add support for notifying the consumer that the
33869 surface has resized.
33871 Add support for resizing objects.
33873 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
33875 * brush.cpp (~VideoBrush): We want to detach from the media
33876 element, not ourselves. Doh.
33878 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
33880 * shape.h: Update comments about which shapes needs, or not, to
33881 provide a getxformorigin method.
33883 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33885 * media.h|cpp: Add media_base_new.
33887 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33889 * value.cpp|h|in: Inline the non-DependencyObject
33890 As* functions as well.
33892 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33894 * typegen.cs: Removed some dead code.
33895 * value.cpp.in: Deleted, not needed anymore.
33896 * runtime.cpp, value.cpp, type.cpp.in: Moved
33897 implementation of Value and Type into their own files.
33898 * type.cpp: Updated.
33900 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33902 * type.h, type.h.in: Created, moved declaration of Type here.
33903 * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
33904 references. Move the Value::As* into the header.
33905 * typegen.cs: Updated to cope with Kind changes.
33907 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
33909 * runtime.cpp|h, value.h.in: Remove current nullable code,
33910 it's easier to store an is_nullable flag in the registered
33911 property, and store NULL values in the objects hashtable.
33912 * xaml.cpp: Revert unnecessary fixes.
33913 * value.h: Updated.
33915 2007-06-19 Chris Toshok <toshok@ximian.com>
33917 * runtime.h: get rid of the specialized surface callbacks for
33918 mouse events. we can dispatch them directly to the UIElements.
33919 Change the EventObject signatures to permit an event/call data as
33920 well as the closure. add the sender object for kicks while we're
33923 * runtime.cpp: dispatch element events through the
33924 DependencyObject's events object.
33926 * animation.h, animation.cpp: update signatures for event
33929 * control.cpp (handle_button): track signature change.
33933 2007-06-18 Chris Toshok <toshok@ximian.com>
33935 * clock.cpp (TimeManager::Tick): add a lot of timing foo.
33936 (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
33937 we switching to the stopped state and our progress is 1.0 (that
33938 is, if we've finished).
33940 * animation.h, animation.cpp (Storyboard::Begin): rather heavy
33941 handed (but bulletproof) approach to making Begin work on a
33942 storyboard that has run its course - destroy the clock hierarchy
33943 and recreate it. Also, add a handler for the ClockGroup's
33944 "Completed" event so we can reflect that back to managed land.
33946 * runtime.h: add C functions to add/remove handlers from the
33947 EventObject inside a dep object.
33949 2007-06-18 Jackson Harper <jackson@ximian.com>
33951 * xaml.cpp: Set text context properties from char data. This
33952 allows you to do things like <Run>Hi I am some text</Run>. As far
33953 as I can tell, Run is the only element that allows this.
33955 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
33957 * shape.cpp|h: Fix Line and Ellipse getxformorigin.
33959 2007-06-18 Jackson Harper <jackson@ximian.com>
33961 * xaml.cpp: Now implement the smooth beziers correctly, much
33962 thanks to spouliot for figuring out the formula to reflect control
33965 2007-06-18 Chris Toshok <toshok@ximian.com>
33967 * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
33968 what the timemanager should do on a given tick, and add some
33969 #defines/logic to calculate the gtk delay from the desired
33970 framerate. Set the desired framerate to 20fps.
33972 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
33974 Instead of attaching to Brush::ChangedProperty, connect to NULL.
33976 * media.cpp (render): If the width/height are 0.0, then use the
33977 video's natural width/height.
33978 (OnPropertyChanged): chain up.
33980 * shape.cpp (OnPropertyChanged): Always chain up to our parent.
33982 2007-06-18 Chris Toshok <toshok@ximian.com>
33984 * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
33985 fixes setting of nullable property values.
33987 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
33989 * runtime.cpp: Store NULL again in the property hashtable,
33990 but use the lookup_extended function to detect this and return
33991 a correct NULL value instead of the default value.
33993 2007-06-18 Chris Toshok <toshok@ximian.com>
33995 * runtime.cpp (RemoveHandler): more cleanups.
33997 2007-06-18 Chris Toshok <toshok@ximian.com>
33999 * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
34002 2007-06-18 Jackson Harper <jackson@ximian.com>
34004 * xaml.cpp: Implement path closing and ArcSegments.
34006 2007-06-18 Miguel de Icaza <miguel@novell.com>
34008 * runtime.cpp (SetValue): This looks painful, now
34009 DependencyObjects are stored inside the hash but they might
34010 contain a NULL. This seems bad.
34012 (Value): Do not delete null dependency objects.
34014 Remove this patch, and try demo.exe, enter/leave/enter, this
34015 crashes now, because the leave sets the fill to "null" and the
34016 enter then tries to access it
34018 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
34020 * brush.cpp: Do proper OnPropertyChanged proagation.
34021 (ImageBrush::OnPropertyChanged): Notify using the generic
34022 Brush::ChangedProperty.
34023 (VideoBrush::OnPropertyChanged): Same.
34024 (VideoBrush::OnSubPropertyChanged): Same.
34026 * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
34027 so we can listen for change notification.
34029 * runtime.cpp (UIElement): Same.
34032 * text.cpp (TextBlock): Same here (need to do it for Inlines too
34035 * media.cpp (media_base_new): Removed, you can't instantiate a
34037 (advance_frame): Optimization hack: don't invalidate if our
34039 (MediaElement::render): Respect opacity and stretch properties.
34041 2007-06-18 Jackson Harper <jackson@ximian.com>
34043 * xaml.cpp: We need to create new figures if we get a Move
34046 2007-06-18 Chris Toshok <toshok@ximian.com>
34048 * demo.cpp: use TimeManager::AddTickCall for the async file
34049 loading. This makes the image visible immediately for me, instead
34050 of requiring the animations be paused to see it.
34052 * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
34053 sorts to TimeManager. This way we can better control when the
34054 cross thread downloader calls happen, and keep them from affecting
34055 the frame rate, and also keep them from being starved by an
34056 overzealous demo.cpp.
34058 2007-06-18 Chris Toshok <toshok@ximian.com>
34060 * runtime.cpp (unrealized_callback): remove the render handler.
34061 (realized_callback): attach the render handler.
34062 (render_surface): a very simple render handler. We just force gtk
34063 to process all pending updates.
34065 * clock.cpp (TimeManager::Tick): as a temporary hack, have
34066 TimeManager emit the "render" event after every animation tick.
34067 We should add tuning to this method to achieve usable framerates
34068 without killing the cpu.
34070 * clock.h: make TimeManager subclass from EventObject so we can
34071 hook up to events on it.
34073 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34075 * shape.cpp: getbounds gets bad results if stroke (or fill) isn't
34076 called. We create a new path so the bounds, for an invisible object,
34079 2007-06-18 Chris Toshok <toshok@ximian.com>
34081 * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
34083 2007-06-18 Jackson Harper <jackson@ximian.com>
34085 * xaml.cpp: Fix smooth quadratic bezier's.
34087 2007-06-18 Chris Toshok <toshok@ximian.com>
34089 * media.cpp, media.h (Image::render): on our first rendering,
34090 convert to using an xlib surface to speed up future redraws.
34092 2007-06-18 Chris Toshok <toshok@ximian.com>
34094 * runtime.cpp (UIElement::dorender): add this, and make everything
34095 that calls ->render call ->dorender.
34097 * control.cpp (render): call dorender on the realobject.
34099 * runtime.h: add STARTTIMER/ENDTIMER macros, and add
34100 UIElement::dorender which can be used to wrap render calls with
34101 debug info (in this case timer info.)
34103 * clock.h: add prototype for get_now().
34105 * clock.cpp (get_now): make this public, so we can use it for
34108 2007-06-18 Jackson Harper <jackson@ximian.com>
34110 * xaml.cpp: Implement Path Geometry parsing.
34112 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
34114 * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
34115 MediaElement if we don't already have one.
34116 (VideoBrush::OnPropertyChanged): SourceName does not refer to a
34117 uri, instead SourceName refers to a MediaElement.
34119 * media.cpp: Implemented some more helper "setters", defaulted
34120 some more MediaElement property values to correct values, and
34121 implemented updating of both the CurrentState property and the
34124 * mplayer.cpp (Position): Implemented.
34126 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34128 * media.cpp: Close the path after rendering the image.
34129 * shape.cpp: Avoid the filling operation in calls to getbounds. Also
34130 open and close a path before drawing normal (square) rectangles.
34132 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34134 * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
34135 C-style methods to access Type and DependencyProperty fields.
34136 In Type::IsSubclassOf don't take into account nullability.
34137 * animation.cpp, clock.cpp: Register nullable properties as such.
34139 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34141 * media.h|cpp: Add media_base_new.
34143 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34145 * value.h.in: Make checked_get_subclass handle null values. Include the
34146 Kind::*Null* values in the C# Kind.cs, and change their values to fit
34148 * value.h: Updated.
34150 2007-06-18 Miguel de Icaza <miguel@novell.com>
34152 * media.cpp (DownloaderEvent): If the Width/Height have not been
34153 set explicitly, provide them from the images (demo works, but it
34154 takes a while, due to the idle handler being too busy to be
34157 * runtime.cpp (Canvas::render): Cope with rounding from floats to
34158 ints, add 2, fixes the droppings in the surface.
34160 Include some of my debugging helpers (you sprinkle
34161 draw_grid in key places to see whats going on, useful to debug the
34162 bounding boxes and visually inspect if things are right.
34164 * media.cpp (getbounds): use the framework width/height not the
34165 pixbuf image size, this shrinks the size of the bounding box.
34166 (getxformorigin): Use it here too.
34168 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34170 * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
34171 indicates if their use would be visible or not (e.g. opacity > 0.0).
34172 * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE).
34173 Don't Fill or Stroke if the brush is invisible (opacity == 0).
34175 2007-06-18 Marek Habersack <grendello@gmail.com>
34177 * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
34180 * ffvideo.cpp (ALIGN): as above.
34182 2007-06-18 Chris Toshok <toshok@ximian.com>
34184 * clock.cpp: simplify pausing and stopping a clock that has
34185 children by keeping track of the new state (the one the clock will
34186 take at the end of this tick). This is necessary because the
34187 parent clock doesn't actually stop until the end of the tick, so
34188 we still need to update child clocks after we've determined the
34189 parent clock should stop.
34191 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
34193 * runtime.cpp: properly remove items from the doubly-linked list.
34195 2007-06-18 Chris Toshok <toshok@ximian.com>
34197 * animation.cpp (AnimationStorage::~AnimationStorage): delete the
34199 (Storyboard::Begin): force a TimeManager tick after we've hooked
34200 up the clock, so that all the animations have proper values before
34201 the next render. Fixes the "popping" in the surface demo.
34203 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34205 * runtime.cpp: Changed DependencyObject::SetValue to never store
34206 a null value in the hashtable.
34208 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34210 * brush.cpp: Refactor the pattern creation to allow caching.
34211 * media.cpp|h: Add caching of cairo_pattern_t to Image.
34213 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
34215 * runtime.cpp: use motion hints for smoother motion event handling.
34217 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
34219 * text.cpp|h: Runs now cache their own PangoFontDescription and
34220 PangoLayouts as an optimzation (seems to be very slight for simple
34221 us-ascii text, but might help enormously for more complex
34222 languages). Also added some FIXME thoughts.
34224 2007-06-18 Everaldo Canuto <ecanuto@novell.com>
34226 * downloader.cpp: Add missing downloader_notify_finished.
34228 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34230 * downloader.cpp: Only set dummy downloader functions if they
34231 aren't already set.
34233 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34235 * runtime.cpp: Add a few null checks.
34236 * downloader.cpp: Add initial dummy downloader functions to get
34237 meaningful messages if the downloader functions aren't initialized.
34239 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34241 * typegen.cs: Special case a few things for DependencyObject,
34242 and make a few messages more informative.
34243 * runtime.h|cpp: Add a value_type field to Type, and a constructor
34244 to specify the value. Add a constructor to DependencyProperty that
34245 can specify default value and type (in the case the default value
34246 doesn't have the same type as the property). Changed
34247 DependencyObject::SetValue to never store a null value in the
34248 hashtable. In Value destructor check for null pointers in a few
34249 cases. Update all uses of Value.k to Value.GetKind.
34250 * type.cpp.in: Update to specify value_type information.
34251 * value.h.in: Implement nullable type handling in Value.
34252 * value.cpp, type.cpp, value.h: Updated.
34254 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
34256 * text.cpp (get_size_for_brush): Calculate width/height if they
34258 (Draw): Don't use the brush if we aren't going to render (this is
34259 needed so that we don't get into a recursive loop since we have to
34260 manually calculate width/height).
34262 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
34264 * text.cpp (get_size_for_brush): Implemented (since
34265 cairo_stroke_extents() won't work for us).
34267 * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
34268 (ImageBrush::SetupBrush): Same.
34270 * runtime.cpp (UIElement::get_size_for_brush): New method to get
34271 width/height needed by Brushes for scaling.
34273 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
34275 * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
34278 2007-06-17 Atsushi Enomoto <atsushi@ximian.com>
34280 * text.cpp : added text_block_set_font_source().
34282 2007-06-17 Miguel de Icaza <miguel@novell.com>
34284 * brush.cpp (brush_init): Create a BRUSH property called
34285 "FrameChange", it is internal and the sole use of it is so that
34286 upper layers that care about brush changes act on it by updating
34289 * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
34290 brushes only trigger an invalidate, there is no need to recompute
34293 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
34295 * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
34296 delete for a void pointer, it can only delete known class types.
34298 2007-06-17 Jackson Harper <jackson@ximian.com>
34300 * xaml.cpp: Implement x:Class, we can now load the Surface demo's
34301 XAML file, and it's custom Canvas class (things still don't work
34302 though because the custom canvas uses a downloader.)
34304 2007-06-17 Miguel de Icaza <miguel@novell.com>
34306 The surface rotate and translate controls should both work, and
34307 the enter/leave events are now correct.
34309 * runtime.cpp (UIElement::handle_motion, handle_button): Change
34310 the semantics to better match Silverlight. Now these methods
34311 should check if the mouse is inside their region before calling
34314 This is necessary because children of the canvas (and panel) are
34315 within the confines of the bounding box, but the canvas can be
34316 smaller than that. The canvas is a container whose boundaries
34317 are only used for paiting, children might be outside of these
34320 It is necessary in these cases to pass the events to all the
34321 children within the canvas bounding box and for each child to
34322 determine if the event was within its range.
34324 (inside_object): replaced the default implementation for
34325 FrameworkElements with a more performing version: instead of
34326 mapping the point and using cairo_in_stroke and in_fill operations
34327 on a rectangle with mapped coordinates, we map the coordinates and
34328 check against the rectangle.
34330 (Canvas::getbounds): if we are the topmost canvas, the boundaries
34331 are those from the Surface, not the ones that include the maximum
34332 extent from the children. Used to do precise mouse enter/leave.
34334 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
34336 * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
34337 when its not our property.
34339 * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
34341 * mplayer.cpp (GetSurface): Added.
34343 * text.cpp (text_init): Fixed to use RegisterFull for Froeground
34344 so we can specify Value::BRUSH as the default value type instead
34345 of it using SolidColorBrush as the type.
34347 2007-06-17 Chris Toshok <toshok@ximian.com>
34349 * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
34352 2007-06-17 Chris Toshok <toshok@ximian.com>
34354 * clock.cpp (Clock::TimeUpdated): remove a special case for the
34355 clock's duration being Automatic. Fixes infinite animation in
34358 * runtime.cpp (crossing_notify_callback): return type is gboolean,
34359 and make sure we always return something.
34361 2007-06-17 Miguel de Icaza <miguel@novell.com>
34363 Propagate changes from children of the transform up to our
34364 containers, this is done in several steps:
34366 * runtime.cpp (DependencyObject::Attach, Detach): New methods that
34367 are used to attach an object to a container and detach it. They
34368 were previously inlined inside SetValue.
34370 (Collection::Add, Remove): Attach and detach objects when they are
34373 * transform.cpp (Transform::OnPropertyChanged): if any class
34374 derived from Transform has one of its properties changed, it
34375 has a visual effect, propage this to the attacchees.
34377 (TransformGroup::OnSubPropertyChanged): Escalate here as well,
34378 this will catch the messages coming from anyone in the collection
34381 (TransformCollection::OnSubPropertyChanged): Buble the event up
34384 * runtime.cpp (handle_motion): Change the order in which we send
34385 the events to the UIElement, we should start at the topmost
34386 element, and have the toplevel canvas be last.
34388 2007-06-17 Sebastien Pouliot <sebastien@ximian.com>
34390 * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
34391 inside Image::render.
34392 * media.cpp: Use code from ImageBrush to render image with it's
34393 properties (e.g. Stretch)
34394 * transform.cpp: Update (commented) debug output.
34396 2007-06-17 Miguel de Icaza <miguel@novell.com>
34398 * runtime.cpp (GetValueNoDefault): This is necessary so we can
34399 distinguish a value that has been explicitly set from one that has
34403 * media.cpp (Image): use Framework::Width,Height for the image
34404 dimensions instead of the pixbuf width/height, used in extents and
34405 rotation computation.
34407 * runtime.cpp (Canvas::render): Set the clipping path on the
34408 identity matrix so we do not miss-clip.
34410 Render the canvas from 0, 0, fwidht, fheight, not the expose
34413 2007-06-16 Miguel de Icaza <miguel@novell.com>
34415 * runtime.cpp (Cairo::render): The canvas also needs to set the
34416 matrix and clear its background.
34418 (surface_resize): convenience entry point to resize a surface.
34419 Notice that this will resize the surface, but not the toplevel
34422 2007-06-16 Jackson Harper <jackson@ximian.com>
34427 * xaml.cpp: Use a callback for setting custom attributes in
34430 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
34432 * media.cpp: Implemented all the needed virtual methods for
34433 MediaElement to work, using my new MediaPlayer class.
34435 * mplayer.cpp|h: New class for playing media sources.
34437 * ffvideo.cpp: Removed from the build.
34439 2007-06-16 Miguel de Icaza <miguel@novell.com>
34441 Observation: either it is the surface, or something else is very
34442 slow, but entering the surface is quite slow right now to show the
34443 handles. Not sure what it could be.
34445 * runtime.cpp (OnPropertyChanged): We probably should catch the
34446 property changes here, and not in the Sub* variant of this thing,
34447 this will update the canvas properly now.
34449 (dump_hierarchy): useful bit to debug what is going wrong.
34451 (Canvas::get_xform_for): Do not apply extra
34452 transformations to the child other than the absolute_xform.
34454 (surface_attach): On attach we need to do a full invalidate, so
34455 the transformations are computed, otherwise it uses the defaults
34456 for the toplevel (zero), this fixes the atom.xaml issue.
34458 * control.cpp (get_xform_for): This is not proxied to the real
34459 object, this is proxied to the parent.
34460 (control_initialize_from_xaml): Set the parent link here.
34462 2007-06-16 Chris Toshok <toshok@ximian.com>
34464 * transform.cpp, transform.h, runtime.cpp, runtime.h,
34465 geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
34466 at removing all cached instance collections and using GetValue
34469 2007-06-16 Chris Toshok <toshok@ximian.com>
34471 * media.cpp (Image::SetSource): we want events even if we attach a
34472 downloader that's been started.
34474 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
34476 * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
34477 will mess with the earlier filling.
34479 2007-06-16 Chris Toshok <toshok@ximian.com>
34481 * runtime.h, runtime.cpp: remove the instance cached
34482 Panel::children, use accessor to get it when we need it.
34484 * brush.h, brush.cpp: same for the GradientBrush::children
34487 2007-06-16 Chris Toshok <toshok@ximian.com>
34489 * runtime.h: make these const Rect&'s.
34491 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
34493 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34494 the Value::Kind of the object that was created so the managed side do
34497 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
34499 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
34500 the element as the managed side needs (and defines) it.
34502 2007-06-16 Miguel de Icaza <miguel@novell.com>
34504 * control.cpp: Implement Control.
34506 * downloader.cpp: Implement a system to send various notifications
34507 as Chris wants his notifications and managed world wants the
34508 notifications as well.
34510 Should they ahve been separate? For now I just added a list of
34511 them. This code is turning uglier every minute.
34513 2007-06-16 Jackson Harper <jackson@ximian.com>
34515 * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
34517 - Handle expat errors a little better.
34519 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
34521 * runtime.h: Implement missing IntersectsWith and Intersection to fix
34524 2007-06-15 Chris Toshok <toshok@ximian.com>
34526 * runtime.cpp (Canvas::render): small optimization. only call the
34527 item's render method if its bounds actually intersects with the
34528 rectangle we're rendering. Also, clip to the bounding rectangle
34531 2007-06-16 Chris Toshok <toshok@ximian.com>
34533 * clock.cpp, clock.h: don't use a constant for the timeout in
34534 gtk_timeout_add, and add methods to add/remove the timeout.
34536 (ClockGroup::TimeUpdated): if we're paused or stopped,
34537 don't call child clock TimeUpdated methods at all. they always
34538 generate CurrentTimeInvalidated even when the time hasn't changed,
34539 which triggers redraws that don't need to happen.
34541 2007-06-16 Jackson Harper <jackson@ximian.com>
34543 * runtime.cpp|h: We still need C style base_ref/unref.
34545 * xaml.cpp: Takle a callback for the from_file method also.
34547 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
34549 * ffvideo.cpp (Stop): Implemented.
34550 (.ctor): init paused to false (maybe this is why video
34551 didn'talways work?).
34552 (.dtor): Stop() the video and unhook the timeout.
34554 * runtime.cpp: Implement Base::ref and Base::unref instead of
34555 doing it the c way.
34557 * *.cpp: Updated for above change.
34559 * shape.cpp (shape_set_stroke): Don't unref the old stroke.
34560 (shape_set_fill): Same.
34562 * text.cpp (text_init): Use a separate brush for TextBlocks and
34564 (text_block_set_foreground): Don't unref the old brush.
34565 (inline_set_foreground): Same.
34567 2007-06-15 Chris Toshok <toshok@ximian.com>
34569 * xaml.cpp: little leak fixes here and there.
34571 2007-06-15 Chris Toshok <toshok@ximian.com>
34573 * demo.cpp (delete_event): destroy the surface and shutdown the
34574 runtime before we quit, just to make finding leaks a little
34577 * ffvideo.cpp (MediaElementFfmpeg): re-order the
34578 close/g_io_channel_close calls to quiet down glib.
34580 * media.cpp: don't close the loader in DownloaderEvents. do it in
34581 the dtor for now, to keep from getting that stupid gdk warning.
34582 this is wrong, but at least it's quiet.
34584 * text.cpp: delete the color we initialize the solid color brush
34587 * animation.cpp, animation.h: remove the cached key_frames
34590 * runtime.h, runtime.cpp: clean up our cleanup a lot.
34592 in the copy constructor we actually need to make a copy (or
34593 ref in cases where we can) everything we store as a pointer in
34594 our union. This is to facilitate us destroying it in the
34597 in surface_destroy just delete the surface. move all the destroy
34598 code to the destructor. Also, in the destructor unhook from the
34599 gtk events, since we get an unrealize event as part of widget
34600 destruction, apparently.
34602 Add DependencyObject::Shutdown which destroys our properties
34603 hashtable. Create all the hashtables with _new_full so we can
34604 give free functions for keys/values. actually make use of them,
34605 and clean up the relevant destructors.
34607 Add a destructor for Type, and have the Type ctor take its
34608 arguments. free the name in the dtor. Same deal with _new_full
34609 for hashtable creation, and also add Type::Shutdown.
34611 (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
34612 and DependencyObject::Shutdown to free all our stuff.
34614 * clock.h, clock.cpp: add TimeManager::Shutdown.
34616 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
34618 * demo.cpp (gettime): Improved fps reporting.
34620 2007-06-15 Miguel de Icaza <miguel@novell.com>
34622 * media.cpp (SetSource): Make it so we use the data from a
34623 downloader that might have already finished.
34625 2007-06-15 Chris Toshok <toshok@ximian.com>
34627 * runtime.cpp: simplify refcounting a little more. we now have 3
34630 1. Value() holds a ref to its contained dependency object.
34631 This means we don't have to do anything special for
34632 anything stored in a DP.
34634 2. Collections hold a ref to their constituents.
34636 3. If you *must* cache an DO pointer in an instance field, you
34637 must ref/unref it properly. But really, you shouldn't need
34638 to cache it, and I'll likely go through and remove all the
34641 * media.cpp (media_element_set_markers): remove the ref/unref
34644 * animation.cpp: comment out some spew, and follow a safer pattern
34645 in OnPropertyChanged.
34647 * brush.cpp (OnPropertyChanged): safer pattern.
34649 * geometry.cpp (OnPropertyChanged): safer pattern.
34651 * runtime.h: make all these dtors virtual.
34653 * clock.cpp, clock.h: remove the cached child_timelines instance
34654 field to clean up some of the ref counting problems.
34656 2007-06-15 Miguel de Icaza <miguel@novell.com>
34658 * media.cpp (SetSource): Make it so we use the data from a
34659 downloader that might have already finished.
34661 We now accumulated data as we go.
34663 * downloader.cpp (downloader_get_response_text): Return
34666 2007-06-15 Jackson Harper <jackson@ximian.com>
34670 * xaml.cpp: Callback into managed code to create custom element
34673 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
34675 * media.cpp (media_base_new): Removed, not instantiable.
34676 (Image::getbounds): Need to set the absolute_xform matrix :)
34678 2007-06-15 Miguel de Icaza <miguel@novell.com>
34680 * media.cpp (Image::getxformorigin): Implement getxformorigin, so
34681 rotations are correct.
34683 (Image::getbounds): Implement getbounds correctly, the coordinates
34684 should be in device coordinates with the transform applied.
34686 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
34688 * demo.cpp (main): Add some Inlines to the TextBlock to test
34689 bounding box calculations.
34691 * text.cpp (OnPropertyChanged): If the property that changed is
34692 the Actual width/height, then don't invalidate anything - simply
34693 return (these are just cache values that only we can set
34695 (Draw): Keep track of the pixel width/height of the entire
34696 rendered TextBlock+Inlines.
34697 (getbounds): Use the cached width/height of the TextBlock+Inlines
34698 and draw a rectangle instead to improve performance.
34700 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
34702 * media.cpp|h: Add media_base_new.
34704 2007-06-15 Miguel de Icaza <miguel@novell.com>
34706 * Add destructors to classes that are caching DO collections and
34707 keeping refs to those, thanks to Chris Toshok for the pattern to
34710 2007-06-15 Chris Toshok <toshok@ximian.com>
34712 * media.cpp (Image::render): use the uielement's opacity when
34713 painting. Fixes the DrPopperSilverlight Bubble.xaml file.
34715 2007-06-15 Miguel de Icaza <miguel@novell.com>
34717 * runtime.cpp (UIElement): The problem was that:
34719 The ~UIElement destructor was setting the collection
34720 properties to NULL in an attempt to unref stuff (these
34721 are now automatically unrefed).
34723 This caused the hash table destructor to unref the values
34724 that were held in the collection.
34726 At a later point, since "triggers" was cached and
34727 OnPropertyNotify was called, we attempted to unref the
34728 value, but that cached value pointed to an object that had
34729 already been released.
34731 * Everywhere: remove duplicated code that got copy/pasted
34732 everywhere for tracking collections and caching values.
34734 This should help fixing the crashing problem, but I still need to
34735 review the rules for reference counting and keeping a cache of
34736 variables in instance fields.
34738 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
34740 * text.cpp (Draw): Now renders inlines.
34742 2007-06-15 Chris Toshok <toshok@ximian.com>
34744 * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
34747 * demo.cpp: notify the downloader of the image file size so that
34748 it'll generate a COMPLETED event for the Image.
34750 * media.h, media.cpp: make image downloading non-progressive (we
34751 only create the surface when the downloader notifies the download
34752 is complete), but gain something in return: images with alpha
34755 * downloader.h, downloader.cpp: add closure to event_notify, and
34756 expose the Event kind.
34758 2007-06-15 Miguel de Icaza <miguel@novell.com>
34760 * runtime.cpp (UIElement, Canvas): send events to the objects as
34761 well. My original test on orcas was buggy.
34763 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
34765 * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
34767 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
34769 * xaml.cpp (dependency_object_add_child): If the col_v collection
34770 value is NULL, create a new collection and add it to the
34773 * runtime.cpp: Added a generic collection_new() function which
34774 takes a Value::Kind to specificy which collection-type it should
34777 2007-06-15 Miguel de Icaza <miguel@novell.com>
34779 * downloader.cpp: Implement DownloadProgress property and event
34782 * runtime.h (DependencyObject::Is): new method, similar to C# is.
34784 * runtime.cpp (surface_repaint): We clear the background here
34785 again, to allow canvases to have transparent brushes.
34787 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
34789 * runtime.cpp: Panel.Background is NULL by default, which means it's
34790 transparent. This fixes Canvas inside Canvas.
34792 2007-06-15 Jackson Harper <jackson@ximian.com>
34794 * runtime.cpp|h: Implement some Inlines stuff that the parser will
34796 * xaml.cpp: Add some of the pieces for creating textblock inlines.
34797 - Added some TODO areas for creating late bound collections (maybe
34798 this should just be illegal??).
34800 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
34802 * text.cpp: Have inlines cache their PangoFontDescription and
34803 added logic to render textblock inlines.
34805 2007-06-15 Alan McGovern <amcgovern@novell.com>
34807 * runtime.cpp|h: Added DependencyProperty.NameProperty
34809 2007-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
34811 * transform.cpp|h: Add Transform C constructor.
34812 * runtime.cpp: Better warning message.
34814 2007-06-15 Miguel de Icaza <miguel@novell.com>
34816 * runtime.cpp (surface_attach): Only hook up the events when we
34817 get a toplevel attached.
34819 * downloader.h: Drop the C++ API with a C proxy API, switch to a
34820 pure C API as we need this from the managed side anyways.
34822 * downloader.h: Move downloader defs into .h file
34824 Add a notification system for reporting the size of a stream, so
34825 we can do progress indication.
34827 * downloader.cpp: Move downloader to its own file.
34829 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
34831 * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
34832 (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
34833 * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
34834 will be removed in 1.0.
34835 * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
34836 * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
34839 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
34841 * text.cpp (text_init): Set more default values.
34843 * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
34844 we iterate thru them) and set the resulting list to NULL (in case
34845 we don't hold the last ref) before unreffing the children object
34846 (in case we do own the last ref).
34847 (EventTrigger::OnPropertyChanged): Same.
34848 (UIElement::OnPropertyChanged): Same.
34850 * transform.cpp (OnPropertyChanged): Same.
34852 * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
34853 (PathGeometry::OnPropertyChanged): Same
34854 (PathFigure::OnPropertyChanged): Same.
34856 * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
34859 (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
34860 (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
34861 (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
34863 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
34865 * brush.cpp: Complete ImageBrush.Transform
34866 * shape.cpp: Please at least one side of the lines.
34868 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
34870 * text.cpp (text_init): No longer should ref the foreground brush
34873 * xaml.cpp: Added support for Runs/LineBreaks
34875 * text.cpp: Implemented Run/LineBreak classes.
34876 (inline_new): Removed (can't instantiate this class).
34878 2007-06-15 Miguel de Icaza <miguel@novell.com>
34880 * runtime.cpp (~DependencyObject, free_value): unref all the
34881 values that are stored in the object on destruction
34883 * runtime.cpp: Add support for enter/leave events.
34885 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
34887 * text.cpp (getbounds): Set the actual width/height values to keep
34890 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
34892 * text.cpp (getbounds): Revert prior change.
34893 (getxformorigin): Same.
34895 * shape.cpp (getbounds): Revert prior change.
34897 * ffvideo.cpp (getbounds): Revert prior change.
34899 * runtime.cpp (update_xform): Revert my last change.
34900 (item_update_bounds): Same.
34902 2007-06-14 Jackson Harper <jackson@ximian.com>
34904 * xaml.cpp: Set content properties when adding child elements. We
34905 now no longer need to special case any elements except panel.
34907 2007-06-14 Jackson Harper <jackson@ximian.com>
34909 * xaml.cpp: I must have been very tired when I wrote that.
34911 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
34913 * media.h: Expose Image's Height and Width (required for ImageBrush)
34914 * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
34915 (yet) force an update of the drawing once the image is available.
34917 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
34919 * demo.cpp: Updated s/textblock/text_block/g
34921 * xaml.cpp: Don't register TextBlock twice.
34923 * ffvideo.cpp (getbounds): Can now depend on surface being set.
34925 * text.cpp: s/textblock/text_block/g
34926 (getbounds): Can now depend on surface being set.
34927 (getxformorigin): Same.
34929 * shape.cpp (getbounds): Can now depend on surface being set.
34931 * runtime.cpp (item_update_bounds): Don't update bounds if the
34932 surface hasn't been set yet.
34933 (update_xform): Same.
34935 2007-06-14 Jackson Harper <jackson@ximian.com>
34937 * xaml.cpp: Add keyspline parsing.
34939 2007-06-14 Jackson Harper <jackson@ximian.com>
34941 * value.h: This guy doesn't exist anymore, he is a
34942 DependencyObject now.
34944 2007-06-14 Jackson Harper <jackson@ximian.com>
34947 * runtime.cpp|h: We also need to update the DependencyObject when
34948 resolving PropertyPaths.
34950 2007-06-14 Jackson Harper <jackson@ximian.com>
34952 * runtime.cpp|h: New function that follows PropertyPath's to
34953 DependencyProperties.
34954 * animation.cpp: Use new function to resolve animation target
34957 2007-06-14 Jackson Harper <jackson@ximian.com>
34959 * runtime.cpp (GetDependencyProperty): If there is no table for a
34960 property, we still need to lookup the property in the parent
34961 chain (assumming inherit is true).
34962 - Fix some typos with types_by_name
34964 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
34966 * demo.cpp (main): Rotate our demo text inside a filled rectangle
34967 around the center of the text.
34969 * text.cpp (TextBlock.ctor): Initialise a cached
34970 PangoFontDescription that we will update when properties change.
34971 (TextBlock.dtor): Free our font/layout.
34972 (getbounds): Implemented correctly.
34973 (getxformorigin): Implemented.
34974 (Draw): Simplified since we don't need to create our layout/font
34975 anymore (just use the cached ones).
34976 (OnPropertyChanged): Implemented.
34978 2007-06-14 Miguel de Icaza <miguel@novell.com>
34980 * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
34981 RadialGradientBrush): Notify owners when changes happen in the
34984 This makes the demo test-color-animation.xaml work without fps.
34986 * runtime.cpp: Make Canvas use the Background property to render
34989 2007-06-14 Chris Toshok <toshok@ximian.com>
34991 * demo.cpp (main): create a namescope to attach to the canvas, and
34992 also make sure to add the storyboard to the tree someplace so that
34993 it can find the names of things.
34995 * xaml.cpp: create a namescope to attach to the top_element.
34997 * runtime.cpp (FindName): rework this to walk up the tree. Drop
34998 the global namescope.
35000 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35002 * brush.cpp|h: Add ImageBrush functions, which delegates most of its
35003 work to Image (downloader).
35004 * media.cpp|h: Expose the cairo_surface_t that contains the image.
35006 2007-06-14 Chris Toshok <toshok@ximian.com>
35008 * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
35009 size from 1024 to 8192 (and make it an instance instead of stack
35010 variable). Also, add a return statement that will cause the idle
35011 handler to no longer be called when we get a write of 0 length.
35012 This might be wrong in the long term.
35014 * media.cpp, media.h: add cleanup methods for the Image class, and
35015 add a dtor as well.
35017 2007-06-14 Chris Toshok <toshok@ximian.com>
35019 * media.cpp (LoaderSizePrepared): fill in the initial state of the
35020 image to gray with black border.
35021 (LoaderAreaUpdated): invalidate the item.
35023 * media.h: fix the progressive image loading.
35025 2007-06-14 Chris Toshok <toshok@ximian.com>
35027 * demo.cpp: use the MediaBase::SourceProperty to set the image's
35030 * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
35031 for changes in MediaBase::SourceProperty and kick off the download
35032 and stop the currently running one.
35034 2007-06-14 Chris Toshok <toshok@ximian.com>
35036 * demo.cpp: track downloader api change.
35038 * media.cpp: track downloader api change.
35040 * runtime.h, runtime.cpp: the downloader's write function needs an
35041 offset as well as a length to work with mozilla's streaming api.
35043 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35045 * demo.cpp (main): Draw some text
35047 * text.cpp (text_init): Set a default solid black brush for
35048 foreground properties on Inline/TextBlock objects.
35049 (Draw): Setup the Brush stuff before drawing.
35051 2007-06-14 Jackson Harper <jackson@ximian.com>
35053 * xaml.cpp: Add support for loading all implemented (and semi
35054 implemented) dependency object types.
35055 * text.cpp|h: C style constructors.
35057 2007-06-14 Chris Toshok <toshok@ximian.com>
35059 * animation.cpp (KeySpline): default should be 1,1 for
35062 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35064 * xaml.cpp: Add support for Matrix (non-DO) type.
35066 2007-06-14 Chris Toshok <toshok@ximian.com>
35068 * runtime.cpp (downloader_write): add C-style downloader_write
35069 method so we can call into it from the binding.
35071 2007-06-14 Chris Toshok <toshok@ximian.com>
35073 * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
35074 type.cpp.in, value.h.in: make KeySpline subclass from
35075 DependencyObject like it should, and fix resulting fallout.
35077 2007-06-14 Miguel de Icaza <miguel@novell.com>
35079 * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
35080 catch cases of Top/Left being set on a child, this makes changes
35081 to the object after it has been created (adding/removing the
35084 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35086 * brush.cpp|h: Much closer results for RadialGradients (but I still
35087 have a test case that fails). Also added Transform support for
35090 2007-06-14 Jackson Harper <jackson@ximian.com>
35092 * animation.h: C style constructors.
35093 * clock.cpp|h: C style constructors.
35094 * runtime.cpp|h: Follow proper naming convention for
35095 TimelineMarker C style constructors.
35097 2007-06-14 Chris Toshok <toshok@ximian.com>
35099 * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
35100 here, and made Downloader pluggable with a set of functions.
35102 * demo.cpp: use the pluggable nature of Downloader to put
35103 UnmanagedDownloader here (and call it FileDownloadState).
35105 * value.cpp, value.h, type.cpp: resync.
35107 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35109 * text.cpp: Fixed Brush accessors for the NULL case.
35111 * media.cpp: Fixed accessors that could return NULL
35112 (media_init): init MediaBase and MediaElement items.
35114 2007-06-14 Jackson Harper <jackson@ximian.com>
35116 * animation.cpp: C style constructor.
35117 * media.cpp|h: Add some C style constructors.
35118 * xaml.cpp: Add parsing hooks for new components.
35120 2007-06-14 Chris Toshok <toshok@ximian.com>
35122 * demo.cpp: make one of the videos an image instead.
35124 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35126 * xaml.cpp: Fixed the font_widths and font_stretches maps to
35127 reflect the numeric enum values defined in text.h (and msdn docs).
35129 * text.h: Sync enum values to documented numeric values.
35131 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
35133 * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
35134 Make all classes that inherit from DO constructable, and add
35135 missing C-style constructors.
35137 2007-06-14 Jackson Harper <jackson@ximian.com>
35139 * runtime.cpp|h: Hookup the resource collection.
35140 * xaml.cpp: Parse resource collections.
35142 2007-06-14 Chris Toshok <toshok@ximian.com>
35144 * type.cpp, value.h, type.h: resync these.
35146 * media.h, media.cpp: add naive Image class.
35148 * runtime.h, runtime.cpp: add some Downloader methods, and
35149 subclass Downloader with a *very* hackish UnmanagedDownloader
35150 class that just loads from files. Also add a "write_func"
35151 callback that the downloader can call when it has new data to hand
35154 2007-06-14 Chris Toshok <toshok@ximian.com>
35156 * animation.cpp: import an arc length calculator I found on the
35157 net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
35158 and use that for KeySpline::GetSplineProgress. The results don't
35159 match MS's exactly, though.
35161 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
35163 * geometry.cpp, geometry.h: Add collection constructors.
35164 * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
35165 * runtime.cpp|runtime.h: Implement collection add/remove methods.
35166 Add Downloader DPs.
35167 * media.cpp: Add MediaAttribute DP.
35169 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35171 * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
35172 (as it cannot be globally applied). Added DP, and related functions,
35175 2007-06-14 Miguel de Icaza <miguel@novell.com>
35177 * Improve the destruction scenario to release the resources that
35178 we have acquired, we are now up to the point of stopping clocks
35179 properly, but more work is going to be needed in the long term to
35180 properly track refs and objects.
35182 Ensured that all virtual GetObjectType are flagged with virtual.
35184 * Makefile.am: Put runtime.cpp at the top, to improve
35185 compile/test cycle.
35187 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35189 * brush.cpp|h: One step closer for RadialGradientBrush
35190 * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now
35191 render (shape-wise) correctly.
35192 * shape.cpp: Draw before setting the brush. This allows the brush
35193 setting code to ask for the extents to stroke/fill.
35195 2007-06-13 Chris Toshok <toshok@ximian.com>
35197 * animation.cpp (KeySpline::GetSplineProgress): reimplement this
35198 to return a percentage of the arc length of the bezier that is
35199 traversed when t = linearProgress, taking the algorithm from
35200 http://steve.hollasch.net/cgindex/curves/cbezarclen.html
35202 2007-06-13 Chris Toshok <toshok@ximian.com>
35204 * brush.h, geometry.h, animation.h, clock.h: add GetElementType
35205 collection overloads.
35207 * type.cpp: resync to track UIElement : Visual relationship.
35209 * runtime.h: add Collection::GetElementType, and add overloads
35210 (some commented out) for the collections listed. Also, fix
35211 UIElement's superclass to be Visual.
35213 * runtime.cpp (Add): make sure we're only adding subclasses of our
35216 2007-06-13 Chris Toshok <toshok@ximian.com>
35218 * clock.cpp (AddChild): just pass the child, unwrapped.
35220 * runtime.h: remove the Value* overloads for Collection::Add and
35221 Collection::Remove.
35223 * xaml.cpp (dependency_object_add_child): just pass the dependency
35226 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
35228 * text.cpp: Implemented a ton of stuff...
35229 (text_init): Added.
35231 * runtime.cpp (runtime_init): Call text_init().
35233 2007-06-13 Miguel de Icaza <miguel@novell.com>
35235 * runtime.h (Collection): Since it seems that everything we have
35236 so far are collections of dependency objects, the code is now
35237 simplified and will also take refs and remove refs on destruction.
35239 The only reason to implement the Add/Remove methods is if you must
35240 do something as a hook during add/remove
35242 * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
35245 (OnPropertyChanged): Allow the value to be NULL, cope with that,
35246 we use this to clear all of our objects.
35248 2007-06-13 Chris Toshok <toshok@ximian.com>
35250 * xaml.cpp (xaml_create_from_str): make the from_str a little
35251 closer to from_file. fixes hooking up names when loading from
35254 2007-06-13 Chris Toshok <toshok@ximian.com>
35256 * runtime.cpp (runtime_init): start the time manager here.
35258 * demo.cpp (main): instead of here.
35260 2007-06-13 Jackson Harper <jackson@ximian.com>
35262 * xaml.cpp: Gracefull handling of error conditions. Being
35263 intentionally non strict about some things while we are
35264 developing (like unknown elements, and attributes, and missing
35267 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
35269 * brush.cpp: Better, but still imperfect, RadialGradientBrush
35271 2007-06-13 Jackson Harper <jackson@ximian.com>
35273 * runtime.h: Add some of the error event handler args, so i can
35274 use these in the parser.
35276 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
35278 * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
35279 (soptimsation, woot).
35281 * text.cpp: Implemented c wrappers for Inline
35283 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
35285 * brush.cpp: Implemented LinearGradientBrush::SetupBrush
35286 * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
35287 support for LinearGradientBrush.
35289 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
35291 * text.cpp: Stubbed out TextBlock and Glyphs
35293 2007-06-13 Jackson Harper <jackson@ximian.com>
35295 * xaml.cpp: GradientBrush is a Brush.
35297 2007-06-13 Miguel de Icaza <miguel@novell.com>
35299 * runtime.cpp (dependency_object_find_name): Add new wrapper
35301 2007-06-13 Chris Toshok <toshok@ximian.com>
35303 * animation.cpp, animation.h: add public storyboard methods for
35304 begin/pause/resume/seek/stop. also start in on the spline
35305 keyframe/KeySpline stuff.
35307 * type.cpp: resync.
35309 * value.cpp: resync.
35313 * value.h.in: add keyspline stuff.
35315 * type.cpp.in: add keyspline stuff.
35317 2007-06-13 Chris Toshok <toshok@ximian.com>
35319 * demo.cpp: a few changes - none of the animations run forever
35320 now. also, add some gtk events (button press/release/motion). we
35321 pause animations on press, resume them on release.
35323 * clock.cpp: keep track of the offset caused by pausing/resuming
35324 the clock from our parent's time.
35326 * animation.cpp: split out all the logic for finding the current
35327 (and previous) keyframes into
35328 KeyFrameCollection::GetKeyFrameForTime. Also, make the key frame
35329 collection maintain a separate sorted list of keyframes.
35331 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
35333 * media.cpp (media_base_get_source): Implemented; use char*
35334 instead of Uri - we'll make the binding convert between the types.
35335 (media_base_set_source): Same.
35337 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
35339 * runtime.cpp: Xlib and we are both defining Visual,
35340 so implement a workaround.
35342 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
35344 * brush.cpp|h: Added code for LinearGradientBrush and partial setup
35345 for all gradient-related brushes (needs testing). Add all color
35346 definitions supported by XAML.
35347 * mkcolor.cs: Tool to generate colors from System.Drawing (as they
35350 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
35352 * runtime.h: Add Visual.
35353 * value.cpp, value.h, type.cpp: Updated.
35355 2007-06-13 Jeffrey Stedfast <fejj@gnome.org>
35357 * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
35359 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
35361 * media.h: Added MediaAttribute.
35362 * runtime.h: Added Downloader.
35363 * value.cpp, value.h, type.cpp: Updated.
35364 * typegen.cs: Copy Kind.cs to the correct directory.
35366 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
35368 * brush.cpp, brush.h, geometry.cpp: Fix property registration
35371 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
35373 * brush.cpp|h: Fix Brush::RelativeTransformProperty and
35374 Brush::RelativeTransformProperty types.
35376 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
35378 * brush.cpp|h: Complete DependencyProperties for GradientBrush and
35379 add GradientStopCollection.
35380 * runtime.cpp|h: Remove code for GradientStopCollection.
35381 * xaml.cpp: Register new brush classes.
35383 2007-06-13 Miguel de Icaza <miguel@novell.com>
35385 * runtime.cpp: Various new events are now sent.
35387 2007-06-13 Jackson Harper <jackson@ximian.com>
35389 * xaml.cpp: When using the xaml_create_from_str we automatically
35390 add the default and x: namespaces.
35392 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
35394 * ffvideo.cpp: Fixed to subclass the new MediaElement class.
35396 * video.cpp: Removed.
35398 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35400 * brush.cpp|h: Added DependencyProperty for GradientBrush and
35401 GradiantStop. Added new brush-related enums. Add [g|s]etter functions
35402 for RadialGradient and BrushGradiantStop.
35404 2007-06-12 Jackson Harper <jackson@ximian.com>
35406 * xaml.cpp: Repsect namespaces.
35407 - Clean up code a little
35409 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35411 * brush.h: New. Brush related stuff.
35412 * brush.cpp: DependencyProperty for RadialGradientBrush
35413 * runtime.h: [Re]move brush stuff.
35414 * shape.h: Add include for brush.h
35415 * type.cpp, value.h, value.h: Add RadialGradientBrush type.
35416 * Makefile.am: Add brush.h to the build.
35418 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
35420 * media.cpp|h: Added to the build
35422 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35424 * transform.cpp|h: Complete MatrixTransform.
35425 * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
35428 2007-06-12 Miguel de Icaza <miguel@novell.com>
35430 * runtime.h (UIElement::inside_object): new routine that should
35431 return true if the given absolute x, y is inside the given object
35434 (UIElement::handle_motion): new routine that is called when a
35435 motion event happens, it should determine if it can handle the
35436 given event at x, y.
35438 (Surface): new callbacks, these are callbacks that will pass the
35439 notification of the event to managed code.
35441 * runtime.cpp (FrameworkElement): provide a default implementation
35442 for inside object that works for "squares" (things with widths and
35445 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
35447 * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
35448 simply disable audio for that video. Temporary hack.
35450 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35452 * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
35454 2007-06-12 Jackson Harper <jackson@ximian.com>
35456 * xaml.cpp: Implement enums. This implementation is very naive,
35457 but works with the current Silverlight object model. Basically,
35458 we just index property names to enum maps. So a property name
35459 maps to a single enum type regardless of the type the enum is
35460 declared in. This works fine with the current silverlight object
35461 model, but in the future might need to be changed, if we get
35462 conflicting property names.
35464 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
35466 * ffvideo.cpp: Fixed sound playback to not get that nasty
35467 reverb-like effect. Also switched to using SDL for audio.
35469 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35471 * transform.cpp|h: Implement SkewTransform.
35472 * type.cpp: Register new type SkewTransform.
35473 * value.cpp|h: Add SkewTransform.
35474 * xaml.cpp: Register DO for SkewTransform.
35476 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35478 * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
35481 2007-06-12 Jackson Harper <jackson@ximian.com>
35483 * xaml.cpp: Don't try to add properties to the panel.
35485 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
35487 * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
35488 * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
35489 * Makefile.am: Add rsvg.cpp|h to the build.
35491 2007-06-12 Jackson Harper <jackson@ximian.com>
35493 * xaml.cpp: Add parser for KeyTime structures.
35495 2007-06-12 Chris Toshok <toshok@ximian.com>
35498 (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35499 (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
35500 (animation_init): make sure to initialize
35501 ColorKeyFrame::ValueProperty.
35503 * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
35505 2007-06-12 Jackson Harper <jackson@ximian.com>
35507 * animation.cpp|h: C style constructor for KeyFrameCollection.
35508 * xaml.cpp: Implement the KeyFrame types
35509 - Make the base types ghosts, despite what the docs say, they
35512 2007-06-12 Miguel de Icaza <miguel@novell.com>
35514 * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
35515 when we have reached someone that handles that property in the way
35518 2007-06-12 Jackson Harper <jackson@ximian.com>
35520 * xaml.cpp: Register the TriggerCollection so that
35521 TriggerCollections can be created using the explicit syntax.
35523 2007-06-12 Jackson Harper <jackson@ximian.com>
35525 * xaml.cpp: No longer need to special case EventTriggers. Remove
35526 some dead code (yippie!)
35527 * runtime.cpp: Unregister the target when removing from the
35530 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35532 * runtime.h: Implement Inlines.
35533 * value.cpp, value.h, type.cpp: Updated.
35535 2007-06-12 Jackson Harper <jackson@ximian.com>
35537 * runtime.cpp|h: Hook up the UIElement::Triggers and
35538 EventTrigger::Actions/RoutedEvent properly.
35539 * xaml.cpp: Remove some of the special casing for event triggers
35540 now that they are proper DependencyProperties.
35542 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35544 * typegen.cs: Now checks if classes that inherits DependencyObject
35545 implement GetObjectType.
35546 * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
35547 missing GetObjectTypes and fix a few that were returning the wrong
35550 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35553 - (DependencyObject::SetValue): Allow assigning an object of a
35554 more derived type than the defined property type. Change the
35555 attached_list code to handle NULL dependency_objects.
35556 - Delete types_init, it's generated now.
35557 - Delete Value:As[DependencyObjects], its generated now.
35558 * runtime.h: Added definitions for a few missing collection classes.
35559 * types.cpp[.in], value.cpp[.in], value.h.in: Added.
35561 * Makefile.am: Add types.cpp and value.cpp
35562 * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp,
35563 value.h and Kind.cs from the headers.
35565 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35567 * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
35569 2007-06-12 Chris Toshok <toshok@ximian.com>
35571 * clock.h, clock.cpp, runtime.cpp, value.h: use a
35572 TimelineCollection to store child collections in TimelineGroup.
35574 2007-06-12 Chris Toshok <toshok@ximian.com>
35576 * animation.h, animation.cpp (animation_init): remove the
35577 clock.cpp property registration.
35578 (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
35579 attempt, calculate our timespan from our key frames.
35580 (Animation::GetNaturalDurationCore): return a 1 second duration,
35582 (UpdatePropertyValue): plug leak.
35584 * runtime.cpp (runtime_init): call clock_init.
35586 * clock.h, clock.cpp: largish pass at implementing support for
35587 Duration::Automatic in ClockGroups (where they query their child
35588 timelines to see how long they should make themselves). Also, add
35591 * xaml.cpp (timespan_from_str): correct math.
35593 2007-06-12 Jackson Harper <jackson@ximian.com>
35595 * xaml.cpp: Add a couple more of the animation elements.
35597 2007-06-12 Jackson Harper <jackson@ximian.com>
35599 * runtime.cpp|h: There is no public Triggers property.
35601 2007-06-12 Miguel de Icaza <miguel@novell.com>
35603 * runtime.cpp (DependencyObject::RegisterFull): Allow for
35604 properties to be flagged as attached, and only propagate the child
35605 notification to those those that care about it.
35607 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
35609 * Implement a mechanism to keep track of parents and notify
35610 parents of changes in attached properties.
35612 2007-06-11 Jackson Harper <jackson@ximian.com>
35614 * xaml.cpp: Add content properties, and handle collections that
35615 are content properties, by implicitly adding items to the
35618 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
35620 * runtime.cpp: Remove matrix initialization (to avoid double-inits in
35622 * transform.cpp: Add matrix initialization in TransformGroup::
35623 GetTransform. Makes the API safer :)
35625 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
35627 * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
35629 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
35631 * geometry.cpp|h: Add drawing of [Poly]LinesSegment and
35632 [Poly]BezierSegment. More than half of Sam Ruby's samples can work
35635 2007-06-11 Jeffrey Stedfast <fejj@novell.com>
35637 * ffvideo.cpp: Attempt to get video to be in sync with audio by
35638 using the audio pts as the target_pts.
35640 2007-06-11 Jackson Harper <jackson@ximian.com>
35642 * runtime.cpp: Register the collection types as derived from
35645 2007-06-11 Chris Toshok <toshok@ximian.com>
35647 * xaml.cpp (timespan_from_str): fix reading off the end of digits
35650 2007-06-11 Jackson Harper <jackson@ximian.com>
35652 * xaml.cpp: Implement some more collection loading. A lot of
35653 duplicate code here, so I should probably refactor things a bit,
35654 but will wait until I've seen how more collections are laid out.
35656 2007-06-11 Chris Toshok <toshok@ximian.com>
35658 * animation.h, animation.cpp: use KeyFrameCollection's for the
35659 *AnimationUsingKeyFrames key frame stuff, instead of GLists.
35661 * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
35663 2007-06-11 Jackson Harper <jackson@ximian.com>
35665 * xaml.cpp: Make the parents of collections the Collection ghost
35666 element. This is a first step in cleaning up collection creation
35669 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
35671 * transform.cpp: remove dead code.
35672 * xaml.cpp: Partial collection support for geometry.
35674 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
35676 * transform.cpp: Multiply each matrix in a TransformGroup (fix the
35677 open-clipart sample, at least the correct parts of the sample).
35678 * runtime.cpp: Always initialize the matrix in item_get_render_affine
35679 otherwise we'll end up with bad random results.
35681 2007-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
35683 * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue
35684 overloads that takes strings as well as DP, GetDependencyProperty where
35685 it's possible to specify whether the parent type is searched for the
35686 property or not, and a HasProperty method
35688 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35690 * geometry.cpp|h: Fix function names wrt type.
35691 * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
35692 and call update_xform. This fix the "atom" sample :)
35693 * transform.cpp: Fix Rotate and Scale around a center point.
35695 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35697 * geometry.cpp: Add more precision to types.
35698 * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
35700 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35702 * brush.cpp: Implement Opacity for SolidColorBrush.
35703 * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can
35704 access it's properties (e.g. Opacity in this case). Add uielement_
35705 [g|s]et_opacity functions.
35706 * shape.cpp: Supply the UIElement when setting up brushes.
35708 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35710 * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than
35711 half the width|height.
35713 2007-06-10 Miguel de Icaza <miguel@novell.com>
35715 * shape.cpp (OnPropertyChanged): Implement this property for most
35716 shapes: if the property is set, we need to invalidate and
35719 * runtime.h (FullInvalidate): A method to perform a queue to
35720 redraw the underlying region, update the bounds and queue an
35721 update for the new region.
35723 * runtime.h (Base): make destructor virtual so that base_unref can
35724 call delete (Base *) p. Exposed by the managed code when the
35725 first base_unref ran for the first time :-)
35729 * runtime.cpp (surface_attach): invalidate the areas before and
35730 after, compute the bounds using item_update_bounds, not the
35731 getbounds method directly.
35733 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35735 * xaml.cpp: Add PathFigure[Collection]/Segments support.
35737 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
35739 * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
35740 green unlike other basic colors (red/blue at 0xFF).
35741 * xaml.cpp: Don't assert on an empty collection.
35743 2007-06-10 Miguel de Icaza <miguel@novell.com>
35745 * runtime.cpp, runtime.h (BasicArray): New base struct for
35746 PointArray and double array, puts the count field at the beginning
35747 and avoids an extra block to be allocated (count and values are
35748 now on a single contiguous block).
35750 Introduce a refcount for the arrays, so that we can release those
35751 properly. Due to the nature of how we copied values before we
35752 had to leak the values, when the leak was plugged, we crashed.
35754 The refcount is there just because it was easy, we could clone if
35755 we wanted, but also I would like to keep the refcount there to
35756 ensure that the array of doubles is aligned on an 8 byte
35759 (double_array_new, point_array_new): New methods to create the
35762 (Value): Now free the arrays.
35765 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
35767 * geometry.cpp|h: Add/complete PathFigureCollection and
35768 PathSegmentCollection. Doesn't parse from xaml.
35769 * runtime.cpp, value.h: Add support for new classes.
35771 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
35773 * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
35774 But color rending is not yet correct in demo files.
35775 * runtime.cpp, value.h: Add support for GeometryCollection
35776 * xaml.cpp: Add support for GeometryGroup
35778 2007-06-09 Chris Toshok <toshok@ximian.com>
35780 * animation.h, animation.cpp, value.h, runtime.cpp: add
35781 ColorKeyFrame and it's linear/discrete subclasses, as well as
35782 ColorAnimationUsingKeyFrames.
35784 2007-06-09 Chris Toshok <toshok@ximian.com>
35786 * animation.h, animation.cpp, value.h, runtime.cpp: add the
35787 Discrete keyframes for point and double.
35789 2007-06-09 Chris Toshok <toshok@ximian.com>
35791 * genkindcs.sh: new file, a script to generate
35792 olive/class/agclr/Mono/Kind.cs.
35794 * value.h: add marker comments so that genkindcs.sh works. Also,
35795 remove the explicit value assignments to enum elements <
35796 DEPENDENCY_OBJECT. there's no need for it.
35798 2007-06-09 Chris Toshok <toshok@ximian.com>
35800 * demo.cpp (main): add in another animation, this one using
35801 keyframes, that moves a square around in a square, while animating
35802 its background color the same way as the other rectangles.
35804 * value.h, runtime.cpp: add in the keyframe types.
35806 * runtime.cpp (DependencyObject::DependenceyObject): fix a
35807 valgrind error - we shouldn't be "free"ing Values, since they're
35808 "new"ed. Add free_value and use that for the hash table value
35809 dtor, and delete them correctly.
35811 * animation.h, animation.cpp: add a lot of the keyframe animation
35812 stuff. DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
35813 the only tested configuration, though.
35815 * clock.cpp (everywhere): guint64->TimeSpan fixing.
35816 (TimeUpdated): turns out that not only does the progress go from
35817 1.0 to 0.0 when reversed, but current_time actually goes backward
35818 as well. this has the nice effect of actually simplifying this
35819 method substantially, since we can always compute progress as
35822 * clock.h: typedef TimeSpan to gint64 (switching from guint64
35823 everywhere), and update the api to use this.
35825 2007-06-09 Miguel de Icaza <miguel@novell.com>
35827 * runtime.h (value_color_from_argb): Temporary hack until we
35828 figure out how to marshal Colors properly, we are using the uint32
35829 constructor, we should figure out if this is what we want, or if
35830 we should go down the route of using doubles (C++ stores thinks as
35831 Doubles our managed API as bytes).
35833 2007-06-10 Jackson Harper <jackson@ximian.com>
35835 * xaml.cpp: Handle the TransformGroup default collection.
35836 - Add Value's to the collection
35838 2007-06-09 Jackson Harper <jackson@ximian.com>
35840 * transform.cpp|h: C style constructor for TransformGroup
35841 * xaml.cpp: Implement loading transform groups and transform
35844 2007-06-09 Jackson Harper <jackson@ximian.com>
35848 * transform.cpp|h: Impplement transform groups and transform
35851 2007-06-09 Jackson Harper <jackson@ximian.com>
35854 * runtime.cpp|h: Use the new collection classes for triggers and
35855 actions. These are unsettable, so don't register them as
35856 DependencyProperties.
35858 2007-06-08 Everaldo Canuto <ecanuto@novell.com>
35860 * runtime.cpp: In surface_destroy check for toplevel before unref
35863 2007-06-08 Chris Toshok <toshok@ximian.com>
35865 * animation.h: remove the huge whitespace gap after KeyTime, and
35866 remove the ifdef'ed out Nullable<T> template.
35868 * animation.cpp: remove the unused point_animation C api, and use
35869 the overloaded + operator on Color and Point when initializing
35870 "end" in GetCurrentValue for those animations. They're looking
35871 more and more similar.
35873 2007-06-08 Chris Toshok <toshok@ximian.com>
35875 * globally: move away from all uses of Value::u union. switch
35876 everything to using Value::As* methods, which do typechecking and
35879 * value.h: make the union private to catch anyone accessing it
35882 * runtime.cpp (IsSubclassOf): return true if type == super. Not
35883 strictly "subclass", but it makes this method a little more
35884 useful/efficient. Add As* methods for string, point arrays, and
35885 double arrays, and add nullable As* methods for the types which
35886 don't return pointers already.
35888 2007-06-09 Jackson Harper <jackson@ximian.com>
35890 * xaml.cpp: Parse time spans correctly.
35892 2007-06-08 Miguel de Icaza <miguel@novell.com>
35894 * runtime.h (UIElement): Remove user_xform_origin as a field, now
35895 we pull this from the DependencyObject as it should be.
35897 * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
35898 other properties that would trigger an invalidate/bounds
35901 (item_init): initialize the other properties that the managed code
35904 * shape.cpp, ffvideo.cpp: updated to use the
35905 RenderTransformOriginProperty in the computation of the center for
35906 the transformation.
35908 2007-06-08 Chris Toshok <toshok@ximian.com>
35910 * Makefile.am (libmoon_la_SOURCES): add value.h
35912 * runtime.h, value.h: move the Value structure to value.h, since
35913 it (and its required forward decls) have grown huge.
35915 * runtime.cpp: add all the Value::As* methods, yay for CPP.
35917 2007-06-08 Jeffrey Stedfast <fejj@novell.com>
35919 * ffvideo.cpp (queue_data): Replaced the sound code with my newest
35920 implementation, seems to play sound correctly now.
35922 2007-06-08 Chris Toshok <toshok@ximian.com>
35924 * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
35925 stuff here, to help relieve some of the pressure building up in
35926 animation.h/animation.cpp.
35928 2007-06-08 Chris Toshok <toshok@ximian.com>
35930 * animation.cpp: add some skeleton code for point keyframe
35931 animations, and reduce all the Double/Point/Color Animation
35932 GetCurrentValue() methods to much the same, using LERP and the
35933 operators defined in runtime.h.
35935 * runtime.cpp (types_init): register the new keyframe types.
35937 * runtime.h: add some new animation types to Value, and add
35938 operators for +, -, and * (scalar) for Color and Point to make the
35939 animation code a little more concise.
35941 * animation.h: add some new classes/structs for use in keyframe
35944 2007-06-08 Miguel de Icaza <miguel@novell.com>
35946 * runtime.cpp, runtime.h (Collection): Rework the collection to
35947 use abstract methods (gulp),
35949 (VisualCollection): New collection, derives from Collection, does
35950 the collection thing.
35952 (Panel.OnPropertyChanged): If our children collection is updated,
35953 take care of it here.
35955 (DependencyObject): use free instead of g_free as we are
35956 allocating strings with strdup.
35958 (Value): drop constructor that specified type, type is not part of
35961 * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
35962 track of types correctly.
35964 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
35966 * brush.cpp: Fix color formats argb and rgb (too dark).
35968 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
35970 * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
35971 in the integer ranges, and change Type's type hashtable to an array
35972 of types, indexed by Value::Kind. Also add Value::COLLECTION and
35973 update Collection to use it.
35975 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
35977 * shape.cpp|h: Add Path::CanFill as it depends on the Geometry
35978 object(s) being used.
35979 * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
35980 Points properties and some basic draw stuff too.
35982 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
35984 * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
35985 Remove the Value (DependencyObject, Kind) constructor,
35986 the type of the DependencyObject can be obtained directly
35987 from the DependencyObject itself now, and update all uses
35988 to the Value (DependencyObject) constructor.
35990 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
35992 * *.h, *.cpp: Remove objectType and SetObjectType from
35993 DependencyObject, make DependencyObject::GetObjectType virtual,
35994 and update all inheritors of DependencyObject to not use
35995 SetObjectType, but override GetObjectType.
35997 2007-06-08 Jackson Harper <jackson@ximian.com>
35999 * xaml.cpp: Add some type checks to ensure we are setting child
36000 properties to legal types.
36001 - explicitly set properties value types, Value now requires this.
36004 2007-06-08 Jackson Harper <jackson@ximian.com>
36006 * runtime.cpp: Initialize the surface to NULL
36007 - use UIElement as the type for flags
36009 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36011 * shape.h: Don't waste time trying to fill lines.
36012 * shape.cpp: Fix dashes support. First reset between shapes and,
36013 second, handle cairo dislike of a single dash value of 0.0.
36015 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36017 * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
36019 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36021 * shape.cpp|h: Implement Polygon::Points aad Polyline:Points
36022 properties as DependencyProperty. Adjust their Draw methods.
36023 * runtime.cpp: Implement point_array_from_str.
36025 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36027 * shape.cpp|h: Add DP support for StrokeDashArray (double*).
36028 * runtime.cpp|h: Add double* and Point* (array) support to Value.
36029 * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value
36030 kind for brushes to avoid runtime warnings.
36032 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
36034 * runtime.cpp, runtime.h: Implemented a type system that tracks
36035 types' name and parent type.
36037 2007-06-08 Miguel de Icaza <miguel@novell.com>
36039 * runtime.cpp (Panel): Make children a property of the panel so we
36040 can access it from the managed world.
36042 (Value): Add new constructor that takes a full type, need to
36043 discuss this with the team.
36045 2007-06-08 Jackson Harper <jackson@ximian.com>
36047 * animation.cpp|h: Implement BeginStoryboard
36048 * runtime.cpp|h: Implement event triggers
36049 - Fire a loaded event when we first render an element
36050 * xaml.cpp: Implement parsing and loading storyboard and begin
36051 storyboard as well as event triggers and some of the property
36052 types that go with these guys.
36054 2007-06-08 Miguel de Icaza <miguel@novell.com>
36056 * runtime.cpp (runtime_init): Add panel_init
36058 (panel_init): Register Children property (must still create the
36059 collections, that will be a new fight).
36061 2007-06-07 Miguel de Icaza <miguel@novell.com>
36063 * xaml.cpp (start_element_handler): For the top element, track the
36064 type that we loaded, so we can return this to our caller (needed
36065 for the managed interface).
36067 (XamlParserInfo): track also the Value::Kind of the top_element.
36069 (xaml_create_from_file, xaml_create_from_str): Both now can
36070 optionally return the type of the toplevel element.
36072 * runtime.cpp (Value): Switch Value to strdup/free.
36074 Use inited to prevent multiple initializations.
36076 2007-06-07 Chris Toshok <toshok@ximian.com>
36078 * demo.cpp (main): track more of the api axing.
36080 * animation.h, animation.cpp (Storyboard::Begin): return
36081 immediately if we've already got a root clock.
36082 (globally) continue axing unused C api.
36084 2007-06-07 Chris Toshok <toshok@ximian.com>
36086 * demo.cpp: track all the animation changes away from the C api,
36087 and also test out the from/by animation combination by making the
36088 X scaling only go From 1.0 By -0.5 (so it animates in the range of
36091 * animation.h, animation.cpp: lots of changes - get rid of many of
36092 the animation/timeline C api calls, since they're unnecessary for
36093 the binding. Implement the nullable property getter/setters as
36094 #defines since I didn't want to c&p all of them and make the
36095 obvious mistakes. While I'm at it, implement the thing I needed
36096 nullable typed values for - "by" animation support. Now you can
36097 specify any of the following combinations and get a usable
36098 animation: From+By, From+To, By, To. You can actually just put
36099 From as well, but it won't animate (since both start end end will
36100 be the same). The To property overrides the By property, if both
36103 * runtime.h, runtime.cpp: add an overload of
36104 DependencyProperty::SetValue which takes a Value*, to enable
36105 nullable types to be set. the existing SetValue method calls the
36106 new one with &value.
36108 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36110 * brush.cpp: Fix comment.
36111 * shape.cpp: Reduce duplication.
36113 2007-06-07 Miguel de Icaza <miguel@novell.com>
36115 * runtime.h: Store Value.BOOL in an int32, simplifies my life.
36117 * runtime.cpp (dependency_object_set_value,
36118 dependency_object_get_value): Add C# callable method calls to
36119 control the properties.
36121 (dependency_property_lookup): Add a way of find dependency
36124 2007-06-07 Chris Toshok <toshok@ximian.com>
36126 * animation.cpp (TimeUpdated): comment out some spew.
36128 * runtime.cpp (SetValue): use the copy ctor, and fix != check for
36129 current_value and value.
36130 (Value::Value): add a copy ctor, which takes care of the g_strdup
36133 * runtime.h: add copy ctor for Value.
36135 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36137 * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
36139 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36141 * geometry.cpp: #if-out transforms, it crash the xaml samples
36142 * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
36144 2007-06-07 Chris Toshok <toshok@ximian.com>
36146 * animation.cpp: switch all the various linear interpolation
36147 expressions to using the LERP macro, and add the PointAnimation
36150 * animation.h: add PointAnimation.
36152 * runtime.h: add Value::POINTANIMATION.
36154 2007-06-07 Chris Toshok <toshok@ximian.com>
36156 * runtime.h (Value): add COLORANIMATION to the list of types.
36157 Also, add a Kind constructor so we can use that for nullable type
36158 default values in the ::RegisterProperty calls. That is,
36159 initializing the default to Value(Value::COLOR) gives you a null
36160 default value with the COLOR type.
36162 * runtime.cpp (Value): new Kind ctor.
36164 * animation.cpp/.h: add ColorAnimation.
36166 * demo.cpp (main): add a color animation that interpolates between
36167 Red and Blue for the SolidColorBrush.
36169 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36171 * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
36172 without a cairo_save|restore pair (or without resetting it's original
36173 value). Anyway right now it works without any of that :)
36175 2007-06-07 Jackson Harper <jackson@ximian.com>
36177 * runtime.cpp|h: add event triggers.
36178 * xaml.cpp: parse event triggers.
36180 2007-06-07 Chris Toshok <toshok@ximian.com>
36182 * animation.cpp/.h (Clock): initialize duration here.
36183 (TimeUpdated): instead of getting it every time through this
36186 2007-06-07 Chris Toshok <toshok@ximian.com>
36188 * animation.h: make Duration::FromSeconds return numbers of the
36189 same magnitude as get_now().
36191 * animation.cpp (Clock): fix UMR.
36193 2007-06-07 Jackson Harper <jackson@ximian.com>
36195 * xamp.cpp: Oops, not sure how that happened. Set the property
36196 name correctly, not to the type name.
36198 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36200 * geometry.cpp|h: Apply transform. Fix default values.
36202 2007-06-07 Miguel de Icaza <miguel@novell.com>
36204 * animation.cpp (get_now): The time computation was wrong, there
36205 was an extra "10" in there that made all computations go astray
36206 and in particular cause the large values for ScaleY, which made
36207 getboundingbox ridiculously slow.
36209 For debugging purposes: ScaleY was being set to
36210 131472940552.95215, which came from
36211 DoubleAnimation:GetCurrentValue which was computing this value
36212 from a busted clock.
36214 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36216 * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
36217 Add basic code for the other geometry types.
36218 * runtime.cpp|h: Add basic implementation for point_from_str and
36220 * shape.h: Export some cairo helpers.
36221 * shape.cpp: Refactor drawing to reuse the code from geometry.
36222 * xaml.cpp: Add Point and Rect parsing.
36224 2007-06-07 Chris Toshok <toshok@ximian.com>
36226 * demo.cpp: make all the animation stuff work declaratively, and
36227 test some of the different repeatbehavior and autoreverse
36230 * animation.cpp: huge block of nasty code to determine our
36231 progress given the combinations of autoreverse and repeatbehavior.
36233 * animation.h: Add Duration stucture, add a few C api calls for
36234 getting/setting timeline properties.
36236 * runtime.h, runtime.cpp: add DURATION support to Value.
36238 2007-06-07 Jackson Harper <jackson@ximian.com>
36240 * runtime.cpp|h: Some pieces of the triggers framework.
36242 2007-06-07 Jackson Harper <jackson@ximian.com>
36244 * xaml.cpp: Handle repeat behaviors, lookup attached properties.
36246 2007-06-06 Chris Toshok <toshok@ximian.com>
36248 * animation.cpp, animation.h: add timeline_set_autoreverse.
36250 2007-06-06 Chris Toshok <toshok@ximian.com>
36252 * animation.h: add prototype for timeline_set_repeat_behavior.
36254 * animation.cpp (animation_init): register the RepeatBehavior
36256 (timeline_set_repeat_behavior): new function.
36258 * runtime.h: a better solution to enforcing types in the Value
36259 ctors - make Value (void*) private. this gives compilation errors
36260 at all usage points where you're passing an unrecognized pointer
36261 type. Also, add RepeatBehavior support to Value.
36263 * runtime.cpp: add repeatbehavior support to Value.
36265 * geometry.cpp: change all Value(pointer-to-struct) calls to
36266 Value(struct) calls.
36268 * transform.h: we need do define TransformGroup as a subclass of
36269 Transform, or the functions that SetValue a transformgroup fail to
36270 compile (since it's not a descendent of DependencyObject.)
36272 2007-06-07 Jackson Harper <jackson@ximian.com>
36274 * xaml.cpp: Get object element property setting working.
36276 2007-06-06 Chris Toshok <toshok@ximian.com>
36278 * runtime.h, runtime.cpp: add a special void* ctor to value so
36279 pointers aren't silently converted to bool (bad c++, bad!), and
36280 have that ctor output a warning message to the console, along with
36283 * brush.cpp: need to deref the Color* in the Value ctor.
36285 2007-06-06 Chris Toshok <toshok@ximian.com>
36287 * animation.cpp: new dump of the animation stuff. this is much
36288 closer in spirit and implementation to that of WPF's
36289 timing/animation system. it's not perfect yet, but it's much,
36292 2007-06-06 Chris Toshok <toshok@ximian.com>
36294 * runtime.h: make the point/color/rect copy constructors take a
36295 ref, not a pointer. also, make the value contructors for struct
36298 * runtime.cpp: make the value constructors for struct types
36301 * brush.cpp (brush_init): pass the Color by value.
36303 2007-06-06 Chris Toshok <toshok@ximian.com>
36305 * runtime.h, runtime.cpp: move the Value implementation (for
36306 everything but the operators) to the .cpp file.
36308 2007-06-06 Miguel de Icaza <miguel@novell.com>
36310 * runtime.h, runtime.cpp: Surface is no longer derived from
36311 Canvas, it now instead hosts a canvas, should avoid having two
36312 nested canvases for loading XAML files.
36316 Correct computation of the bounding box for shapes and videos.
36318 * shape.cpp: Do not pop the cairo state after draw and then call
36319 extents as the computation on extents is done with the current
36320 cairo context, not the cairo context that drew the data before
36321 popping (this would show up with thick brushes).
36323 * runtime.cpp: Add 2 instead of 1, as double to integer rounding
36324 can take two values (negative and positive).
36326 * cutil.cpp: Cut and paste cairo code here, it computes the proper
36327 bounding box from the extents using the current absolute matrix.
36329 * ffvideo.cpp (queue_data): Memory leak gone.
36331 2007-06-06 Jackson Harper <jackson@ximian.com>
36333 * xaml.cpp: Set brush attributes.
36335 2007-06-06 Jackson Harper <jackson@ximian.com>
36338 * transform.h: Need to register this base DependencyObject for the
36340 * geometry.cpp: use correct value kind for registering properties
36341 * runtime.cpp: Don't be strict about the type with properties that
36342 derive from DependencyObject, we can't be too strict here, because
36343 of inheritance the registered type BRUSH could be set to
36345 - register some properties with the correct type
36347 2007-06-06 Jackson Harper <jackson@ximian.com>
36350 * runtime.h: Staring to add triggers
36351 * shape.cpp: Use brush as our property kind
36353 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36355 * runtime.h: Add new types and SweepDirection enum.
36356 * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and
36357 LineSegment classes and [g|s]etter functions.
36359 2007-06-06 Miguel de Icaza <miguel@novell.com>
36361 * runtime.h: Move all the types into the Value::Kind enumeration
36362 so that we can have a shared type system.
36364 * demo.cpp (main): Allow loading a XAML file from the command
36365 line, for your testing pleasure.
36367 * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
36370 Move to cairo to render to the screen the contents
36371 of the buffer. ffmpeg and cairo do have the same RGBA format, it
36372 was actually the copy from this format to the screen using
36373 gdk_draw_pixbuf that failed: pixbuf expected the data in another
36374 format and there is no way to configure it.
36376 * runtime.cpp (surface_clear): use the cairo api as the surface is
36377 no longer living on the client buffer.
36379 (surface_destroy): update
36381 (create_xlib, realized_callback, unrealized_callback): When the
36382 widget is realized, create a cairo context
36384 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36386 * runtime.h: Add Value support for Point and Rect
36387 * geometry.cpp: Implement [g|s]etters for Point and Rect properties
36389 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
36391 * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
36393 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36395 * shape.cpp|h, runtime.cpp|h: Remove the (now) useless
36396 set_prop_from_str methods since everything they handled is now
36397 moved into DependencyProperty.
36399 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36401 * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke
36402 brushes. Add getter functions for fill and stroke.
36404 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36406 * runtime.h: Call SetObjectType on Brush and SolidColorBrush
36408 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
36410 * runtime.cpp, runtime.h: Remove the default_values hashtable
36411 from DependencyObject, it's redundant since the default value
36412 is stored inside the DependencyProperty anyway.
36414 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36416 * demo.cpp: Adapted to API changes.
36417 * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
36418 DependencyProperty. Add brush initialization code.
36419 * runtime.cpp|h: Change Brush to inherit from DependencyObject.
36420 Add Color support to Value. Call brush initialization.
36421 * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
36422 * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
36423 from DependencyObject.
36425 2007-06-06 Jeffrey Stedfast <fejj@gnome.org>
36427 * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
36428 non-NULL before trying to scale.
36430 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
36432 * brush.cpp: Fix compiler warning.
36434 2007-06-06 Jackson Harper <jackson@ximian.com>
36436 * runtime.cpp/h: initialize xaml
36437 - Add canvas C style constructor
36438 - Make SolidColorBrush's Color public
36439 * shape.cpp: Comment out the set_prop... stuff, this code won't be
36440 used anymore, now that the xaml parser is using dependency objects
36443 * transform.cpp|h: Add some C style constructors
36444 * brush.cpp: Create colors from a string instead of solid brushes
36445 * xaml.cpp: Add in a known element tree, and move property setting
36446 into the xaml code, also added code for setting properties with
36447 property element syntax
36449 2007-06-05 Miguel de Icaza <miguel@novell.com>
36451 Add type checking on SetValue, RegisterProperty to avoid
36454 * runtime.cpp (SetValue): Add simple type checking
36455 (Register): Ensure that no empty values are passed.
36457 * runtime.h (DependencyObject): events, remove unused field.
36459 2007-06-05 Chris Toshok <toshok@ximian.com>
36461 * runtime.cpp: we need to maintain another hash table for
36462 DependencyProperties so we can return the actual property, not the
36463 default value, which is what GetDependencyProperty needs to do.
36464 (DependencyObject::FindName): implement this by either trying to
36465 use the namescope on this object or the global_NameScope (rather
36466 suboptimal, it's supposed to 'walk the logical tree' according to
36469 partially implement NameScope.
36471 * runtime.h: add NameScope, and add a uint64 Value. Also add
36472 FindName on DependencyObject.
36474 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36476 * shape.cpp|h: Add Shape's thickness and some dash support. Add more
36477 [g|s]etters for Shape using DependencyProperty.
36478 * demo.cpp: Add thickness and dashes to the rectangles.
36480 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36482 * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
36483 functions to retrieve the height and width of shapes (values defined
36484 in FrameworkElement).
36485 * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height
36486 and Width properties.
36487 * demo.cpp: Adjust to API changes.
36489 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36491 * shape.cpp: Remove (now) useless properties in Line.
36493 2007-06-05 Miguel de Icaza <miguel@novell.com>
36495 * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
36496 now have an absolute affine set for us beforehand.
36498 * runtim.cpp: on update_xform call the parent ::get_xform_for to
36499 obtain the base affine transform to use.
36501 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36503 * geometry.cpp|h: Use DependencyProperty for properties.
36504 * transform.h: Protect.
36506 2007-06-05 Chris Toshok <toshok@ximian.com>
36508 * runtime.h: call SetObjectType where we need it.
36512 * geometry.h: same.
36514 2007-06-05 Miguel de Icaza <miguel@novell.com>
36516 * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
36519 * runtime.cpp (item_set_transform): This routine was doing nothing
36520 but doing an invalidate of the region, updating the transform,
36521 updating the bounding box and re-invalidating the new area. Move
36522 that logic elsewhere (it was also ignoring the affine parameter
36525 Unify user_xform with the RenderTransform dependency property, now
36526 we always have a static absolute transformation in the UIElement.
36528 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36530 * shape.cpp|h: Update shape_init with correct values and implement
36533 2007-06-05 Chris Toshok <toshok@ximian.com>
36535 * animation.cpp (ClockTimeChanged): use the instance variety of
36536 GetDependencyProperty.
36538 * runtime.cpp (GetDependencyProperty): just call the static
36539 variety with our objectType.
36540 (SetObjectType): method to enable subclasses to set the object
36543 * runtime.h: add DependencyObject::SetObjectType, as well as the
36544 instance version of DependencyObject::GetDependencyProperty.
36546 * transform.h: call SetObjectType to identify this object.
36548 2007-06-05 Chris Toshok <toshok@ximian.com>
36550 * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
36552 2007-06-05 Chris Toshok <toshok@ximian.com>
36554 * runtime.h (Canvas): declare our dependencyproperties here.
36556 * runtime.cpp (canvas_init): actually assign the properties.
36558 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
36560 * runtime.cpp, runtime.h: Implement a DependencyProperty::
36561 GetDependencyProperty.
36563 2007-06-05 Chris Toshok <toshok@ximian.com>
36565 * runtime.cpp (OnSubPropertyChanged): remove the event handler for
36566 the render transform and use OnSubPropertyChange instead.
36567 (item_set_render_transform): clean this up substantially - the
36568 property system handles all the "event" stuff now.
36569 (item_get_render_transform): we need a getter now that this uses
36571 (NotifyAttacheesOfPropertyChange): new method, call
36572 OnSubPropertyChanged with both the attachee's property (the thing
36573 storing 'this') and the subproperty that changed.
36574 (SetValue): complicate the attachee stuff a bit, since we need to
36575 store both the object and the property it's storing the value in.
36576 (item_init): initialize RenderTransformProperty.
36578 * runtime.h: make UIElement subclass from DependencyObject. This
36579 flattens the hierarchy some from SL (which has Visual in between,
36580 but we have no Visual.)
36582 * transform.cpp (OnPropertyChanged): call
36583 NotifyAttacheesOfPropertyChange. Also, reindent some stuff.
36585 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36587 * demo.cpp: Updated to use rectangle_set_radius_[x|y]
36588 * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
36589 * xaml.cpp: Updated for API change.
36591 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36593 * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
36594 from DependencyObject.
36595 * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
36597 2007-06-05 Jeffrey Stedfast <fejj@gnome.org>
36599 * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
36600 we simply cannot play sound (or maybe there is no sound), either
36601 way, don't try to dereference the audio_codec pointer if it is
36602 NULL. Also wrapped audio setup in an #ifdef
36604 2007-06-05 Miguel de Icaza <miguel@novell.com>
36606 Implement the OnPropertySet stuff, builds on Toshok's first pass.
36608 Next stage: discuss with Toshok the migration to this awesome
36609 framework from Events ;-)
36611 * runtime.cpp (SetValue): when adding dependencyobjects track on
36612 the attached object the ownership.
36614 Notify all containers of a property change.
36616 * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
36617 use the property notification system for these.
36619 * runtime.h (DependencyObject): Add a "attached_list" gslist to
36620 keep track of all the objects where this particular
36621 DependencyObject has been attached to, to provide OnPropertyChange
36622 notifications (not hooked up yet).
36624 (Value): Introduce DependencyObject constructor.
36626 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
36628 * shape.cpp|h: Started moving properties to DependencyObject. Added
36630 * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
36631 * runtime.cpp: Added calls to shape_init and geometry_init
36632 * runtime.h: Added Rect structure and new DependencyObject types for
36633 shapes and geometry.
36634 * Makefile.am: Added geometry.cpp|h to source files.
36636 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
36638 * runtime.h: initialize Value to zero on construction.
36640 2007-06-05 Chris Toshok <toshok@ximian.com>
36642 * demo.cpp: abstract the cairo transformations away by using
36643 RotateTransforms.. and this is probably going to annoy some
36644 people, but make the normally stationary elements bounce between
36645 smaller and larger.
36647 * animation.h: make Clock subclass from DependencyObject.
36649 * animation.cpp (animation_init): assign the properties, don't
36650 just call Register.
36652 also, track the EventObject method name change.
36654 * runtime.cpp (item_set_render_transform): new method. unhook the
36655 old transform and hook up the new one. also, explicit set our
36656 transformation here.
36657 (SetValue): make this only do the work (and more importantly only
36658 call OnPropertyChanged) if the value is different.
36660 * runtime.h: shorten the names of the EventObject methods. Add
36661 operator== and operator!= to Value. Add an EventObject to
36662 DependencyObject to give us rudimentary event handlers. Add the
36663 render_transform "higher-level" transform into to UIElement.
36665 * transform.h: add the OnPropertyChanged override and rename
36666 transform_get_value to transform_get_transform.
36668 * transform.cpp (transform_init): oops. we need to actually
36669 assign the properties.
36670 (transform_get_transform): indent.
36671 (OnPropertyChanged): override this method to emit
36672 "TransformChanged".
36674 2007-06-04 Chris Toshok <toshok@ximian.com>
36676 * Makefile.am (libmoon_la_SOURCES): add animation and transform to
36679 * runtime.h: flesh out Value some, adding BOOL (has to be C++
36680 bool, not gboolean, or else it conflicts with int32), INT32,
36681 INT64, and STRING (char*).
36683 * runtime.cpp (runtime_init): call animation_init and
36686 * animation.cpp, animation.h, transform.h, transform.cpp: get
36687 these using the new dependency object/value foo, and get them
36690 2007-06-04 Miguel de Icaza <miguel@novell.com>
36692 * runtime.h: Make the "Base" refcounting class the base for
36695 * ffvideo.cpp: Set audio initialization to zero for now, so we can
36696 continue debugging.
36698 * runtime.cpp (Canvas): override render, in preparation for using
36699 attached properties. I get the feeling am going to regret not
36700 keeping the top/left attached properties somewhere else.
36702 (Value): introduce the discriminating union for values as
36705 (DependencyObject): use lower case name for properties.
36706 Take Value * instead of void *, this is so we can represent NULL
36707 values (is this a good idea Chris, or do we want to have a
36708 Value.Type.NULL enumeration value?
36710 Update hash table creation to g_free the result on hash table
36711 update and removal.
36713 (Event): Update indentation to be Linux-like instead of GNU like.
36715 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
36717 * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions
36718 to create them. Replace the "old" C1 constant in Ellipse::Draw with
36719 ARC_TO_BEZIER (now that I know where it comes from ;-)
36721 2007-06-04 Jeffrey Stedfast <fejj@novell.com>
36723 * ffvideo.cpp (queue_data): Got sound kinda sorta working...
36725 2007-06-04 Jackson Harper <jackson@ximian.com>
36727 * xaml.cpp: Give elements a type
36729 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
36731 * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
36733 2007-06-04 Chris Toshok <toshok@ximian.com>
36735 * animation.h, animation.cpp: initial pass at some of the
36736 animation stuff. doesn't build yet.
36738 2007-06-04 Chris Toshok <toshok@ximian.com>
36740 * runtime.cpp, runtime.h: add EventObject, a c++ only base class
36741 for managing events.
36743 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
36745 * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
36746 and added Draw methods to Polygon and Polyline.
36747 * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
36748 and match changes in header file.
36750 2007-06-04 Jackson Harper <jackson@ximian.com>
36752 * shape.cpp/h: width and height are properties of the
36755 2007-06-04 Jackson Harper <jackson@ximian.com>
36757 * shape.cpp/h: add ellipse_new
36758 - set width/height on ellipses (ellipsi ?) and draw them.
36759 * xaml.cpp: create ellipses, get zorder correct
36761 2007-06-04 Jackson Harper <jackson@ximian.com>
36763 * xaml.cpp: put in character data functionality, eventually we
36764 will need to add FrameworkElement methods for setting the default
36765 content element. See
36766 http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
36767 for more info on content properties.
36769 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
36771 * demo.cpp: Include shape.h and use a rounded-rectangle
36772 * runtime.h: Added FillRule and moved out Shapes.
36773 * shape.h: New. Moved all shapes from runtime.h and added new ones.
36774 * shape.cpp: Added Polygon and Polyline.
36775 * xaml.cpp: Include shape.h
36776 * Makefile.am: Add shape.h
36778 2007-06-04 Chris Toshok <toshok@ximian.com>
36780 * transform.cpp, transform.h: initial code for the transform
36781 objects. doesn't compile yet.
36783 2007-06-04 Jackson Harper <jackson@ximian.com>
36785 * demo.cpp: fix typo
36787 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
36789 * demo.cpp: Fix for API changes.
36790 * runtime.h: Add FrameworkElement, other Shape properties and move
36791 around some properties to match the managed definitions.
36792 * shape.cpp: Add setters for new Shape properties and move properties
36793 parsing to match managed definitions.
36794 * xaml.cpp: Fix for API changes.
36796 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
36798 * shape.cpp: Don't typecast doubles into ints.
36800 2007-06-04 Jackson Harper <jackson@ximian.com>
36803 * xaml.cpp: Implement function that allows you to load xaml from a
36805 * demo.cpp: add a very small xaml demo
36807 2007-06-04 Jackson Harper <jackson@ximian.com>
36809 * xaml.cpp: remove old no longer used function.
36810 - track whether or not we are adding to a panel instead of surface
36811 * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
36813 2007-06-04 Jackson Harper <jackson@ximian.com>
36815 * shape.cpp: Add new methods to allow shapes to have their
36816 properties filled in from text values.
36818 * brush.cpp: Start work on allowing solid color brushes to be
36819 created from strings.
36821 * runtime.cpp: stub in methods for setting properties on canvas
36822 and UIElements (these had some meat but I am removing it now that
36823 some of the names are updated, will put back later).
36825 * runtime.h: add some methods and functions for XAML parsing.
36827 * xaml.cpp: Initial implementation of the XAML parser.
36829 2007-06-03 Miguel de Icaza <miguel@novell.com>
36831 * runtime.cpp (Collection, Panel): The beginning of an API to
36832 encapsulate collections that we will expose to the unmanaged
36835 This should be the backend for the base collection class in agclr
36836 for the strongly typed types.
36838 The idea is to have the MS.Internal.Collection<T> be a proxy that
36839 contains an IntPtr pointer to the C++ Collection instance and map
36840 the various add/remove methods to it.
36842 The immediate goal is to be able to do from C#:
36844 Rectangle r = new Rectangle ();
36845 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
36846 Canvas.Children.Add (r);
36848 2007-06-02 Miguel de Icaza <miguel@novell.com>
36850 Implement support for the render origin.
36852 * runtime.cpp (item_invalidate): add one to cope with the rouding
36853 from floats to ints (fixes some trailing junk).
36855 Item: redo the affine transformation setup to support both the
36856 render_transform_origin property and avoid recomputing all of this
36857 on each repaint request.
36859 * ffvideo.cpp: Changed the code to do the actual video decoding on
36860 the main thread so we can put all the video and audio in the
36861 queues before we start rendering.
36863 Failed attempts at getting audio to work.
36865 * Everywhere: renamed Item to UIElement to better match the actual
36866 class hierarchy that we will be exposing.
36868 2007-06-01 Jackson Harper <jackson@ximian.com>
36870 * shape.cpp: Fix typo.
36872 2007-06-01 Miguel de Icaza <miguel@novell.com>
36874 * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
36875 notify a special function (callback_video_inited). Makes me
36876 wonder if I should do the same for the new-frame call
36878 Initialize the cairo surface on the callback_video_inited routine
36879 instead of doing this on the decoder thread (that was a mistake).
36881 This solves the misterious case of the video that randomly did not
36884 2007-05-29 Miguel de Icaza <miguel@novell.com>
36886 * video.cpp (load_next_frame): reimplement the video play back
36887 logic so that it will now properly paint the proper frame on the
36890 Add logic to skip frames if video is playing back too slowly, and
36891 to resume playback when new frames are ready.
36893 Currently its computing the delay using the n_frame_rate field
36894 (which no sample uses, but I could not find any other way of
36895 estimating the frame rate other than this.
36897 It works at least with some sample streams that I have with 30 fps
36900 * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
36901 and handle exposes in the runtime, not in the demo. Show the
36902 widget (thats why I was not getting the expose events on the
36905 2007-05-26 Miguel de Icaza <miguel@novell.com>
36907 * runtime.cpp (Brush, SolidBrush): Introduce brushes.
36909 (Shape): introduce reusable drawing framework for shapes, not
36912 (Line): introduce second user besides rectangles.
36914 Remove agg test code.
36916 (Group::getbounds): implement.