1 2009-11-09 Chris Toshok <toshok@ximian.com>
3 * uielement.h (class UIElement): mark the Key a MouseLeftButton
4 events as GenerateManagedEventField=true.
8 2009-11-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
16 * frameworkelement.cpp:
17 * deepzoomimagetilesource.cpp: Fix compiler warnings.
21 2009-11-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
23 * dependencyobject.cpp: Initialize variables to null to silence compiler
24 warnings in release builds.
28 2009-11-08 Chris Toshok <toshok@ximian.com>
30 * deployment.h|cpp: stub out some OutOfBrowser classes.
34 2009-11-08 Chris Toshok <toshok@ximian.com>
36 * effect.h|cpp: stub out SL3 effects classes.
40 2009-11-08 Larry Ewing <lewing@novell.com>
42 * incomplete-support.xaml: make things a little prettier by adding
43 margins and max width.
45 2009-11-08 Chris Toshok <toshok@ximian.com>
47 * Makefile.am (runtime.lo): be explicit about dependencies on
48 fullscreen.h and incompletely-support.h so we won't get screwed by
49 build-time dependencies.
53 2009-11-08 Chris Toshok <toshok@ximian.com>
55 * runtime.h|cpp (Surface::Attach): if we're running > SL2, call
56 ShowIncompleteSilverlightSupportMessage.
57 (Surface::ShowIncompleteSilverlightSupportMessage): show our
58 incomplete support message. as an optimization, hook up to
59 Completed on the storyboard to remove the layer when the
60 storyboard is finished.
61 (Surface::HideIncompleteSilverlightSupportMessage): detach the
63 (Surface::ShowFullScreenMessage): use the same optimization of
64 removing the layer when the storyboard completes.
66 * Makefile.am (noinst_PROGRAMS): add xaml-to-header.exe here.
67 (libmoon_include_headers): add deepzoomimagetilesource.h and
68 multiscalesubimage.h here and remove them from EXTRA_DIST. also,
69 remove fullscreen.h entirely since we generate it at build time.
70 (EXTRA_DIST): add fullscreen.xaml and incomplete-support.xaml
71 here, as well as xaml-to-header.cs.
73 * incomplete-support.xaml: new xaml file for our incomplete
76 * fullscreen.xaml: move fullscreen.xaml here.
78 * xaml-to-header.cs: move fullscreen/fullscreen.cs here and
79 massage it to make it reusable for the incomplete-support.xaml
84 2009-11-07 Geoff Norton <gnorton@novell.com>
86 * deployment.cpp: Support connecting to sdb when built in debug
89 2009-11-06 Chris Toshok <toshok@ximian.com>
91 * uielement.h|cpp (UIElement::ElementAdded): simplify this a bit
92 using WalkTreeForLoadedHandlers.
93 (UIElement::RemoveHandler): pass the removal on to the deployment
95 (UIElement::WalkTreeForLoadedHandlers): here there be dragons.
96 (UIElement::OnLoaded): this method does nothing but update the
98 (UIElement::ClearLoaded): we also need to
99 ClearForeachGeneration (UIElement::LoadedEvent) so they'll be
100 copied again when we get added back to the tree.
102 * provider.cpp (InheritedPropertyValueProvider::PropagateInheritedProperty):
103 use Logical tree walk ordering.
105 * tabnavigationwalker.cpp (TabNavigationWalker::Sort): same.
107 * panel.cpp (Panel::OnPropertyChanged): we have to call
108 SetSubtreeObject before calling ElementAdded.
110 * frameworkelement.h|cpp (FrameworkElement::UpdateLayout): remove
111 the block of code that emits the LoadedEvent.
112 (FrameworkElement::RegisterManagedOverrides): add our loaded hook
114 (FrameworkElement::OnLoaded): call our loaded hook.
116 * deployment.h|cpp (class Deployment): a whole bunch of new code
117 to handle management of a list of loaded handlers similar in
118 spirit to LayoutUpdated but much more complicated. bleah.
120 * dependencyobject.h|cpp: a whole bunch of new apis:
121 (ForeachHandler): call a method for every handler for a given
122 event. Optionally only iterate over handlers added since the last
123 time ForeachHandler was called.
124 (ClearForeachGeneration): clears the "last time ForeachHandler was
126 (ForHandler): same as foreach, invoke the same type of handler
127 method, but only on 1 event handler.
128 (HasHandlers): returns true if the object has handlers for a
130 (RemoveHandler): make these virtual because UIElement will
131 override them to remove handlers from the Deployment's loaded
134 * control.cpp (Control::DoApplyTemplate): since we do it after
135 ElementAdded, calling WalkTreeForLoadedHandlers here causes
136 another treewalk, but we need to pass different args to it than
139 * collection.h (enum VisualTreeWalkerDirection): add
142 * collection.h|cpp (class DeepTreeWalker): add a
143 VisualTreeWalkerDirection to this walker as well.
145 * border.cpp (Border::OnPropertyChanged): we have to make sure to
146 call SetSubtreeObject before calling ElementAdded.
148 2009-11-06 Alan McGovern <amcgovern@novell.com>
150 * grid.cpp: There's no need to expand star rows/cols at this
151 point as any time they would expand here, they would be
152 expanded in ArrangeOverride anyway. r: spouliot
154 2009-11-05 Jeffrey Stedfast <fejj@novell.com>
156 * brush.cpp (ImageBrush::OnPropertyChanged): Check that the Source
157 uri is valid and the download policy will allow it.
159 * media.cpp (Image::OnPropertyChanged): Check that the Source uri
160 is valid and the download policy will allow it.
162 * mediaelement.cpp (OnPropertyChanged): Check that the Source uri
163 is valid and the download policy will allow it.
165 * glyphs.cpp (DownloadFont): Now takes a MoonError argument so
166 that (late) download policy errors (caused by a failed
167 Downloader::Open) can propogate up through callers like
168 OnPropertyChanged() or SetParent().
169 (SetParent): Moved here from from SetSurface() so that we can
170 throw an exception when ading the glyphs to the tree if the
172 (OnPropertyChanged): Set the MoonError if the uri is invalid.
174 * bitmapimage.cpp (ValidateDownloadPolicy): New method to check if
175 the uri can be downloaded.
176 (OnPropertyChanged): Check if the Source uri is invalid. If so,
179 * downloader.cpp (ValidateDownloadPolicy): New static method to
180 check that the policy would allow downloading the content at the
181 uri. Split out from Open().
183 * uri.h (IsInvalidPath): New method to check the validity of the
184 path component of a URI.
185 (IsUncPath): New method that returns true if the path begins with \\
189 2009-11-05 Alan McGovern <amcgovern@novell.com>
196 * frameworkelement.h:
197 * contentcontrol.cpp:
198 * frameworkelement.cpp: Templates must be expanded as part of
199 the first step of Measure. To support this, remove the old
200 ApplyTemplateHook managed path and refactor the
201 GetTemplateRoot managed path into a more generic
202 GetDefaultTemplate method. Whenever native code needs to get
203 a default template from managed, this is invoked to retrieve
204 it. ApplyTemplate and OnApplyTemplate have been moved to
205 FrameworkElement itself to simplify the code required to
206 support templateable framework elements (ItemsPresenter for
210 * cbinding.cpp: regen. r: toshok
212 2009-11-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
214 * dependencyproperty.cpp: Fix an uninitialized variable problem.
218 2009-11-05 Jackson Harper <jackson@ximian.com>
220 * playlist.cpp: After we successfully fixup an error we need to
221 reset the error args otherwise the error will be raised when the
222 parsing is all done. Fixes 96x.fm.
226 2009-11-04 Sebastien Pouliot <sebastien@ximian.com>
228 * list.cpp: Remove unused (even in test) code.
229 * tabnavigationwalker.cpp: Complete int/uint fix.
233 2009-11-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
240 * tabnavigationwalker.cpp: Fix warnings when building release builds.
244 2009-11-04 Alan McGovern <amcgovern@novell.com>
249 * control.cpp: 1) Disabling the ComboBox should set
250 IsDropDownOpen to false
251 2) If the dropdown is opened while the ComboBox is disabled,
252 the children of the popup are disabled.
253 3) If the dropdown is open, re-enabling the ComboBox doesn't
254 close the dropdown and also doesn't update the IsEnabled
255 state on the children.
258 2009-11-03 Jackson Harper <jackson@ximian.com>
260 * xaml.cpp: Dont force setting a property in managed if it was
261 registered by a base type.
265 2009-10-29 Chris Toshok <toshok@ximian.com>
267 * messagebox.cpp (message_box_show): don't use
268 gtk_message_dialog_new with user strings, since they might contain
273 2009-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
275 * pipeline.cpp: If we can't seek, reset the 'seeking' flag to false.
279 2009-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
281 * deployment.cpp: Fix typo in return statement.
285 2009-11-03 Alan McGovern <amcgovern@novell.com>
288 * grid.cpp: Rewrite Grid so that it passes the correct sizes
289 to elements spanning Star or Auto segments. Fixes
290 tic-tac-toe. r: lewing
292 2009-11-02 Alan McGovern <amcgovern@novell.com>
297 * frameworkelement.h:
298 * frameworkelement.cpp: Certain UIElements (Controls and
299 ContentPresenters) need to apply a template before
300 MeasureOverride is invoked. Add a callback
301 (ApplyTemplateHook) to FrameworkElement which is non-null
302 for Controls and ContentPresenters to that these templates
303 can be expanded properly. r: rolf
305 * cbinding.cpp: regen. r: rolf
307 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
309 * pipeline.h: Remove dead code.
313 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
315 * pipeline.cpp|h: ProgressiveSource: close the write handle in the dtor
316 to avoid race conditions - media thread closing the handle and main
321 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
323 * mms-downloader.cpp: When sending logs, use NoPolicy. We've already
324 checked if we can access the server or not. Using StreamingPolicy is
325 wrong now that we create mms downloaders for those always. Also
330 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
333 * enums.h|cpp: Remove MediaStateError, it's not used in SL2. Whenever
334 an error occurs we go to the Closed state.
338 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
340 * mms-downloader.cpp: Accept rtsp[s] schemes too.
342 * downloader.cpp: determine mms'ness by using the policy passed in
343 instead of comparing schemes (differently in other places - the
344 pipeline considers rtsp and rtsps schemes too as streaming).
348 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
350 * pipeline-asf.cpp: When we got a packet from the mms downloader, ask
351 the demuxer to fill its buffers. This fixes some cases where the mms
352 stream never finishes buffering. Added GetDemuxerReffed.
356 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
358 * pipeline.cpp: Don't completely stop working when the media is
359 stopped, the media element needs the first frame of the media, so
360 when stopped, buffer 1 frame instead of 0. Makes MS DRT #483 pass.
362 2009-10-29 Alan McGovern <amcgovern@novell.com>
364 * grid.cpp: Grid should not invalidate its measure unless
365 either the Columns or Rows collection changes. This reverts
366 what looks like an accidental commit by lewing in r123309.
369 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
371 * mediaelement.cpp: If we Seek when Paused, we need to update
372 paused_position. Fixes one error in MS DRT #483.
376 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
378 * pipeline.cpp: Media::SelectDemuxerAsync: seek to 0 on the source
379 before searching for a demuxer. Makes #546241 play all the audio it
384 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
386 * pipeline.cpp: Include signal.h.
390 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
392 * mediaelement.cpp: OpenCompletedHandler: only emit
393 DownloadProgressChanged if MediaOpened hasn't been raised. This fixes
394 MS DRT #25 (which checks that DownloadProgressChanged isn't raised
395 after calling Stop and then Play on a media element).
399 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
401 * pipeline.cpp: When we enter a new thread, ensure that we don't
402 inherit blocked signals from the thread that created us. Fixes deadlock
407 2009-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
409 * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
410 seeking or not, keep a counter, since we may end up with multiple
411 pending seeks, and we only want to restart playback when the last seek
412 finishes. Also call MediaElement's seek method so that we do everything
413 we must do when a seek happens. Fixes our media test #153.
415 * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
416 matter which state we're in. Used by MediaPlayer to seek when we open
419 * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
420 the first thing we do after opening a media is seeking, which would
421 invalidate whatever buffer we create. When the first seek has finished,
422 it will request a buffer fill. Also remove the optimization that was
423 joining multiple seeks into one (the last one), since there was no way
424 MediaPlayer could know which seek finished when the SeekCompleted event
425 was raised. We now do all seeks, in the correct order.
427 * playlist.cpp|h: Remove the same optimization here, have a list of pending
428 seeks and execute them in order.
432 2009-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
434 * pipeline.cpp: Add a workaround for having invalid codecs in the
435 expected codec location - with this workaround the user will get
436 a new codec download dialog.
440 2009-10-26 Sebastien Pouliot <sebastien@ximian.com>
442 * deployment.cpp: Match SL appdomain friendly name
446 2009-10-23 Chris Toshok <toshok@ximian.com>
448 * runtime.cpp (Surface::IsVersionSupported): report that we
449 support versions 3.0.x, because the alternative is not even
450 attempting to execute many xaps.
454 2009-10-23 Chris Toshok <toshok@ximian.com>
456 * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
457 Deployment::GetCurrent()->LayoutUpdated() instead of walking an
460 * frameworkelement.h (class FrameworkElement): remove
463 * deployment.h,cpp (Deployment::LayoutUpdated): move the
464 FrameworkElement event here, since any layout updating causes
465 every LayoutUpdated handler to be called, even for those elements
468 * type-generated.cpp: regen
472 2009-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
474 * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
475 a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
476 specify false for this (which won't prevent SL from trying to seek on
477 the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
479 * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
483 2009-10-23 Stephane Delcroix <sdelcroix@novell.com>
485 * uri.cpp (flatten_path): keep track of ../ parts if there's no
486 previous part to drop, or if the previous part is ../ too.
490 2009-10-23 Stephane Delcroix <sdelcroix@novell.com>
492 * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
493 required with jeff's latest patch
497 2009-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
499 * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
503 2009-10-22 Jeffrey Stedfast <fejj@novell.com>
505 * uri.cpp (flatten_path): New helper function to flatten a path
506 (e.g. get rid of extra /'s, ./'s, and handle ../'s).
507 (Parse): If the Uri is absolute, flatten the path.
508 (Combine): Simplified by just concatenating the old path, the
509 relative_path, and then calling flatten_path(). Also, thanks to
510 Stephane's investigations, fixed the fact that a relative_path
511 starting with '/' does not combine at the root like previously
516 2009-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
518 * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
519 that we can allow DestroyedEvent during shutdown. This fixes a crash
520 with namescopes - they rely on DestroyedEVent to properly detach from
525 2009-10-21 Stephane Delcroix <sdelcroix@novell.com>
527 * uri.cpp: url_encode the whitespaces too,
531 2009-10-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
533 * pipeline-ui.cpp: Include stdlib.h to fix release builds.
537 2009-10-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
539 * pipeline.cpp: GetMediaReffed might return null, add some null checks
544 2009-10-20 Andreia Gaita <avidigal@novell.com>
546 * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
547 calls. If it's called while we're in the emitting loop, save the new
548 ones on another list so they'll get invoked on the next tick. All other
549 tick calls added via AddTickCall get invoked asap.
551 * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
552 nodes to an existing queue instead of creating a new one
554 * cbinding.[h|cpp]: regen
558 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
560 * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
561 pending_stream field if we're stopped or if we processed the returned
562 frame. Specifically do not clear the pending_stream field if we're
563 not executing on a media thread (since when the method is called again on
564 the media thread we might end up dropping the frame) - and it's a race
565 condition that may cause crashes.
569 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
571 * runtime.cpp|h: Add a DetachWindow which detaches the surface from
572 the window and prevents the window from getting destroyed when the
573 surface is destroyed. Also add a few protections against having a
574 null window, which we may get when the window has been detached.
578 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
582 * type.h.in: Added a LookupEvent method that takes a deployment
583 parameter so that it doesn't try to use Deployment::GetCurrent. This
584 is required when we need to lookup events for deployments which are
585 not the current one (when re-creating a PluginInstance since its
586 source has changed for instance).
590 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
593 * window.cpp|h: Detach the window from the deployment by not storing it,
594 use Surface' deployment instead. Also add a convenience SetCurrentDeployment
606 * dependencyproperty.cpp: Include deployment.h, required now that
607 window.h doesn't include it.
610 * Makefile.am: Updated with window.cpp.
614 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
616 * deployment.cpp|h: Moved all managed code handling from PluginInstance
621 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
623 * codec-version.h.in: Bump ABI to 16.
625 2009-10-19 Andreia Gaita <avidigal@novell.com>
627 * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
628 clearing the original
630 * timemanager.cpp: Make a copy of the queued tick calls and use that
631 instead of the live queue. Callbacks may insert new calls into the
632 queue, and those should be invoked on the next tick, not on the
633 current one. Fixes drt #244
637 2009-10-19 Andreia Gaita <avidigal@novell.com>
639 * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
643 2009-10-15 Alan McGovern <amcgovern@novell.com>
645 * grid.cpp: Add comment explaining why the InvalidateMeasure
648 2009-10-15 Alan McGovern <amcgovern@novell.com>
650 * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
651 UIElement invalidates its measure. r: lewing.
653 2009-10-15 Stephane Delcroix <sdelcroix@novell.com>
655 * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
656 Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
660 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
665 * type-generated.cpp: Regenerated.
669 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
671 * pipeline.cpp: A printf sneaked in.
675 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
693 * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
697 2009-10-14 Andreia Gaita <avidigal@novell.com>
699 * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
700 they're stopped and not restarted on the same tick
704 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
707 * pipeline-asf.cpp: Updated according to API changes.
709 * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
710 do nothing in that case. This way we don't hit the warning just below
711 about not being in the media thread.
713 MediaThreadPool::IsThreadPoolThread: Return the value we calculated,
714 not a hardcoded 'true' value.
716 Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
717 until the frame has been returned). Also don't request a frame if we're
718 seeking (just do nothing, when the seek completes new frames will be
721 Change seeking to store the last seeked-to pts in the demuxer
722 when marshalling seeks from the main thread to the media thread. This
723 ensures that if two seeks are enqueued quickly, we won't seek twice, only
724 to the last (there is also another potential issue: if the first seek
725 couldn't complete because we were waiting for a frame, we could end up
726 seeking in the wrong order).
728 * deployment.cpp: Delete the local variable, not the instance field
733 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
735 * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
736 if we've been disposed, don't print a warning in this case. Also don't
737 get the media until we've passed the write_fd check - this way we don't
738 leak refs if the check fails.
742 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
744 * pipeline.cpp: Remove more output which can happen during normal
745 executing (shutdown in particular for these cases).
749 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
751 * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
752 method directly, it's called on the main thread, instead marshal the
753 Dispose to the media thread. Also reset error_reported, otherwise
754 Initialize will just bail out immediately.
758 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
760 * pipeline.cpp: Download progress can actually go down (if the file
761 size goes down). So don't print a scary warning.
765 2009-10-13 Jeffrey Stedfast <fejj@novell.com>
767 * textbox.cpp (TextBoxView::Layout): Set dirty to false after
769 (TextBoxView::Render): Don't do Layout here.
773 2009-10-09 Chris Toshok <toshok@ximian.com>
775 * control.cpp (Control::OnPropertyChanged): drt #438 shows that
776 you can set Template = null to clear the template's visual tree.
778 (Control::ClearTemplate): set template_root to NULL after we
783 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
785 * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
786 which may happen quite often and in common code paths.
790 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
792 * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
793 invoking the property changed handler the values we have might have
794 gotten deleted. Clone them before calling the property changed handler
795 so that we don't access deleted values. Makes #544211 not crash.
799 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
801 * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
802 when returning early.
806 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
808 * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
810 * dependencyproperty.g.cpp: Regenerated.
814 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
816 * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
820 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
822 * audio.cpp: AudioSource::Dispose: lock around field accesses,
823 and move the fields into a local variables so we can clean up
824 with the mutex unlocked.
828 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
830 * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
831 end up with a null stream, so don't spam the console with warnings.
835 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
837 * mediaplayer.cpp: Open: seek to the initial pts.
839 * playlist.cpp: When we re-open a media after stopping it, don't do
840 it async since we might end up doing things in the wrong order.
846 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
848 * deployment.cpp|h: Make shutdown an async/iterative process to ensure
849 we don't accidentally get deadlocked while shutting down. Change shutdown
850 sequence to first ensure no media threads are running, then do managed
851 shutdown unloading the appdomain, and do nothing more until the appdomain
852 has unloaded successfully (calling mono_domain_finalize which we used to is
853 very wrong since it assumes all managed threads have been aborted, when only
854 mono_domain_unload actually aborts threads - we ended up executing code in
855 other managed threads with freed objects everywhere). Added an
856 AppDomainUnloadedEvent so that the plugin can know when the appdomain has
857 been unloaded and free itself. Dispose the types when the deployment is
858 disposed, and delete them types when the deployment is destroyed. This way we
859 make sure that the types are available until all the objects have been
860 deleted. This also fixes different code paths / deletion points
861 depending on whether we built with object tracking or not. This also
862 removes the need for the is_dead variable. Maintain a counter of the number of
863 deployments alive so that we know when runtime can be shut down.
865 * dependencyobject.cpp: Don't emit events while we're shutting down.
866 Deployment::is_dead is dead now, remove checks, replaced with Deployment::
867 IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
870 * dependencyproperty.cpp|h: Add a Dispose method which clears out any
871 refs the default value might have (but keep a default value, we depend
872 in some places on having a default value).
874 * type.cpp: Dispose: call Dispose on the DP.
877 * type.h.in: Remove 'disposed' field: no longer needed.
881 2009-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
883 * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
884 This ensures that we don't keep the (default) 5s buffer of media in
885 memory while stopped. Add lots of checks for a stopped media so that
886 we don't refill the buffer after clearing it.
887 Makes MS DRT #238, #239 and #244 require a lot less memory.
889 * playlist.cpp: Call Play on the media too when we start playing.
891 2009-10-05 Jeffrey Stedfast <fejj@novell.com>
893 * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
894 silently drop repeated key-press events.
898 2009-10-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
900 * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
901 issue where we'd create more MediaFrames than the delayed unref
902 mechanism could free, so we'd run out of memory.
906 2009-10-05 Alan McGovern <amcgovern@novell.com>
910 * dependencyobject.h:
911 * dependencyobject.cpp: Store the starting_generation and
912 only_unemitted flags on the EmitContext so that the values
913 are used when we call DoEmitCurrentContext from managed
916 2009-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
918 * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
919 if we there is already a request pending.
923 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
925 Gets drt #412 a bit closer to passing.
927 * textblock.cpp (TextBlock): Initialize our own FontDescription
928 needed so we can tell the layout engine what the base font to use
929 for calculating BlockLineHeight proportions.
930 (TextBlock): Delete our FontDescription.
931 (UpdateFontDescription): New method to update our own
932 FontDescription and notify the layout engine of any changes.
933 (UpdateLayoutAttributes): Call UpdateFontDescription().
934 (UpdateFontDescriptions): Same.
936 * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
937 distance to the baseline given the base font.
938 (TextLayout::OverrideLineHeight): Don't check line_height against
939 NAN, check it against 0 instead. NAN means that we use the
940 containing TextBlock's font height as a base.
941 (TextLayout::LineHeightOverride): New method to figure out the
942 line height value to use when using BlockLineHeight strategy.
943 (TextLayout::DescendOverride): Given the overridden LineHeight,
944 calculate the baseline offset using the proportional distance
945 calculated in SetBaseFont().
946 (TextLayout::Layout): Instead of using 0 as the overridden line
947 descent, use the value calculated from DescendOverride(). Also use
948 LineHeightOverride() instead of line_height directly.
952 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
954 * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
955 disposed, that ensures that the queue is cleared up even if the
956 MmsPlaylistEntry itself leaks.
960 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
962 * pipeline-asf.cpp: Fix some potential leaks.
966 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
968 * fonts.h (class TextFont): Make some of the getters const.
972 2009-10-01 Andreia Gaita <avidigal@novell.com>
974 * utils.cpp: if there's no Application instance, use the root temp
975 dir to store, and track the created path directly on deployment so
976 it can be cleared up in the end.
980 2009-10-01 Alan McGovern <amcgovern@novell.com>
982 * runtime.cpp: WalkTreeForLoaded has already been called on
983 this element as part of the previous call to AttachLayer.
985 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
987 * dependencyobject.h: Make GetUnsafeDeployment available always, media
988 code might use it to get the deployment of the object instead of the
991 * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
992 deployment instance to wait until there is nothing more executing in
993 the thread pool regarding that deployment.
995 * deployment.cpp|h: Maintain a list of all the Media instances created
996 and dispose them when the deployment shuts down.
1000 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1002 * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
1003 some code duplication in all our Emit methods.
1007 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1009 * audio.cpp: Dispose: make sure the audio really stops.
1013 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1015 * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
1016 thread-safe, since managed code may clear them up on the finalizer
1019 * cbinding.cpp|h: Regenerated.
1023 2009-09-30 Alan McGovern <amcgovern@novell.com>
1025 * runtime.cpp: If the surface has been zombified, don't handle
1026 the plugin focus in/out event. r: toshok
1028 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1030 * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
1033 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1035 * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
1036 decoding async. This ensures we don't reenter managed code when the
1037 frame comes from MediaStreamSource.
1041 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1043 * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
1044 for the queue, it may blow up when the process shuts down because the
1045 media thread might still be running when the list is destroyed causing
1050 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1052 * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
1053 specifying the max number of threads, and use static memory for all of
1058 2009-09-30 Andreia Gaita <avidigal@novell.com>
1060 * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
1061 paths that get created in applications, so they can be released even
1062 if the Application instance leaks.
1064 * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
1065 which keeps the base temp path of all files and resources for an
1068 * utils.cpp: use the Application GetResourceRoot as a base path for
1069 all temporary files.
1073 2009-09-30 Alan McGovern <amcgovern@novell.com>
1075 * runtime.cpp: When the plugin gets focus or loses focus, we
1076 have to emit the corresponding event on the currently
1077 focused element - not on the TopLevel. Note that if we focus
1078 out of the plugin, we emit LostFocus on the currently
1079 focused element but do *not* set the current focused element
1080 to null. Lastly when handling the mouse down event, we
1081 should not try to focus elements in the hitlist from the
1082 mouse click. This mostly fixes DRT 745. r: rolf
1084 2009-09-30 Alan McGovern <amcgovern@novell.com>
1088 * validators.cpp: IsInputMethodEnabled defaults to true and
1089 also needs a validator to ensure that it's only set on
1091 * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
1092 true and also needs a validator to ensure that it's only set
1095 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1097 * pipeline.cpp: Reset more state when a seek completes.
1101 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1103 * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
1104 call to MediaThreadPool::AddWork, since otherwise we have a race
1105 condition between setting the is_disposed variable to true and adding
1110 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1112 * mediaelement.cpp: Stop immediately when the we're deattached from the
1117 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1119 * deployment.h: Fix typo in comment.
1121 2009-09-29 Chris Toshok <toshok@ximian.com>
1123 * dependencyobject.cpp (EventObject::StartEmit): when we copy the
1124 list of closures to invoke, don't copy ones that are
1125 pending_removal. This fixes the crash due to re-entering in drt
1126 502 in a way that doesn't break the existing plugin behavior.
1127 (EventObject::DoEmitCurrentContext): revert the
1128 !closure->pending_removal change that caused plugin event listener
1129 breakage in the xaml tests.
1133 2009-09-29 Larry Ewing <lewing@novell.com>
1135 * border.cpp (InsideObject): improve Border::InsideObject to
1136 handle the actual drawn bounds.
1142 2009-09-29 Jeffrey Stedfast <fejj@novell.com>
1144 * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
1145 to be more consistent with the managed method names. Don't set
1146 Handled to true, since anything that makes it this far should also
1151 2009-09-28 Andreia Gaita <avidigal@novell.com>
1153 * application.cpp, bitmapimage.cpp,
1154 file-downloader.cpp, fontmanager.cpp,
1155 pipeline-ui.cpp, pipeline.cpp,
1156 utils.cpp: uniform usage of glib io calls
1160 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1162 * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
1163 the current deployment as it was when returning from it.
1167 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1169 * mediaelement.cpp|h: When receiving markers from the pipeline, store them
1170 in a general list and only move them into a TimelineCollection just before
1171 checking if they are to be emitted. This avoids locking a mutex during a
1172 potentially large time, as well as trying to emit an event on the pipeline
1173 thread (collection changed event when adding markers to the
1174 TimelineCollection).
1178 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1180 * audio.cpp: Follow refcounting rules with the AlsaPlayer.
1184 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1186 * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
1187 locked. CreateInstance: Add a couple of comments.
1191 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1193 * deployment.cpp|h: No need for the downloaders field to be a pointer
1194 when it'll always exist. Move the downloader abort code to the node's
1195 destructor, this way we ensure that the downloader is always aborted.
1196 Reinitialize: clear the downloaders list instead of creating a new one
1197 (and leaking the previous one).
1201 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1203 * audio.cpp|h: AudioPlayer can't derive from EventObject, since
1204 EventObject is tied to a particular deployment, while AudioPlayer is
1205 process-wide. Implement simple refcounting in AudioPlayer to work
1206 around this and keep the old behaviour.
1211 * type-generated.cpp: Regenerated.
1215 2009-09-28 Chris Toshok <toshok@ximian.com>
1217 * frameworkelement.h|cpp (class FrameworkElement): remove the
1218 empty SetValueWithErrorImpl implementation.
1222 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
1224 * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
1225 MS DRT #244 (and possibly others) where we'd end up raising the
1226 MediaOpened event while still parsing xaml (the test didn't have time
1227 to attach an handler to the event before it was raised).
1231 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
1233 * mediaelement.cpp: Stop when we're detached. This helps with a
1234 resource "leak": if the user code just removes the mediaelement from
1235 the visual tree and forgets about it, we'd continue playing until the
1236 gc kicks in and finds out it should free the mediaelement.
1240 2009-09-28 Chris Toshok <toshok@ximian.com>
1242 * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
1243 call closure functions when the closure is pending removal. if
1244 it's a managed delegate it will likely have already been
1245 collected. This fixes the regression of drt #502.
1249 2009-09-24 Stephen Shaw <sshaw@decriptor.com>
1251 * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
1252 Method now returns a value
1256 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
1258 * mediaelement.cpp|h: Remove unused methods.
1262 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
1264 * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
1268 2009-09-23 Chris Toshok <toshok@ximian.com>
1270 * uielement.cpp (UIElement::EmitGotFocus): this event passes
1271 RoutedEventArgs, not EventArgs.
1272 (UIElement::EmitLostFocus): same.
1274 * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
1275 make both MouseButtonEventArgs and MouseWheelEventArgs subclass
1276 from MouseEventArgs. Move MouseEventArgs::GetButton and
1277 ::GetClickCount to MouseButtonEventArgs.
1279 * runtime.cpp (Surface::CreateArgsForEvent): for the button
1280 events, create a MouseButtonEventArgs.
1282 * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
1283 button handling methods.
1285 * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
1289 2009-09-23 Chris Toshok <toshok@ximian.com>
1291 * uielement.h (class UIElement): add event metadata.
1293 * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
1295 (UIElement::ClearLoaded): same with Unloaded.
1297 * type-generated.cpp, type.h, value.h: regen.
1299 * transform.h (class Matrix): add event metadata.
1301 * timeline.h (class TimelineGroup): add event metadata.
1303 * textbox.h (class TextBox): add event metadata.
1304 (class PasswordBox): add event metadata.
1306 * stylus.h (class StylusPoint): add event metadata.
1308 * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
1309 captured/pendingReleaseCapture before emitting the event,
1310 otherwise we could get into an infinite loop between handler and
1311 ReleaseMouseCapture.
1312 (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
1314 * namescope.h (class NameScope): add event metadata.
1316 * multiscaleimage.h (class MultiScaleImage): add event metadata.
1318 * mediaelement.h (class MediaElement): add event metadata.
1320 * media.h (class MediaBase): add event metadata.
1322 * frameworkelement.h (class FrameworkElement): add event metadata.
1324 * deployment.h (class Deployment): add event metadata.
1326 * dependencyproperty.h: remove PropertyChangedEventArgs from here.
1328 * eventargs.h: and put it here.
1330 * dependencyproperty.h|cpp: replace the emitting count with a
1331 stack of EmitContexts. This is since the managed layer calls a
1332 function to actually perform the emit, and the managed code
1333 doesn't have access to the context.
1334 (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
1335 can replace the normal emit machinery with a delegate into managed
1336 that calls the OnEvent method.
1337 (StartEmit): push the new context onto the stack
1338 (DoEmit): if there's an on_event handler, call that and let it do
1339 the work. otherwise call DoEmitCurrentContext.
1340 (DoEmitCurrentContext): move the actual invoking of event closures
1342 (FinishEmit): pop the context off the stack.
1343 (DependencyObject::ProviderValueChanged): we have to allocate
1344 PropertyChangedEventArgs on the heap now that it's refcounted.
1345 (DependencyObject::NotifyListenersOfPropertyChange): same.
1346 (DependencyObject::collection_item_changed): same.
1348 * control.h (class Control): add event metadata.
1350 * control.cpp (Control::OnPropertyChanged): when emitting
1351 IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
1353 * collection.h (class Collection): add event metadata.
1355 * brush.h (class ImageBrush): add event metadata.
1357 * bitmapsource.h (class BitmapSource): add event metadata.
1359 * bitmapimage.h (class BitmapImage): add event metadata.
1361 * application.h (class Application): add event metadata.
1363 * cbinding.h|cpp: regen.
1365 r: spouliot, andriea
1367 2009-09-23 Stephane Delcroix <sdelcroix@novell.com>
1369 * multiscaleimage.cpp: fix the vp_h computation. vp_h is
1370 vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
1372 2009-09-21 Stephane Delcroix <sdelcroix@novell.com>
1374 * multiscaleimage.h|cpp: stop the animations when setting
1375 UseSprings to false. Set the values to the target values
1376 of the animations too.
1380 2009-09-18 Jackson Harper <jackson@ximian.com>
1382 * xaml.cpp|h: Use flags passed to createfromstring now for
1383 validating templates and importing the default namespace.
1385 * collection.cpp|h: Implement a resource dictionary collection,
1386 this is a collection of dictionaries used for the
1387 MergedDictionaries property of ResourceDictionaries
1388 * resources.cpp|h: Implement the merged dictionaries property and
1389 check them when looking up items in a dictionary.
1390 * dependencyproperty.g.cpp:
1391 * types-generated.cpp:
1392 * cbinding.c|h: regen
1394 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
1396 * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
1397 media before asserting that it isn't null.
1401 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
1403 * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
1404 buffering_time of 1 ms, otherwise we'll do nothing at all since we have
1405 the requested amount of buffer (nothing at all), but buffering progress
1406 is is still at 0% (since we didn't buffer anything). Don't change the
1407 buffering progress calculation, since playback would fail (there would
1408 be nothing to play).
1412 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
1414 * mms-downloader.cpp: Remove old debugging code that was stripping out
1415 everything after a ? in a url.
1419 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
1421 * xaml.cpp: Honor the debug configuration option instead of enabling it
1424 * glyphs.cpp: Move debug code into conditional expression.
1426 * debug.h: DEBUG is resolved to nothing at all in release builds, so
1427 when checking if debug is defined in complex expressions we need to
1428 use 'defined (DEBUG)', since otherwise the expression becomes bogus.
1429 Also Move #include "runtime.h" outside of the conditional code, this
1430 way we don't have different include requirements in other headers
1431 depending on debug/release configuration.
1435 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
1437 * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
1438 specifying whether the current thread should be registered with the
1441 This fixes a minor catch with the media threads: they need to register
1442 the current thread with the deployment before calling
1443 SetCurrentDeployment, but they can't call GetDeployment to get the
1444 deployment to register the thread with before calling
1445 SetCurrentDeployment since it would trigger a deployment mis-matched
1448 * pipeline.cpp|h: Add a thread pool to manage media threads instead of
1449 creating one thread per Media instance.
1451 * pipeline-asf.cpp: Updated according to Media API changes.
1455 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
1457 * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
1462 2009-09-16 Larry Ewing <lewing@novell.com>
1464 * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
1465 not DependencyObject so that property changes actually work.
1469 2009-09-14 Jeffrey Stedfast <fejj@novell.com>
1471 * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
1473 * application.cpp (GetResourceAsPath): ExtractAll using
1474 CanonModeResource (everything gets lowercased).
1476 * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
1477 .dll's get lowercased).
1478 (xap_create_from_file): Canonicalize the AppManifest.xaml file
1481 * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
1482 argument to specify whether it is canonicalizing a Xap file, a
1483 resource name, or just fixing path separators. When in Xap mode,
1484 don't downcase Dll base names.
1485 (ExtractAll): When extracting a Xap, symlink a fully lowercased
1486 filename to the unmodified .dll name.
1490 2009-09-16 Larry Ewing <lewing@novell.com>
1492 * tilesource.h: make tileblendtime unamanaged so we can use it
1493 when creating the fade animation.
1495 * multiscaleimage.cpp (Render): use the duration from the
1496 tilesource for the fade animation. This probably needs to listen
1497 to change events but more testing is required.
1501 2009-09-16 Larry Ewing <lewing@novell.com>
1503 * style.h: make IsSealed field internal.
1505 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
1507 * messagebox.h: Remove tab to please the generator
1511 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
1513 * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
1518 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
1520 * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the
1521 resource loader from the main thread.
1525 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
1528 * bitmapimage.cpp: don't leak get_res_aborter.
1532 2009-09-16 Stephane Delcroix <sdelcroix@novell.com>
1534 * multiscaleimage.h|cpp: StopDownloading () abort and clean the
1535 downloaders. Call it from the dtor, InvalidateTileLayer and
1536 OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
1540 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
1542 * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
1543 and add a 'description' field to ease understanding of what is going
1548 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
1550 * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
1554 2009-09-15 Larry Ewing <lewing@novell.com>
1556 * control.h: Mark IsTemplateItem as internal.
1558 * mediaelement.h: mark DownloadProgress as readonly.
1560 * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
1563 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
1565 * messagebox.cpp|h: New. MessageBox implementation
1566 * Makefile.am: Add new files to the build
1570 2009-09-15 Stephane Delcroix <sdelcroix@novell.com>
1572 * multiscaleimage.cpp: set the surface pointer to NULL after
1577 2009-09-16 Chris Toshok <toshok@ximian.com>
1579 * dependencyobject.cpp (EventObject::Emit): don't return early
1580 when we have a pre-emit handler, even if the list is empty. Also,
1581 don't do the pre-emit handler here.
1582 (EventObject::DoEmit): instead do it here.
1584 2009-09-14 Chris Toshok <toshok@ximian.com>
1586 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1587 ParserErrorEventArgs overload to MoonError::FillIn to simplify
1589 (XamlLoader::CreateFromStringWithError): same.
1590 (XamlLoader::HydrateFromStringWithError): same.
1592 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1593 MoonError to the ErrorEventArgs, instead of the multiple args.
1595 * playlist.cpp: same.
1597 * asf/asf.cpp: same.
1599 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1600 the ErrorEventArgs, instead of the multiple args.
1601 (Downloader::NotifyFailed): same.
1603 * runtime.cpp (Surface::EmitError): same.
1605 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1607 * pipeline.cpp: same.
1609 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1610 we need to free the string we pass to MoonError::FillIn now that
1612 (DependencyObject::IsValueValid): same.
1613 (DependencyObject::RegisterAllNamesRootedAt): same.
1614 (DependencyObject::ReadLocalValueWithError): same.
1615 (DependencyObject::GetValueWithError): same.
1616 (DependencyObject::GetValueNoDefaultWithError): same.
1617 (DependencyObject::SetParent): same.
1619 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1621 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1622 ImageFailedEvent, after reffing them.
1624 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1625 an error, we need to fill in the moon error with the appropriate
1626 exception, code, and msg. the calldata to the Emit call is now an
1627 ImageErrorEventArgs again, which we construct using the
1629 (BitmapImage::DownloaderFailed): same sort of change.
1630 (BitmapImage::CreateLoader): same.
1632 * bitmapimage.h (class BitmapImage): rename "error" field to
1633 "gerror" to make it clearer what it is in the code.
1635 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1636 we get a little more indication of where it comes from. this enum
1637 is not long for this world, if I can help it.
1639 * media.h|cpp (Image::image_failed): pass in the calldata to
1641 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1642 ImageFailedEvent, after reffing them.
1644 * error.h|cpp: move all the eventargs subclasses from here
1646 (class MoonError): add a non-empty ctor, copy ctor and operator=.
1647 Also, remove the char* vs. const char* apis. make them all const
1648 char*, and dup the passed in string. Lastly, add a FillIn
1649 overload that takes a ParserErrorEventArgs.
1651 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1652 info in an embedded MoonError.
1653 (ExceptionRoutedEventArgs): remove this class. Nothing in
1654 unmanaged code uses it.
1656 2009-09-14 Sebastien Pouliot <sebastien@ximian.com>
1658 * xaml.cpp: remove dead code
1662 2009-09-14 Chris Toshok <toshok@ximian.com>
1664 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1665 ParserErrorEventArgs overload to MoonError::FillIn to simplify
1667 (XamlLoader::CreateFromStringWithError): same.
1668 (XamlLoader::HydrateFromStringWithError): same.
1670 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1671 MoonError to the ErrorEventArgs, instead of the multiple args.
1673 * playlist.cpp: same.
1675 * asf/asf.cpp: same.
1677 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1678 the ErrorEventArgs, instead of the multiple args.
1679 (Downloader::NotifyFailed): same.
1681 * runtime.cpp (Surface::EmitError): same.
1683 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1685 * pipeline.cpp: same.
1687 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1688 we need to free the string we pass to MoonError::FillIn now that
1690 (DependencyObject::IsValueValid): same.
1691 (DependencyObject::RegisterAllNamesRootedAt): same.
1692 (DependencyObject::ReadLocalValueWithError): same.
1693 (DependencyObject::GetValueWithError): same.
1694 (DependencyObject::GetValueNoDefaultWithError): same.
1695 (DependencyObject::SetParent): same.
1697 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1699 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1700 ImageFailedEvent, after reffing them.
1702 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1703 an error, we need to fill in the moon error with the appropriate
1704 exception, code, and msg. the calldata to the Emit call is now an
1705 ImageErrorEventArgs again, which we construct using the
1707 (BitmapImage::DownloaderFailed): same sort of change.
1708 (BitmapImage::CreateLoader): same.
1710 * bitmapimage.h (class BitmapImage): rename "error" field to
1711 "gerror" to make it clearer what it is in the code.
1713 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1714 we get a little more indication of where it comes from. this enum
1715 is not long for this world, if I can help it.
1717 * media.h|cpp (Image::image_failed): pass in the calldata to
1719 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1720 ImageFailedEvent, after reffing them.
1722 * error.h|cpp: move all the eventargs subclasses from here
1724 (class MoonError): add a non-empty ctor, copy ctor and operator=.
1725 Also, remove the char* vs. const char* apis. make them all const
1726 char*, and dup the passed in string. Lastly, add a FillIn
1727 overload that takes a ParserErrorEventArgs.
1729 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1730 info in an embedded MoonError.
1731 (ExceptionRoutedEventArgs): remove this class. Nothing in
1732 unmanaged code uses it.
1734 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1737 * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
1738 need to play something, and clean up when we stop playing audio.
1740 * mutex.h: Add support for recursive mutexes.
1744 2009-09-14 Stephane Delcroix <sdelcroix@novell.com>
1746 * deepzoomimagetilesource.h:
1747 * multiscaleimage.h|cpp:
1749 * uielement.h: drop some manually written cbindings in favor of
1752 * cbinding.h|cpp: regen
1756 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1758 * audio.cpp: It should be safe to delete audio sources on any
1763 2009-09-11 Larry Ewing <lewing@novell.com>
1765 * deployment.cpp, deployment.h: add OutOfBrowserSettings,
1766 ExternalPartCollection, ExternalPart and ExtensionPart to allow
1771 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1773 * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
1774 wherever we used to access the field directly. Fixes a very rare
1779 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1781 * pipeline-asf.cpp: Add a null check.
1785 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1787 * runtime.h: Fix typo in sanity message.
1789 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1791 * audio.cpp: WriteFull: have a local copy of the stream pointer,
1792 it may get changed on the main thread.
1796 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1798 * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
1799 the audio stream in all code paths.
1803 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1805 * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
1806 it should be safe since the tick call is removed upon destruction.
1810 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
1812 * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
1813 AudioPlayer is disposed due to refcounting reaching 0. This way
1814 we can keep the instance lock for as little time as possible
1815 (to do the ref), instead of during the entire Add/Remove calls,
1816 which may end up deadlocking deep inside pulse in rare circumstances
1817 (we try to add an audio source on one thread(requires a global pa lock)
1818 when removing another audio source on another thread as a response to
1819 an event from pa which may already have the global pa lock).
1824 * type-generated.cpp: Regenerated
1828 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
1830 * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
1831 pointer instead of subcache, layer, x and y. Avoids some tree waliking
1836 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
1838 * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix
1839 qtree_remove to take guint64 indices, qtree_next_sibling for
1844 2009-09-10 Jackson Harper <jackson@ximian.com>
1846 * namescope.h: Add an accessor for the names hashtable so we can
1847 use them in plugin-debug.
1851 2009-09-10 Jackson Harper <jackson@ximian.com>
1853 * xaml.cpp|h: Add flags to the callback data
1854 - Add a pinvoke function that allows propertys to be delayed in
1855 their set call until after the element is fully parsed. This
1856 allows things like adding elements to a Selector and setting its
1861 2009-09-10 Larry Ewing <lewing@novell.com>
1863 * multiscaleimage.cpp (RenderSingle): work around the cairo
1864 limitations by doing the viewport/msi intersection and clipping in
1869 2009-09-10 Stephane Delcroix <sdelcroix@novell.com>
1871 * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
1872 receive on Render is already clipped to the control size.
1873 Wrap the clipping to image size in a conditional to avoid clipping
1874 with really huge rectangles. That it a bug in cairo, as shown in
1875 drt 2013, 2014. In those cases, the rendering will (visually) leak
1876 for the low order layers.
1880 2009-09-09 Jackson Harper <jackson@ximian.com>
1882 * xaml.cpp: When we are setting attributes we want to set
1883 everything with a backing dependency property before we set things
1884 that require managed. We also delay the setting of attributes with
1885 an explicit managed namespace reference. NOTE: We dont delay
1886 setting attributes that have a DP but are forced into managed
1887 because of their type.
1888 - We can share SetUnknownAttribute functions because the default
1889 xmlns is inited to NULL.
1893 2009-09-09 Stephane Delcroix <sdelcroix@novell.com>
1895 * multiscaleimage.cpp: Clear () the SubImagesCollection on
1896 source changed. Speed things up when reusing the same MSI
1897 over and over with different sources. drt #2004 is now passing
1902 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
1904 * downloader.h, layout.h, list.h: Add missing virtual destructors
1908 2009-09-08 Chris Toshok <toshok@ximian.com>
1910 * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
1911 for ProviderValueChanged's @set_parent.
1912 (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
1913 true in the visual walking case, and false in the
1914 textblock->inline case.
1915 (PROP_ADD): pass true.
1916 (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
1917 (InheritedPropertyValueProvider::PropagateInheritedProperty):
1918 do a deep traversal of the tree, looking for children who have a
1919 mapped property from the changed one (MapPropertyToDescendant
1920 returns NULL if there's no mapping). Once we find a suitable
1921 descendant, call ProviderValueChanged on it with "true" for
1922 notify_listeners. This will take care of notifying further down
1923 the tree if need be, and we can skip that branch. For textblocks
1924 we also have to iterate over the inlines to propagate the property
1925 change notification.
1926 (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
1927 traverse the entire subtree looking for classes which can inherit
1928 properties from above them. when we find one, get the inherited
1929 value. if it's non-null, notify that the property has changed,
1930 and keep trace of this property (we only notify once for a given
1931 subtree, since the normal ProviderValueChanged notifications will
1932 handle the rest for that property.)
1933 (walk_tree): this recursive function does the bulk of the work for
1934 ::PropagateInheritedPropertiesOnAddingToTree
1936 * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
1937 add an additional argument (set_parent), which is true for every
1938 instant except when TextBox is propagating inherited brushes to
1939 its constituent inlines. In this case, the textbox is still the
1940 parent of the brush. At least for the time being. In a perfect
1941 world all the changed handling would live in the leaf
1942 nodes (i.e. in the Inlines themselves)
1943 (DependencyObject::ClearValue): track api change
1944 (DependencyObject::SetValueWithErrorImpl): same.
1945 (DependencyObject::GetValue): add an overload for allowing both
1946 starting and ending precedences, and implement the other two
1947 overloads in terms of it.
1948 (DependencyObject::GetValueSkippingPrecedence): remove, no longer
1951 * uielement.cpp (UIElement::ElementAdded): propagate all
1952 inheritable properties into the subtree we're adding, before
1957 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1959 * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
1960 redirections (drt 874)
1962 * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
1965 * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
1969 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
1971 * downloader.cpp: Skip redirection check if the source url is a
1976 2009-09-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1978 * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
1979 event from the downloader after cancelling a resource request, this
1980 is no longer true, so emit ImageFailed manually after calling Abort.
1984 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1986 * deepzoomimagetilesource.cpp: don't render if any MSI extends
1987 is 0. avoid rendering an extra layer in some cases.
1991 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
1993 * deepzoomimagetilesource.h|cpp: replace downloader usage by
1994 Application::GetResource (). Parses the xml stream as it comes,
1995 instead of all at once.
1999 2009-09-07 Chris Toshok <toshok@ximian.com>
2001 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
2002 don't bail out early if both values are null, as the property
2003 might be AlwaysChange.
2004 (DependencyObject::ClearValue): same.
2008 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
2010 * multiscaleimage.cpp: the tileLayer parameter is not the number
2011 of layers to invalidate.
2015 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
2017 * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
2018 full cache, but only the requested tiles.
2022 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
2024 * multiscaleimage.cpp:
2025 * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
2026 the cache, aborting the downloaders, invalidating, etc...) on dzits
2027 urisource changed that is done on msi sourcechanged.
2031 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
2033 * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
2034 the OnSourcePropertyChanged handling outside of OnPropertyChanged.
2035 No longer keep a source instance variable, as we can get it with
2040 2009-09-04 Larry Ewing <lewing@novell.com>
2042 * multiscaleimage.cpp (RenderSingle): clip our rendering to the
2043 image bounds so that when we are scaling up we don't end up with
2048 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
2050 * utils.h|cpp: add a void* arg to the Cancellable api
2052 * application.cpp: remove the downloader notifications on
2055 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
2057 * multiscaleimage.cpp: on source change, don't only Abort() the
2058 dlders, but also reset the internal state of the dlders to Free
2062 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2064 * multiscaleimage.cpp: reset the Viewport to its default values
2065 on source change. Eventually fixes drt#511.
2069 2009-09-03 Jeffrey Stedfast <fejj@novell.com>
2071 * textbox.h: Nuke the CallInitialize metadata from TextBox.
2073 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2075 * deepzoomimagetilesource.h: add Generate* attributes
2077 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2079 * multiscaleimage.h: drop the GenrateJSBinding attributes
2081 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2084 * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
2085 move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
2086 that we have to strip an eventual leading / on ctor but not on
2089 2009-09-02 Andreia Gaita <avidigal@novell.com>
2091 * dependencyobject.cpp: move the storage cleanup to Dispose, they
2092 will need to invoke handlers and other things that require the
2093 object to still be alive. fixes crash on drt 109
2097 2009-09-02 Jackson Harper <jackson@ximian.com>
2099 * dependencyproperty.cpp: If the explicitly mentioned type does
2100 not contain the property, try looking for the property on the
2101 current lookup obejct. Allows things like (UIElement.Height) on a
2106 2009-09-02 Jeffrey Stedfast <fejj@novell.com>
2108 * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
2109 UpdateLayoutAttributes(). We can't rely on it being called as a
2110 result of setting the Text property since the overall Text
2111 property value might not have changed.
2112 (TextBlock::OnCollectionItemChanged): Same here.
2113 (TextBlock::OnPropertyChanged): Same for when the Inlines property
2114 changes. In the FontSource case, don't set invalidate to
2115 false. Also set dirty to true.
2116 (SetTextInternal): Changed to return void, no need to return bool
2121 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
2123 * layout.cpp (TextLayoutGlyphCluster::Render): If the background
2124 brush is null, don't bother drawing a background.
2128 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
2130 * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
2131 brush is null, don't render the text.
2135 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2137 * utils.cpp (CopyFileTo): Close the destination file handle if
2138 the source (filename) cannot be opened.
2142 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2144 * uielement.cpp (UIElement::Paint): Don't leak a copy of the
2145 region when *not* using FTB rendering.
2149 2009-09-01 Larry Ewing <lewing@novell.com>
2151 * frameworkelement.cpp: clear LastRenderSize before we emit so
2152 that we don't end up in a possible recursion.
2154 Fixes http://www.worldwidetelescope.org/webclient/
2158 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2160 * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
2161 error code when an invalid xap file is encoutered.
2165 2009-08-31 Sebastien Pouliot <sebastien@ximian.com>
2167 * debug.cpp: Delete frame if we're not using it in the loop
2168 * resources.cpp: Don't leak Value instance on error
2172 2009-08-30 Andreia Gaita <avidigal@novell.com>
2176 * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
2177 move it to the Timeline class so all timelines can clear their clocks.
2178 Removed private root_clock, all timelines should use the timeline
2181 * timeline.[h|cpp]: TeardownClock removes the clock from the parent
2182 ClockGroup and clears the ref on the clock so it can be destroyed
2183 (which in turn will release the ref on the timeline so it too gets
2185 DispatcherTimer doesn't have to destroy it's clock, the timeline
2186 dispose takes care of that. Added TeardownClock for DispatcherTimer
2187 so it stops the clock before disposing.
2188 Removed private root_clock, all timelines should use the timeline
2191 * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
2192 group Dispose goes down the hierarchy of clocks and starts clearing
2193 clocks (via timeline TeardownClock) from bottom to top, so
2194 everything is guaranteed to die before the root clock gets
2197 * timemanager.cpp: Dispose root clock before releasing it
2201 2009-08-30 Andreia Gaita <avidigal@novell.com>
2203 * textblock.cpp: drop the run reference, it's already reffed on the
2208 2009-08-28 Alan McGovern <amcgovern@novell.com>
2212 * contentcontrol.cpp: ContentControl is not in charge of
2213 expanding its content template, the users of ContentControl
2214 have to do that. When applying a ControlTemplate, if it
2215 expands to an empty element or one which is not a UIElement,
2216 we ignore the template and instead apply the default
2219 2009-08-27 Jeffrey Stedfast <fejj@novell.com>
2221 * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
2222 Mouse events anymore (except the special internal MultiClick
2223 event). Managed code will now call our public On$Event() methods
2225 (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
2226 true. Doesn't seem like SL ever does.
2230 2009-08-27 Stephane Delcroix <sdelcroix@novell.com>
2232 * tilesource.h: rely on the generator for internal properties.
2235 * deepzoomimagetilesource.cpp: use the accesors instead of the
2238 2009-08-27 Andreia Gaita <avidigal@novell.com>
2240 * dependencyobject.cpp: list should only be cleared, not destroyed,
2241 storage_hash still needs it
2245 2009-08-26 Chris Toshok <toshok@ximian.com>
2247 * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
2252 2009-08-16 Chris Toshok <toshok@ximian.com>
2254 * value.h.in, value.cpp: remove Value::Set. it's unnecessary.
2256 * validators.cpp (Validators::BalanceValidator): use the
2257 assignment operator instead of ::Set, which no longer exists.
2258 (Validators::VolumeValidator): same.
2259 (Validators::CursorValidator): don't assign the pointer, assign
2260 the value. This should have caused bugs...
2264 2009-08-26 Jeffrey Stedfast <fejj@novell.com>
2266 * validators.cpp (FloatValidator): New validator to make sure a
2267 value is within range for a float.
2269 * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
2270 origin_y state variables. We can just query these on demand.
2271 (Render): Simplified slightly.
2272 (GetTransformOrigin): Get rid of unused variable.
2273 (GetOriginPoint): Just use the ascender rather than the height and
2274 the descender. Simpler that way.
2276 * glyphs.h: Changed default OriginX and OriginY values to what
2277 they should be according to the moon-unit tests (also makes drt
2282 2009-08-26 Alan McGovern <amcgovern@novell.com>
2287 * template.cpp: Allow FrameworkTemplates to be expanded in
2288 managed code. Using that, expand the ItemsPanelTemplate in
2289 ItemsControl when it is available. r: toshok
2291 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
2293 * security.c: Fixed typos in last "a11y" commit.
2295 2009-08-26 Chris Toshok <toshok@ximian.com>
2297 * textbox.cpp (TextBoxBase::SetSurface): only call
2298 gtk_im_context_set_client_window if @surface is non-null. this
2299 quiets down some of the gtk warnings on shutdown.
2303 2009-08-26 Alan McGovern <amcgovern@novell.com>
2308 * type-generated.cpp: regen r: shana
2310 2009-08-26 Andreia Gaita <avidigal@novell.com>
2312 * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
2313 public methods that DOs and Clocks use to control an animation:
2314 - when a new storage is attached and there is already one on
2315 the property, Disable removes the handlers from the previous
2317 - when a storage is detached, the previous one is enabled via
2318 Enable, which attaches the handlers;
2319 - when a clock is stopped, it calls Stop, which detaches
2320 everything and resets the property;
2321 - when cloning, SwitchTarget is used to replace the DO and its
2322 handlers on the storage, to avoid having to clone all the
2323 storages every time.
2325 Storages are now only deleted when the clock stops, is destroyed
2326 or when the DO they're attached to is destroyed. IsLonely was
2327 removed (meaningless now), as well as the resettable flag (only
2328 enabled animations reset)
2330 * dependencyobject.[h|cpp]: a DO can have more than one animation
2331 running on the same DP, and they need to be stored so that when a
2332 DO is cloned, all running animations are updated to the new DO -
2333 - this way, when they stop they update the current DO and not the
2334 one they were originally attached to. This fixes the animation
2335 problems on togglebuttons and other objects that have several
2336 animations overlapping each other. The storage_hash now stores a
2337 List* of AnimationStorage::Node objects with all existing animations
2338 for every DP, and the animation storage cloning process doesn't clone
2339 the storages, it merely creates a new List* with the existing storages
2340 and updates them to the newly cloned DO.
2344 2009-08-26 Alan McGovern <amcgovern@novell.com>
2346 * template.cpp: NNull check 'result' before using it. r:shana
2348 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
2350 * security.c: Mark MoonAtkBridge.dll as platform assembly.
2352 2009-08-25 Chris Toshok <toshok@ximian.com>
2354 * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
2355 when IsEnabledProperty has changed. we need to do it after the
2356 focus handling has happened, though, as
2357 FocusManager.GetFocusedElement() returns the currently focused
2358 thing in handlers for IsEnabledChanged. Fixes the rendering of
2359 disabled elements in drt #432.
2363 2009-08-26 Jackson Harper <jackson@ximian.com>
2365 * dependencyproperty.cpp: Allow setting properties that are
2366 attached on their owner type without parens. r: toshok
2368 2009-08-26 Jackson Harper <jackson@ximian.com>
2370 * xaml.cpp|h: Expose a function for parsing bools so the plugin
2371 code can use our bool parsing code. (Handle ints).
2373 r: shana && kangaroo
2375 2009-08-25 Jeffrey Stedfast <fejj@novell.com>
2377 * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
2378 invalidate unless one of the fonts has actually changed.
2382 2009-08-25 Jackson Harper <jackson@ximian.com>
2384 * type.cpp: Function was still in the header but somehow lost its
2385 implementation. We dont use it anywhere but its useful for
2386 debugging. r: kangaroo
2388 2009-08-25 Alan McGovern <amcgovern@novell.com>
2394 * contentcontrol.cpp: Add support for using
2395 ContentControl.ContentTemplate when it is available. If
2396 there is no Control.Template, ContentControl.ControlTemplate
2397 is used. If that isn't available, we call into managed code
2398 and get the fallback root. r: toshok
2400 2009-08-24 Jackson Harper <jackson@ximian.com>
2402 * dependencyobject.cpp: Hydrated objects are registered in their
2403 parent namescope so we need to unregister them there also. r: toshok
2405 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
2407 * fontmanager.cpp (AddResource): Need to free the path string
2408 before returning on success.
2410 * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
2411 leak the various lists.
2415 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
2417 * grid.cpp (DestroyMatrices): Need to use delete[] to free the
2422 2009-08-21 Alan McGovern <amcgovern@novell.com>
2425 * template.cpp: Whenever any template is expanded, the
2426 template namescope should be locked. r: jackson
2428 2009-08-21 Alan McGovern <amcgovern@novell.com>
2430 * grid.cpp: When assigning sizes to grid segments, if the
2431 current UIElement spans across star segments, then extra
2432 height will only be assigned to those star segments.
2433 Otherwise extra height will be assigned to Auto and Pixel
2436 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
2438 * textbox.cpp (TextBoxBase::Emit*Async): Removed.
2439 (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
2440 (TextBox::EmitTextChanged): Same.
2441 (PasswordBox::EmitTextChanged): Same.
2443 * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
2445 * dependencyobject.cpp (EventObject::EmitAsync): New method to
2446 emit an event asynchronously.
2450 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
2452 * textbox.cpp (emit_selection_changed): Pass along the generation
2453 to the virtual EmitSelectionChanged() method.
2454 (emit_text_changed): Same.
2455 (EmitSelectionChangedAsync): Use a custom closure so that we can
2456 capture the current event generation to use when we actuall emit
2458 (EmitTextChangedAsync): Same.
2462 2009-08-20 Jackson Harper <jackson@ximian.com>
2464 * xaml.cpp: Setting OBJECT properties allows objects to be parsed
2465 from strings that shouldn't normally be. Such as SolidColorBrush
2466 and PointCollection.
2468 2009-08-19 Jeffrey Stedfast <fejj@novell.com>
2470 * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
2471 same algorithm used by Silverlight.
2475 2009-08-19 Jackson Harper <jackson@ximian.com>
2477 * playlist.cpp: Its possible to queue an async operation and then
2478 call Dispose before that operation has taken place. This patch
2479 makes Playlist delay its unref and adds guards in its async
2480 callback functions to avoid this. Fixes http://www.nederland24.nl/
2483 2009-08-18 Jackson Harper <jackson@ximian.com>
2485 * template.cpp: Remove not very helpful and somewhat scary looking
2486 debug spew. r:toshok
2488 2009-08-18 Jeffrey Stedfast <fejj@novell.com>
2490 * layout.cpp (word_type_changed): Partial revert for previous
2491 commit as it broke drt #208.
2495 2009-08-17 Jeffrey Stedfast <fejj@novell.com>
2499 * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
2501 (word_type_changed): Allow alphabetic characters inside
2503 (layout_word_wrap): Allow line advance to equal max width.
2507 2009-08-18 Alan McGovern <amcgovern@novell.com>
2510 * grid.cpp: Remove the 'magic' size as size allocations are
2511 read from row_matrix/col_matrix now. r: kangaroo
2513 2009-08-18 Alan McGovern <amcgovern@novell.com>
2516 * grid.cpp: Allocate sizes of the grid segments in the correct
2519 2009-08-17 Alan McGovern <amcgovern@novell.com>
2522 * grid.cpp: When allocating sizes for rows/columns, clamp the
2523 sizes between the Min and Max values in a consistent manner.
2526 2009-08-17 Alan McGovern <amcgovern@novell.com>
2529 * grid.cpp: Change the parameter order in the Segment
2530 constructors to be "value, min, max" to be consistent with
2531 how 'CLAMP' is usually defined. r: jackson
2533 2009-08-16 Chris Toshok <toshok@ximian.com>
2535 * xaml.cpp (value_from_str_with_parser): fix the abundant memory
2536 leaks in this method.
2538 * propertypath.h (struct PropertyPath): add a copy constructor
2539 here so the xaml.cpp changes work without crashing.
2543 2009-08-16 Chris Toshok <toshok@ximian.com>
2545 * xaml.cpp (value_from_str_with_parser): we were using the return
2546 value from this method to be "v has been set to a value", but this
2547 isn't enough state. We also need to know if the
2548 caller (dependency_object_set_attributes, specifically) should
2549 continue on or skip the attribute after it's called us. So, we
2550 add a "bool *v_set" parameter, and change the return value to
2551 "false = skip, true = continue processing." We return false in
2552 only 1 case right now, if a double-typed value is to be parsed
2553 from an empty string. This fixes the Klotski demo, which has
2554 <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
2555 usage to also deal properly with leading spaces, and stop
2556 duplicating "g_free (s); return true;" - just break there, and let
2557 the blanket free/return at the end of the method handle it.
2558 (dependency_object_set_attributes): simplify the {} handling, and
2559 stop leaking the string value of the attribute when we pass it to
2564 2009-08-15 Larry Ewing <lewing@novell.com>
2566 * mediaelement.cpp (Render): use the same logic we used in image
2567 here to always adjust the paint rect when stretch != StretchNone.
2571 2009-08-15 Larry Ewing <lewing@novell.com>
2573 * shape.cpp (MeasureOverride): Stretch to the proper width when
2574 available size in not infinite. Avoid using infinite dimesions as
2575 constraints for Uniform stretches.
2577 Fixes Header stretching in playboy an improves DRT #210.
2581 2009-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
2583 * pipeline.cpp: Quiet some debug spew.
2587 2009-08-14 Larry Ewing <lewing@novell.com>
2589 * grid.cpp (MeasureOverride): properly use min and max.
2591 Fixes regression in DRT #319 from new table code
2595 2009-08-14 Larry Ewing <lewing@novell.com>
2597 * media.cpp: always adjust our paint rectangle when Stretch !=
2600 Fixes DRT #516 and the regression in #422
2604 2009-08-14 Larry Ewing <lewing@novell.com>
2606 * frameworkelement.cpp (Arrange): apply the size constraints after
2607 we the the actualsize back from the element.
2609 * layoutinformation.cpp (GetClip): now that other things are
2610 improved only traverse up one level.
2612 Fixes clipping on the smooth streaming size and DRT #210
2616 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2618 * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
2623 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2625 * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
2626 variables in local variables and clear out the instance variables
2627 before unreffing them - prevents certain rare cases of infinite loops.
2631 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2633 * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
2634 we've been disposed.
2638 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2640 * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
2645 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2647 * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
2648 if we've been disposed.
2652 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2654 * pipeline.cpp: IMediaObject::Dispose: clear the list of events
2655 we were supposed to emit on the main thread.
2659 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2661 * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
2665 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2667 * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
2668 variables in local varaibles and clear out the instance variables
2669 before unreffing them - prevents certain rare cases of infinite loops.
2673 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2675 * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
2676 variables in local variables and clear out the instance variables
2677 before unreffing them - prevents certain rare cases of infinite loops.
2681 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2683 * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
2688 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2690 * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
2691 dependency between MmsPlaylistEntry and Media.
2695 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2697 * pipeline.cpp: Media::Dispose: store a copy of our instance variables
2698 in local variables and clear out the instance variables before
2699 unreffing them - prevents certain rare cases of infinite loops.
2703 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2705 * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
2709 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2711 * pipeline-asf.cpp: Add a few missing unrefs.
2715 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2717 * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
2718 the closure is called.
2722 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2724 * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
2725 can detect if the callback has been called or not.
2729 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2731 * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
2732 dispose on the media thread, call dispose directly.
2736 2009-08-14 Alan McGovern <amcgovern@novell.com>
2739 * grid.cpp: Rewrite the size allocation code in grid to better
2740 match the microsoft implementation. It works much better for
2741 the pixel and auto cases, but still has some issues with
2742 star columns. r: lewing
2744 2009-08-14 Jeffrey Stedfast <fejj@novell.com>
2746 * application.cpp (GetResource): Close the stream when we're
2747 done. Also changed to check write_cb exists before reading from
2748 the stream - if the callback is NULL, don't even bother.
2749 (GetResourceAsBuffer): Removed.
2750 (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
2751 the streaming ourselves. Also return NULL if writing the stream to
2754 * utils.cpp (managed_stream_open/read/write/etc): Changed to be
2755 internal. These symbols don't need to be publicly exported.
2757 * utils.h: Added a Stream_Close function signature to
2758 ManagedStreamCallbacks.
2760 * bitmapimage.cpp (resource_notify): Make static/internal - does
2761 not need to be publicly exported.
2765 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
2767 * multiscaleimage.cpp: retry downloading up to 5 times.
2769 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
2771 * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on
2776 2009-08-13 Larry Ewing <lewing@novell.com>
2778 * usercontrol.cpp (MeasureOverride): don't constrain the results.
2784 2009-08-13 Larry Ewing <lewing@novell.com>
2786 * textblock.cpp (MeasureOverride):
2787 * textbox.cpp (MeasureOverride): ceil our measurement request when
2788 layout rounding is being done so that we don't get rounded down
2789 and forced to wrap. More testing is in order but failure mode for
2792 Fixes wrapping in Playboy and the chess final screen.
2796 2009-08-13 Larry Ewing <lewing@novell.com>
2798 * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
2799 to idle so that firefox and gtk can process events without getting
2800 starved. Improved Quakelight and StrangeAttractor experience.
2804 2009-08-13 Larry Ewing <lewing@novell.com>
2806 * src/brush.cpp: replace all cairo_matrix_invert calls with a
2807 version that warns if it fails.
2811 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2813 * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
2814 advance width is 0. Fixes test-videobrush-text.xaml to render all
2819 2009-08-13 Chris Toshok <toshok@novell.com>
2821 * xaml.cpp (start_element): If the element is a TextBox.Text
2822 CDATA, treat it as verbatim. Partial fix for drt 2003.
2826 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2828 * layout.cpp (Layout): Make sure all attributes were able to load
2829 their fonts. If not, we can't proceed. Fixes the NULL TextFont
2832 * textblock.cpp (OnPropertyChanged): Instead of using
2833 UpdateLayoutAttributes(), all we really need to do is call
2834 UpdateFontDescriptions() when the FontSource changes.
2838 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
2840 * fonts.cpp (TextFont::Load): When loading a font face from a
2841 source w/o any families specified, make sure to set master=0 so
2842 that we don't try to get extents from faces[-1].
2846 2009-08-13 Larry Ewing <lewing@novell.com>
2850 * writeablebitmap.cpp (InitializeFromBitmapSource): always use
2851 rgba pixelformat like sl3 does now.
2853 2009-08-12 Chris Toshok <toshok@ximian.com>
2855 * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
2856 "own" (default: true) which, if true, causes the bitmap source to
2857 free the bitmapdata when it's destroyed.
2859 * cbinding.h|cpp: regen
2861 2009-08-12 Alan McGovern <amcgovern@novell.com>
2864 * cbinding.cpp: regen r: toshok
2870 * contentcontrol.cpp:
2871 * frameworkelement.cpp: A ContentControl which has no Template
2872 needs to call into managed land to create a 'default
2873 template'. When the Content is a UIElement, the UIElement is
2874 used as the template root, otherwise a Grid + TextBlock
2875 (with Binding) is used. This is the same as what
2876 ContentPresenter does to its Content property. r: toshok
2878 2009-08-12 Alan McGovern <amcgovern@novell.com>
2880 * uielement.cpp: VisualParent should be set to null before
2881 invalidating the cache otherwise the element might be added
2882 to the dirty lists. This causes issues if the element is
2883 added back into the visual tree at a different level. r:
2886 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
2888 * multiscaleimage.cpp: clear the cache on source change, cache a NULL
2889 tile on downloader failure (fix drt 2014 for good).
2891 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
2893 * multiscaleimage.cpp: restore the initial number of concurrent
2894 downloaders, drt 2014 will require a proper fix.
2896 2009-08-12 Chris Toshok <toshok@ximian.com>
2898 * media.h|cpp (class Image): if our source is a BitmapSource,
2899 handle the PixelDataChangedEvent and Invalidate ourselves if it's
2902 * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
2903 handle the PixelDataChangedEvent and notify our listeners to
2904 redraw if it's emitted.
2906 * bitmapsource.h|cpp (class BitmapSource): add an event so classes
2907 using BitmapSources can be notified when the pixel data
2908 changes (primarily for use with WriteableBitmap). Emit it from
2909 BitmapSource::Invalidate.
2911 * type-generated.cpp, cbinding.h|cpp: regen
2913 2009-08-11 Chris Toshok <toshok@ximian.com>
2915 [ each of these changes fixes a line of text in drt 444 ]
2916 * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
2919 * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
2920 UpdateLayoutAttributes if FontSource is changed, so that the
2921 change propagates down to the inlines.
2925 2009-08-11 Larry Ewing <lewing@novell.com>
2927 * grid.cpp (MeasureOverride): adjust row definition values by
2928 max/min values when building up the Actual sizes
2934 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
2936 * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
2937 the TextFontDescription as well as emitting an event so the view
2938 knows it has to re-render. Improves drt 480.
2939 (PasswordBox::OnPropertyChanged): Same.
2940 (TextBox::ClearFontSource): Removed, not used.
2941 (PasswordBox::ClearFontSource): Same.
2945 2009-08-11 Andreia Gaita <avidigal@novell.com>
2947 * runtime.cpp: TimeManager should be the last thing destroyed, other
2948 objects might need to access it while disposing. r: alan
2950 2009-08-11 Stephane Delcroix <sdelcroix@novell.com>
2952 * multiscaleimage.cpp: cast so the modulo operation opers on int,
2953 not guint64. Fix sharedtiles usage. r:shana, lewing
2955 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
2957 * textbox.cpp (TextBoxBase::Paste): Change the multiline
2958 truncation test to explicitly check for \r, \n and 0x2028 instead
2959 of using g_unichar_type() which didn't return the expected values
2960 for these characters. Partial fix for drt 2003.
2961 (*Box::OnPropertyChanged): Updated for AddResource() API change.
2963 * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
2964 AddResource() API change.
2966 * fontmanager.cpp (AddResource): Instead of having our callers
2967 generate a unique resource name, let us do it for them. Don't
2968 bother using mkstemp()/mkdtemp() since our root dir is already
2969 unique. Also fixed to reset the stream resource after consuming it
2970 so that if multiple textblocks/boxes/etc reuse the FontSource,
2971 things work properly. Partial fix for drt 444.
2975 2009-08-11 Alan McGovern <amcgovern@novell.com>
2977 * runtime.cpp: Controls aren't really auto-focused. What
2978 happens is that when a focused control is removed from the
2979 live tree SL does not emit a LostFocus event and so when the
2980 control is added back into the tree it still thinks it has
2981 focus. This call is still needed as there can be pending
2982 GotFocus/LostFocus events waiting to be emitted. r: toshok.
2984 2009-08-11 Alan McGovern <amcgovern@novell.com>
2986 * runtime.cpp: Make HandleUIKeyPress do the same thing as
2987 HandleUIKeyRelease when there is no toplevel so it doesn't
2990 2009-08-10 Larry Ewing <lewing@novell.com>
2992 * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
2993 jpg abort the getresource call.
2995 2009-08-07 Larry Ewing <lewing@novell.com>
2997 * dirty.cpp (UpdateLayout): don't use the toplevel hack on
3000 Gets DRT #516 very close to passing slight layout problems left.
3002 2009-08-10 Andreia Gaita <avidigal@novell.com>
3004 * ptr.h: Change the base class to not allow direct casts to Value
3005 objects. Add cast operator to cast between DO classes directly
3007 2009-08-10 Andreia Gaita <avidigal@novell.com>
3009 * animation.[h|cpp]: Check for valid applier before trying to use it,
3010 it could be disposing, same for targetprop.
3011 * timemanager.cpp: clear applier when disposing
3013 2009-08-10 Andreia Gaita <avidigal@novell.com>
3015 * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
3016 pointer for DependencyObject.
3017 * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
3018 * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
3019 them when destroying
3021 2009-08-10 Alan McGovern <amcgovern@novell.com>
3023 * frameworkelement.cpp: A new measure pass should be made if
3024 either the available width *or* available height has changed
3025 since the last measure pass.
3027 2009-08-10 Andreia Gaita <avidigal@novell.com>
3029 * ptr.h: fix assignment operators, the copy by reference ones were
3030 causing the pointer to be destroyed prematurely when assigning via
3033 2009-08-08 Chris Toshok <toshok@ximian.com>
3035 * fontmanager.cpp (FontManager::AddResource): pass stream->handle
3036 as the first arg to stream->Read, not stream itself. Also, get
3037 rid of "total" and just pass a 0 offset for each read, since we're
3038 writing the full buffer's contents up to nread each time anyway.
3040 2009-08-07 Andreia Gaita <avidigal@novell.com>
3044 * multiscaleimage.cpp: Fix the type of the left shit operations to
3045 avoid overflows. Make it an inline function for easier maintenance.
3046 * tilesource.[h|cpp]: Fix the type of the image width and height,
3047 should be bigger than int.
3049 2009-08-07 Jeffrey Stedfast <fejj@novell.com>
3053 * textbox.cpp (TextBox::OnPropertyChanged): If setting
3054 SelectedText to "", don't emit TextChanged events if there was no
3056 (PasswordBox::OnPropertyChanged): Same.
3058 2009-08-06 Chris Toshok <toshok@ximian.com>
3060 * runtime.cpp (Surface::tick_after_attach_reached): the ordering
3061 of code between this method and Surface::ToplevelLoaded is likely
3062 still somewhat wrong, but moving the Emit here fixes drt #21.
3064 2009-08-06 Chris Toshok <toshok@ximian.com>
3066 * window-gtk.cpp: move the InvokeTickCalls from here...
3068 * runtime.cpp: to the HandleUI* methods here, so they will be used
3069 in both windowed and windowless codepaths.
3071 2009-08-06 Chris Toshok <toshok@ximian.com>
3073 * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
3074 another argument now (the data object passed to AddTickCall) so we
3075 can differentiate callbacks properly.
3077 * runtime.h|cpp (Surface::Attach): we don't return true from
3078 IsLoaded until after the first tick, so that our measure pass has
3079 been run (and contentpresenters are created for all content
3080 controls.) register the tick call here (after removing any that
3081 may have already been added).
3082 (Surface::tick_after_attach_reached): set ticked_after_attach to
3084 (Surface::IsLoaded): we require ticked_after_attach to be true
3087 * cbinding.h|cpp: regen.
3089 2009-08-06 Jeffrey Stedfast <fejj@novell.com>
3091 * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
3092 selection, just set the selection to the cursor position. This
3093 way, if the control gets programatically Focus()'d again, then the
3094 cursor will be where it was just before the control lost
3095 focus. Partial fix for drt 2003.
3097 2009-08-06 Jackson Harper <jackson@ximian.com>
3099 * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
3100 property has already been set.
3102 2009-08-06 Jackson Harper <jackson@ximian.com>
3104 * xaml.cpp: Its possible that a buffered element can add a new
3105 namespace that start_element_handler will not know about, just
3106 ignore this error and the namespace will be added when the buffer
3109 2009-08-06 Jackson Harper <jackson@ximian.com>
3111 * xaml.cpp: Handle null in the print_tree debug code. (This can
3112 occur when loading a null template)
3114 2009-08-05 Larry Ewing <lewing@novell.com>
3116 * frameworkelement.cpp (UpdateLayout): revert an accidental
3119 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3121 * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
3122 should not copy the text buffer to the clipboard if the contents
3125 2009-08-05 Larry Ewing <lewing@novell.com>
3127 * uielement.cpp (ElementRemoved): clear the desired size when
3128 removing the element.
3130 * layoutinformation.cpp: partially revert one of the workarounds.
3132 * frameworkelement.cpp (Arrange): get the old_size from the
3133 RenderSize not the ActualWidth.
3135 2009-08-05 Chris Toshok <toshok@ximian.com>
3137 * popup.cpp (class GenerationClosure): new closure for emiting the
3138 Opened and Closed events.
3139 (Popup::emit_opened, Popup::emit_closed): pass the generation from
3140 the closure to ->Emit.
3141 (Popup::OnPropertyChanged): for the tick call, pass a closure that
3142 contains the current event generation.
3144 * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
3145 factor out the loop for invoking tick calls here and call it from
3146 the source tick method.
3148 * window-gtk.cpp (MoonWindowGtk::button_press)
3149 (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
3150 (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
3151 (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
3152 (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
3153 TimeManager::InvokeTickCalls from each of these methods before we
3154 call the Surface::HandleUI* method.
3156 * dependencyobject.h (class EventObject): make a couple of api
3158 (AddTickCall*): add an "EventObject* data" parameter. if it's
3159 NULL, pass "this", so we have the current behavior.
3160 (DoEmit/Emit): add a "starting_generation" optional argument. if
3161 it's supplied, we invoke only those handlers with tokens less than
3162 the starting_generation (i.e. those handlers that were registered
3163 before the event was generated.)
3165 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3167 * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
3168 FontSource property when the FontFamily property changes.
3169 (TextBox::OnPropertyChanged): Handle FontSource property changes.
3170 (PasswordBox::OnPropertyChanged): Same.
3172 * textblock.cpp (CleanupDownloaders): Free the font_source string
3174 (SetFontSource): Update the font_source string based on the
3176 (UpdateLayoutAttributes): No longer need to get the font_source
3177 string, we already have it.
3178 (UpdateFontDescriptions): Same.
3179 (OnCollectionItemChanged): Here too.
3180 (OnPropertyChanged): Update the font_source string when the
3181 FontSource property changes.
3183 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3185 * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
3186 GdkEventButton structure, use the new MouseEventArgs accessors
3189 * eventargs.cpp (GetButton): Get the id of the button pressed.
3190 (GetClickCount): Get the number of clicks on the button.
3192 2009-08-05 Alan McGovern <amcgovern@novell.com>
3194 * panel.cpp: The LogicalParent needs to be set before the
3195 element is added, otherwise the Loaded event can be fired
3196 before LogicalParent is set.
3198 2009-08-04 Larry Ewing <lewing@novell.com>
3200 * uielement.cpp (DoMeasure): invalidate up the tree more
3201 agressively. Fixes DRT #190 regression.
3203 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
3205 * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
3206 callback for the MultiClick event.
3207 (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
3208 double and triple mouse clicks.
3210 * uielement.h: Added a MosueLeftButtonMultiClickEvent.
3212 * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
3213 (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
3215 * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
3217 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
3219 * utils.cpp (write_all): Changed to just return int (-1 for fail,
3221 (ExtractFile): Don't fsync(). Saves us a lot of time.
3223 2009-08-03 Larry Ewing <lewing@novell.com>
3225 * shape.cpp (ArrangeOverride): clear the current path.
3227 2009-08-03 Larry Ewing <lewing@novell.com>
3229 * textbox.cpp (OnModelChanged): InvalidateMeasure when things
3232 2009-08-03 Jeffrey Stedfast <fejj@novell.com>
3234 * fontmanager.cpp (AddResource): Implemented a version of this
3235 interface that can take a ManagedStreamCallbacks argument.
3237 * application.cpp (GetResourceAsPath): If we are adding the X's
3238 ourselves, use MakeTempDir() instead of CreateTempDir().
3240 2009-07-31 Larry Ewing <lewing@novell.com>
3242 * layoutinformation.cpp (GetClip): add another hack for layoutclip
3243 on Controls while things are in flux.
3245 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3247 * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
3248 the work was enqueued or not.
3250 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3252 * pipeline.cpp: Media: use the new ClearQueue overload instead of
3253 spreading the logic all over the place.
3255 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3257 * pipeline.cpp: Media: add a ClearQueue overload which optionally
3260 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3262 * playlist.cpp: Don't g_warn something which can happen in normal
3265 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3267 * mediaplayer.cpp: Plug a leak in one rare code-path.
3269 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3271 * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
3273 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3275 * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
3277 2009-07-31 Jeffrey Stedfast <fejj@novell.com>
3279 * fonts.cpp (LoadPortableUserInterface): Always load the en-US
3280 font(s) first, and then load the preferred CJK font, followed by
3281 the rest. This improves drt 414.
3283 * fontmanager.cpp (GetExtents): Improved baseline alignment by
3284 adjusting Descent if Height is larger than Ascent +
3285 Descent. Especially visible with drt 107's Deobfuscated Brauhaus
3288 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3290 * deployment.cpp: Dispose: we need to unref and null out the application.
3292 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3296 * eventargs.cpp|h: Set the object's type upon construction instead
3297 of using SetObjectType right after. This is useful when tracking
3298 objects by type - the ctor also shows up.
3300 * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
3301 a Type::Kind argument.
3303 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3305 * debug.cpp: Make the stacktrace pipes thread-local. This way
3306 printing stacktraces from several threads at the same time doesn't
3307 result in a big mess.
3309 2009-07-30 Larry Ewing <lewing@novell.com>
3311 * layoutinformation.cpp (GetClip): add a workaround for the panel
3312 case while layoutinformation is refactored.
3314 2009-07-30 Larry Ewing <lewing@novell.com>
3316 * layoutinformation.cpp: repair a merge bug.
3318 2009-07-30 Larry Ewing <lewing@novell.com>
3320 * layoutinformation.cpp, layoutinformation.h: move layoutinformation
3321 out of uielement.h. Compute the layout clip on the fly.
3324 * dependencyproperty.g.cpp:
3325 * frameworkelement.cpp:
3326 * frameworkelement.h:
3337 * uielement.h: start reworking layout logic at we refactor
3338 layoutinformation. Use RenderLayoutClip where appropriate.
3340 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
3342 * fontmanager.cpp (GetExtents): Much better fix than the
3343 string-comparison hack. Poke at the TrueType/OpenType OS/2 table
3344 and use the usWinAscent/usWinDescent values since this is what
3345 most Windows applications (brokenly) use according to some info I
3346 found on the web. Low and behold, this also makes the Adobe Caslon
3347 Pro metrics work out exactly like they do in Silverlight, so I'm
3348 guessing that the info I found is accurate :-)
3350 2009-07-30 Larry Ewing <lewing@novell.com>
3352 * uielement.cpp (DoArrange): revert the parent invalidation change as it
3355 2009-07-30 Larry Ewing <lewing@novell.com>
3357 * control.cpp (OnPropertyChanged): update the layout if the
3360 2009-07-30 Larry Ewing <lewing@novell.com>
3362 * uielement.cpp (DoArrange): remove the parent invalidation call
3363 it shouldn't be required now and is contraindicated by DRT #501.
3365 * runtime.cpp: InvalidateMeasure on resize.
3367 2009-07-30 Alan McGovern <amcgovern@novell.com>
3370 * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
3373 * dependencyobject.h:
3374 * dependencyobject.cpp: Implement a new method for adding
3375 callbacks to invoke asynchronous events. They can't be
3376 invoked using the regular AddTickCall as that causes the
3377 ordering of mouse events and asynchronous events to be
3378 incorrect preventing drt 333, 476 and some others from
3381 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
3383 * fontmanager.cpp (GetExtents): Now uses the alternative method of
3384 getting font metrics. Also, when dealing with Adobe fonts, use the
3385 bbox to get metrics rather than using the normal
3386 ascender/descender/height values.
3388 2009-07-30 Jackson Harper <jackson@ximian.com>
3390 * xaml.cpp: Swallow white space before linebreaks.
3392 2009-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
3394 * src.mdp: Connect the Build command in
3395 MonoDevelop with 'make install'.
3397 2009-07-30 Andreia Gaita <avidigal@novell.com>
3399 * multiscaleimage.cpp: leak and initialization fixes
3401 2009-07-30 Andreia Gaita <avidigal@novell.com>
3403 * shape.cpp: use smart pointer to avoid unreffing by hand
3405 2009-07-30 Andreia Gaita <avidigal@novell.com>
3407 * timeline.cpp: leak fix
3409 2009-07-30 Andreia Gaita <avidigal@novell.com>
3411 * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
3412 * Makefile.am: updated
3414 2009-07-29 Larry Ewing <lewing@novell.com>
3416 * border.cpp (ArrangeOverride): return the input now that it is
3419 * frameworkelement.cpp: short circuit Measure and Arrange if the
3420 element is collapsed.
3422 2009-07-29 Jeffrey Stedfast <fejj@novell.com>
3424 * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
3425 of the keyboard event was handled (meaning the state has changed).
3426 (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
3429 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3431 * shape.cpp: Plug a leak.
3433 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3435 * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
3436 semantics as EventObject::Emit: unref the event args at the end of
3439 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3441 * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
3442 unreffing the reffed media we've got.
3444 2009-07-29 Sebastien Pouliot <sebastien@ximian.com>
3446 * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
3447 Helper.CheckIntegrity (System.Windows.dll)
3449 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3451 * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
3452 improvement: return true immediately if we've actually managed to
3453 open a demuxer instead of enqueuing another call to
3456 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3460 * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
3461 to the playlist before initializing it, since initializing it may
3462 end up opening it right away and then it must be present in the
3465 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3467 * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
3468 created when done with them.
3470 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3472 * pipeline.cpp: printf -> LOG_PIPELINE.
3474 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3476 * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
3477 when we're done with it.
3479 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3481 * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
3482 unref it when done with it.
3484 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3486 * dependencyobject.h: Make EventObject::GetObjectType
3487 non-virtual. No need for a virtual method anymore, since we store
3488 the type on the object itself.
3490 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3492 * application.cpp: unref the downloader when it has finished.
3494 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3496 * utils.cpp|h: Cancellable: use strong typing to store the
3497 downloader and ref it. This way the cancel callback can use the
3500 2009-07-29 Alan McGovern <amcgovern@novell.com>
3505 * cbinding.cpp: 1) TextBox cannot hook into Key press events
3506 in unmanaged code otherwise they never propagate to managed
3507 and the user cannot intercept them. Instead of hooking to
3508 the event in native code, just call native
3509 TextBox::OnKeyDown in the managed override.
3510 2) Key press events are actually handled in two different
3511 places. 'Navigation' keypresses like Left/Right/PgUp are
3512 handled when the textbox OnKeyDown virtual method is
3513 invoked. 'Character' keypresses like 'a', 'b', 'c' are
3514 handled after the KeyDown event is emitted
3515 3) If a key press does not affect the textbox state (i.e.
3516 pressing 'left' when the caret is already at the very left),
3517 then the keypress is not handled.
3518 4) The KeyDown event is emitted even if OnKeyDown is overriden
3519 and the base method is not invoked.
3520 5) The tab key should be interpreted as 'Focus next control'
3521 only after the KeyDown event handlers have run and the key
3522 press is not handled.
3524 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
3526 * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
3527 know we can't decode. This means that if the user does not have
3528 MS codecs (or any other codecs) installed, he'll get the download
3529 codecs dialog for wmav3 media too.
3531 2009-07-28 Sebastien Pouliot <sebastien@ximian.com>
3533 * mediaelement.cpp: Add a check if the codecs have already been
3534 downloaded/installed without refreshing the browser. This will
3535 stop additional dialogs showing up and fix a crash (x86_64) if
3536 the codecs are downloaded/installed a second time in the same
3539 2009-07-27 Larry Ewing <lewing@novell.com>
3542 * src/frameworkelement.cpp:
3545 * src/textblock.cpp:
3546 * src/usercontrol.cpp: Move the alignment logic out of the
3547 controls and into the Arrange call now.
3549 Fixes DRT #335 improves several others.
3551 2009-07-28 Jackson Harper <jackson@ximian.com>
3553 * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
3555 - Don't create a Matrix for TRANSFORM properties if "Identity" was
3556 used as the string. (kinda seems like an SL bug to me).
3558 2009-07-28 Jeffrey Stedfast <fejj@novell.com>
3560 * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
3562 * window-gtk.cpp (button_press): Revert change to drop
3563 2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
3564 we find a better way (also, 234 is still broken even with this
3565 change, which breaks 337 and possibly makes other
3566 TextBox/PasswordBox drts unfixable).
3568 2009-07-27 Larry Ewing <lewing@novell.com>
3570 * glyphs.cpp, glyphs.h: Start implmenting glyph layout. Fixes DRT #442.
3572 2009-07-27 Larry Ewing <lewing@novell.com>
3574 * frameworkelement.cpp: Always round down when doing layout
3577 * uielement.cpp (OnPropertyChanged): Invalidate layout on
3582 2009-07-27 Chris Toshok <toshok@ximian.com>
3584 * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
3585 handler *after* all registered handlers. part of the fix for drt
3588 * window-gtk.cpp (MoonWindowGtk::button_press): ignore
3589 double-click and triple click gdk events here. part of the fix
3592 2009-07-27 Jackson Harper <jackson@ximian.com>
3594 * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB. It
3595 is legal to hydrate a top level managed non DOB class.
3596 * cbinding.cpp|h: regen
3598 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
3600 * mp3.cpp: When seeking and we don't have enough data to seek to
3601 the desired pts, try again a bit later. Fixes MS DRT #59.
3603 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
3605 * src.mdp: Use Makefile integration.
3607 2009-07-27 Alan McGovern <amcgovern@novell.com>
3609 * uielement.cpp: Default styles are applied even if the user
3610 applies a style. Fixes some visual glitches in the controls
3613 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
3615 * pipeline.cpp|h: Use Application::GetResource instead of creating
3616 downloaders to get data.
3618 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
3620 * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
3623 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
3625 * application.cpp: GetResource: set the notify_size callback
3626 on the downloader too. Media must known the size whenever possible.
3628 2009-07-27 Larry Ewing <lewing@novell.com>
3630 * uielement.cpp (GetTransformToUIElementWithError): signal and
3631 error in the to_element doesn't have a Surface case.
3633 2009-07-26 Larry Ewing <lewing@novell.com>
3635 * rect.h: make PointInside inclusive on the top/left.
3637 2009-07-24 Larry Ewing <lewing@novell.com>
3639 * textblock.cpp: Rework the bounds computation to be the max of
3640 the actual and the framework element settings. Fixes DRT #245.
3642 2009-07-24 Larry Ewing <lewing@novell.com>
3644 * border.cpp: Apply the default constraints more carefully.
3646 * src/frameworkelement.cpp, src/frameworkelement.h: add
3647 ApplySizeContraints method, use it.
3651 * src/textblock.cpp:
3652 * src/usercontrol.cpp: use ApplySizeContraints method.
3654 2009-07-24 Larry Ewing <lewing@novell.com>
3656 Rename some of the layout information based on some
3659 2009-07-24 Jeffrey Stedfast <fejj@novell.com>
3661 * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
3662 width/height properties change, pass those values along to our
3663 TextBoxView as well.
3665 2009-07-24 Jackson Harper <jackson@ximian.com>
3667 * xaml.cpp: Instead of cloning the element set it's namescope
3668 explicitly so it doesn't get registered in another namescope when
3669 it is used as a property of an element in another namescope.
3671 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
3673 * downloader.cpp (same_domain): Fixed to be safe if/when a uri
3676 2009-07-23 Alan McGovern <amcgovern@novell.com>
3678 * animation.cpp: If the initial value is null, create a Value
3679 with the correct type with IsNull set to true.
3681 2009-07-23 Jackson Harper <jackson@ximian.com>
3683 * xaml.cpp: If we are getting a named item from the app resources
3684 we should clone it since it comes from a different namescope. This
3685 allows you to have named items in app.resources be referenced in
3686 control code as a static resource even if it has the same name as
3687 an object in the control code.
3689 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
3691 * fonts.cpp (LoadPortableUserInterface): Even if we are a
3692 Silverlight 2.0 app, we still need to load Lucida Sans for the
3693 font face extents (Lucida extents seem to be very close to what
3694 Microsoft Silverlight is using).
3696 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
3698 * runtime.cpp: HandleUIKeyRelease: add a null check before
3699 accessing toplevel. Apparently toplevel can be null when the
3700 site fails to load completely (mstv.cz / bug #506306).
3702 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
3704 * media.h: MarkerReachedEventArgs: make Markers accessible to
3708 * cbinding.cpp: Regenerated.
3710 2009-07-22 Chris Toshok <toshok@ximian.com>
3712 * animation.h|cpp: add some more accessors for AnimationStorages
3713 so we can clone them.
3715 * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
3716 from here, and put it in DependencyObject where (imo) it belonged
3719 * dependencyobject.h|cpp: move the AnimationStorage stuff here,
3720 and also add support for cloning the storage while we're cloning
3721 the object. This means that new animations started against
3722 existing objects (with animations) will inherit the right reset
3723 value. This fixes the button animation regression.
3725 2009-07-22 Jeffrey Stedfast <fejj@novell.com>
3727 * fonts.cpp (LoadPortableUserInterface): If the application is a
3728 Silverlight 2.0 app, default to Verdana instead of Lucida Sans
3731 * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
3732 is a no-op for ReadOnly TextBox controls.
3734 2009-07-22 Sebastien Pouliot <sebastien@ximian.com>
3736 * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
3737 the current timemanager.
3739 2009-07-21 Jeffrey Stedfast <fejj@novell.com>
3741 * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
3743 (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
3745 (TextBoxBase::OnKeyDown): If there is no selection and the user
3746 invokes the Cut or Copy commands, do not overwrite the clipboard
3747 buffer with an empty string.
3749 2009-07-21 Jackson Harper <jackson@ximian.com>
3751 * xaml.cpp: Raise errors from managed SetProperty.
3753 2009-07-21 Jackson Harper <jackson@ximian.com>
3755 * xaml.cpp: Don't raise errors if we are a managed element, let
3756 the managed SetProperty handle that stuff.
3758 2009-07-21 Alan McGovern <amcgovern@novell.com>
3761 * dependencyproperty.g.cpp: The issue with auto creating
3762 PathGeometry.Figures appears to be fixed so add
3763 AutoCreateValue to FiguresProperty and see how the bots
3766 2009-07-20 Chris Toshok <toshok@ximian.com>
3768 * application.h|cpp: add a ResourceBase parameter to all the
3769 GetResource calls and to the GetResourceCallback delegate type.
3771 * dependencyobject.h (DependencyObject::SetResourceBase,
3772 DependencyObject::GetResourceBase): new methods.
3774 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3775 "inherit" resource base from our parent (this might be very, very
3777 (DependencyObject::Initialize): init resource_base to null.
3778 (DependencyObject::~DependencyObject): free resource_base.
3780 * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
3781 resource using our resource base.
3783 * template.cpp (FrameworkTemplate::GetVisualTree): use the same
3784 resource base when expanding the template.
3786 * textblock.cpp (Inline::AddFontResource): locate the font using
3788 (TextBlock::AddFontResource): same.
3790 * textbox.cpp (TextBoxBase::AddFontResource): same.
3791 using our resource base.
3793 * glyphs.cpp (Glyphs::SetFontResource): same.
3795 * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
3796 those SetSurface calls, and put it here. Also, set the resource
3797 base at the same time.
3798 (XamlLoader::Initialize): store off the resource_base.
3799 (XamlLoader::~XamlLoader): and free it.
3800 (xaml_loader_new): take a resourceBase, and pass it along.
3801 (XamlLoader::HydrateFromString): set the ResourceBase on the
3803 (create_element_info_from_imported_managed_type): remove the
3804 SetSurface call, just call XamlParserInfo::AddCreatedElement.
3805 (XamlElementInstanceNative::CreateItem): same.
3806 (XamlElementInfoManaged::CreateElementInstance): same.
3807 (XamlElementInfoManaged::CreateWrappedElementInstance): same.
3809 * xaml.h (class XamlLoader): add a common Initialize method, and a
3810 ctor overload that takes a "resource base", which is the uri which
3811 we're loading from. Also add a GetResourceBase() accessor.
3815 2009-07-20 Larry Ewing <lewing@novell.com>
3817 * uielement.cpp (ComputeTransform): add a hack for placing popup
3820 * popup.cpp: call updatetransform on our child whenever the offset
3821 values change. Fixes DRTs #325 #503
3823 2009-07-18 Jackson Harper <jackson@ximian.com>
3825 * xaml.h|cpp: New flag on the loader for determining whether or
3826 not to auto import the default SL namespace.
3827 - Throw the proper error if the default namespace isn't available.
3828 * template.cpp: Templates get the default namespace auto
3831 2009-07-17 Larry Ewing <lewing@novell.com>
3833 * runtime.cpp (Attach): copy the current framerate to the new
3836 2009-07-17 Jeffrey Stedfast <fejj@novell.com>
3838 * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
3840 (TextBoxBase::Paste): Consider the SelectionLength in our
3841 MaxLength overflow calculation.
3842 (TextBuffer::ctor): Instead of taking ownership of a string
3843 buffer, just copy it instead. This keeps memory management more
3845 (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
3847 (TextBoxUndoActionReplace::ctor): Same, so copy it.
3848 (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
3849 the undo action. I think some of these situations leaked before.
3851 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3853 * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
3855 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3857 * multiscaleimage.cpp: more protections against crash with 31 layers
3859 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3861 * multiscaleimage.cpp: allow up to 31 layers.
3863 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
3865 * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
3867 2009-07-17 Alan McGovern <amcgovern@novell.com>
3869 * runtime.cpp: Correctly set 'emittingMouseEvent' to
3870 true/false when we receive a mouse event. Fixes some mouse
3871 capture issues in drt 535
3873 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3875 * playlist.cpp|h: Make the *Async methods really async, and add corresponding
3878 * mediaplayer.cpp: Don't allow Play while we're seeking.
3880 * mediaelement.cpp: When calling any of the async methods on the playlist,
3881 set the expected state immediately, since CurrentState is not async. Also
3882 allow Play/Pause/Stop if we're already in the desired state, since there might
3883 be another state changed pending.
3885 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3887 * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
3889 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3891 * pipeline.cpp|h: Notify the decoder when a seek has completed so
3892 that it can clean its state properly. FillBuffers: the final buffer size
3893 is equal to the smallest buffer size of all the streams, not the buffer
3894 size of the last stream.
3896 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3898 * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
3899 has already finished.
3901 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3903 * playlist.cpp|h: Fix IsSingleFile implementation.
3905 * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
3906 a Stop for non-playlist media.
3908 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3910 * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
3911 it whenever we stop the audio. AdvanceFrame: For media with a specified
3912 duration stop the audio when we've reached the desired duration.
3914 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3916 * mediaelement.cpp: OpenCompletedHander: Before emitting
3917 DownloadProgressChangedEvent get the highest DownloadProgress value
3918 from either our own dependency property or the media. For mms streams
3919 download progress needs to be 1.0 when emitting MediaOpenedEvent,
3920 the mms code sets media's DownloadProgress to 1.0 after parsing the
3921 asf header correctly, but since the media emits the DownloadProgressChanged
3922 event async, the dependency property in MediaElement hasn't been updated
3923 yet in OpenCompletedHandler.
3925 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3927 * pipeline.cpp: Allow buffering progress to go down, not only up.
3928 Also fix progress events to only emit if delta > 0.5% or if equal
3929 to lower/upper limits.
3931 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3933 * pipeline.cpp|h: When we get a decode frame request from another
3934 thread, store the request on the demuxer in a list, instead of on the
3935 media thread's stack. This ensures that decode frame requests are
3936 decoded in the same order they're requested.
3941 * type-generated.cpp: Regenerated.
3943 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3945 * playlist.cpp|h: Added and Emit EntryChangedEvent.
3947 * type-generated.cpp: Regenerated.
3949 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3951 * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
3954 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3956 * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
3957 buffer level will fluctuate as we play.
3959 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3961 * mediaelement.cpp|h: When we pause, store the current position, which we must return
3962 while paused. It may differ from the actual position when we pause, since the actual
3963 pause is done async.
3965 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3967 * mediaplayer.cpp|h:
3968 * mediaelement.cpp|h: Use a property value provider for
3969 Render/DroppedFramesPerSecond.
3971 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3973 * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
3974 call us from a worker thread.
3976 2009-07-16 Jackson Harper <jackson@ximian.com>
3978 * xaml.cpp: When creating user controls make sure that we are
3979 hydrating if an x:Class type name is used.
3981 2009-07-16 Jeffrey Stedfast <fejj@novell.com>
3983 * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
3984 'atomic' argument. If atomic is true, then the buffer is not
3985 growable. This is the behavior we want for TextBoxBase::Paste(),
3986 but not TextBoxBase::Commit() (which needs to allow growable
3987 insert actions so that Undo removes the string of text the user
3988 just typed as opposed to just the most recent character).
3989 (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
3990 TextBoxUndoActionInsert::.ctor().
3992 2009-07-16 Alan McGovern <amcgovern@novell.com>
3997 * uielement.cpp: 1) If the Control is not attached to a
3998 subtree which has been loaded, don't propagate IsEnabled to
4000 2) Whenever a Control is loaded we traverse it's visual
4001 parents until we find another control and propagate the
4004 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4006 * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
4007 properties as AlwaysChange. fix drt #291.
4009 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4011 * dependencyobject.cpp: Retrieve all instance variables we need
4012 into local variables before decreasing the refcount. If the
4013 refcount is > 0 after decreasing it, we can't access instance
4014 variables anymore, since another thread might have unreffed which
4015 would cause the object to be deleted already.
4017 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4019 * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
4022 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4024 * dependencyobject.cpp: Add sanity check for refcount < 0.
4026 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4028 * dependencyobject.cpp: Move sanity verification into #if SANITY.
4030 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4032 * dependencyobject.h: Is, GetType, GetTypeName: use the Type
4033 overloads which takes a Deployment and provide our deployment
4036 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4038 * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
4039 which takes a Deployment argument for when we already have the
4040 Deployment handy. This way we can avoid hitting
4041 Deployment::GetCurrent on some frequently used methods.
4043 * type.h: Regenerated.
4045 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4047 * runtime.h: Add stack trace to warning.
4049 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4051 * audio.cpp: Underflowed: if we haven't ended and don't have any
4052 more frames, we need to set the Waiting bit so that we start
4053 playing again when we get more frames.
4055 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4057 * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
4058 avoid issues while reusing dlders for the same images, like in drt2013
4060 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4062 * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
4063 on tilesource InvalidateTileLayer ().
4065 2009-07-16 Jackson Harper <jackson@ximian.com>
4067 * xaml.cpp: Remove some dead code.
4069 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4071 * deployment.h: DeploymentStack: Added to ease push/pop current
4072 deployment when calling into a browser.
4074 2009-07-15 Chris Toshok <toshok@ximian.com>
4076 * clock.h|cpp (Clock::CalculateFillTime): split this out from
4077 Clock::Begin since we can seek on a clock that hasn't actually hit
4079 (Clock::Begin): call CalculateFillTime.
4080 (Clock::UpdateFromParentTime): change our calculations slightly
4081 for what localTime is in the face of a seek, and update
4082 progress/localtime even when stopped. Also, call
4083 CalculateFillTime if we're seeking on a clock that hasn't started,
4084 to make sure we get the proper progress.
4085 (Clock::Seek): don't apply the SpeedRatio here, we do it in
4086 UpdateFromParentTime.
4088 * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
4090 (AnimationStorage::UpdatePropertyValue): pass the stopValue or
4091 baseValue as the defaultDestinationValue to
4092 AnimationClock::GetCurrentValue.
4093 (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
4094 (DoubleAnimation::GetCurrentValue): if there's a correctly typed
4095 defaultDestinationValue, use that before the base case of end =
4097 (ColorAnimation::GetCurrentValue): same.
4098 (PointAnimation::GetCurrentValue): same.
4100 2009-07-15 Jackson Harper <jackson@ximian.com>
4102 * xaml.cpp|h: Consolidate some of the data passed to
4103 every callback and not used much into a struct.
4105 2009-07-15 Jeffrey Stedfast <fejj@novell.com>
4107 * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
4108 return NULL, so properly handle this error condition.
4109 (IndexFontFile): Same.
4110 (FontManager::OpenFontFace): Here too.
4111 (OpenSystemFont): Don't destroy the FcPattern until after opening
4112 the font (otherwise the filename will be free'd memory).
4114 * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
4115 get the brush used for rendering the blinking caret. This is a 3.0
4118 2009-07-15 Alan McGovern <amcgovern@novell.com>
4121 * control.cpp: Remove the Control::SetVisualParent override
4122 which ensures Control::IsEnabled is propagated correctly as
4123 this needs to be performed in UIElement::SetVisualParent.
4124 Set the subtreeobject before calling
4125 FrameworkElement::ElementAdded otherwise Control::IsEnabled
4126 cannot be propagated.
4129 * uielement.cpp: Whenever the visual parent is changed on a
4130 UIElement we need to propagate Control::IsEnabled changes
4131 down the tree. Allows drt 557 to get a lot further.
4133 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4135 * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
4137 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4139 * pipeline.cpp: When seeking, reset buffering progress to 0.
4141 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4143 * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
4144 (that we know of), so initialize DownloadProgress to 1.0.
4146 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4148 * mediaelement.cpp: Don't emit CurrentStateChanged after calling
4149 SetState, since SetState will also emit the event.
4151 2009-07-15 Alan McGovern <amcgovern@novell.com>
4153 * tabnavigationwalker.cpp: If a child node is disabled, there
4154 is no point in walking its children or attempting to tab to
4157 2009-07-15 Jackson Harper <jackson@ximian.com>
4159 * xaml.cpp: We don't want to auto import the SL namespaces when
4162 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
4164 * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
4166 * cbinding.cpp|h: Regenerated.
4168 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4170 * bitmapimage.h|cpp: drop the downloader references, rely on
4171 Application::GetResource () for getting from resource AND downloading. The
4172 old downloader mechanism for v1 js callbacks.
4174 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
4176 * application.h|cpp: Application.GetResource () now try to get the resource
4177 from the managed callback, then fallback to downloading.
4179 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
4181 * utils.h|cpp: Cancellable class, passed as method argument, allows
4182 to abort an async action.
4184 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4186 * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
4187 hook itself in and invalidate the cache
4189 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4191 * tilesource.h|cpp: stub InvalidateTileLayer
4193 2009-07-15 Alan McGovern <amcgovern@novell.com>
4195 * control.cpp: Ensure that the control loses focus when it is
4196 disabled even if there are no other focusable controls. Also
4197 ensure the surface is not null before using it, fixes a
4200 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4202 * error.h: ErrorEventArg: Add accessors that can be pinvoked.
4204 * cbinding.cpp|h: Regenerated.
4206 2009-07-15 Alan McGovern <amcgovern@novell.com>
4208 * control.cpp: When the focused control is disabled, tab to
4209 the next suitable control.
4211 2009-07-15 Alan McGovern <amcgovern@novell.com>
4214 * runtime.cpp: Implement the default autofocusing behaviour
4215 which silverlight exhibits. Apparently if the root control
4216 is focused, silverlight will keep attempting to focus a
4217 child of that control until it succeeds. Once a child
4218 control is focused, the focus changed events are emitted
4219 immediately, ignoring the usual focusing rules. Fixes DRT
4222 2009-07-15 Alan McGovern <amcgovern@novell.com>
4224 * uielement.cpp: When clearing the Loaded flag on a UIElement,
4225 we should clear the flag on all visual children too.
4227 2009-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
4229 * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
4231 2009-07-14 Larry Ewing <lewing@novell.com>
4233 * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
4234 bounds when the bg changes. Fixes 641
4236 2009-07-14 Larry Ewing <lewing@novell.com>
4238 * border.cpp (OnSubPropertyChanged): elements must listen to
4239 subproperty changes for brushes. Fixes 2020
4241 2009-07-14 Alan McGovern <amcgovern@novell.com>
4243 * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
4244 called on a Control with the 'Cycle' navigation mode and
4245 none of the children of that node can be tabbed to, then
4246 focus remains on that control.
4248 2009-07-13 Jeffrey Stedfast <fejj@novell.com>
4250 * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
4251 string array until after we've finished using the hash
4252 table. Prevents FMRs.
4254 2009-07-13 Jackson Harper <jackson@ximian.com>
4256 * xaml.cpp: Don't allow setting x:Name and Name on the same
4258 - Raise an error if we try to set a property to an incompatible
4261 2009-07-13 Alan McGovern <amcgovern@novell.com>
4264 * uielement.cpp: If the focused element is removed from the
4265 visual tree, it should lose focus.
4267 2009-07-13 Jackson Harper <jackson@ximian.com>
4269 * xaml.cpp: Oops, trying to get the element name from the wrong
4272 2009-07-13 Jackson Harper <jackson@ximian.com>
4274 * xaml.cpp: Handle MoonErrors for AddChild.
4276 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
4283 * mms-downloader.cpp: IMediaObject: make the media field
4284 private, and add thread-safe property accessors (using a
4285 mutex and always returning a reffed object). Update all code
4286 which accessed the old accessor to use the new accessor and
4287 unref the media when done.
4289 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
4291 * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
4295 * type-generated.cpp: Regenerated.
4297 2009-07-13 Alan McGovern <amcgovern@novell.com>
4299 * control.cpp: A control does not have to be loaded to be
4300 focusable, the visual tree it's attached to has to be
4303 2009-07-13 Alan McGovern <amcgovern@novell.com>
4307 * tabnavigationwalker.h: TabNavigation should activate if the
4308 control does not handle the Tab key
4310 2009-07-13 Alan McGovern <amcgovern@novell.com>
4317 * tabnavigationwalker.h:
4318 * tabnavigationwalker.cpp: Commit the initial implementation
4319 of the TabNavigationWalker. Supports the three tabbing modes
4320 and also forward/backward tabbing. Passes drt 323 except for
4321 a default focusing issue.
4323 2009-07-13 Alan McGovern <amcgovern@novell.com>
4325 * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
4328 2009-07-13 Jérémie Laval <jeremie.laval@gmail.com>
4330 * src/dependencyproperty.cpp: Added const modifier to local variables.
4331 Fix the build with recent gcc.
4333 2009-07-10 Chris Toshok <toshok@ximian.com>
4335 * value.h.in|cpp (Value::Clone): new method, clone the DO if the
4336 value contains one, and otherwise just copy the contents.
4338 * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
4339 this is probably wrong, as the mapping needs to reference cloned
4340 objects, not the same objects that existed in the original
4343 * collection.h|cpp (Collection::CloneCore): clone the collection
4346 * dependencyproperty.h|cpp (resolve_property_path): add a
4347 promoted_values hashtable argument. if the value has already been
4348 promoted, don't do it again. promote the first value we can while
4349 resolving the property path. Don't promote UIElement subclasses
4352 * dependencyobject.h|cpp: add api for cloning (deep copying) for
4353 DependencyObjects. DependencyObject::Clone is the public
4354 interface, with subclasses overriding ::CloneCore if they need to.
4356 * color.cpp (color_to_string): multiply by 255, not 256.
4358 * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
4359 takes a hashtable now so we don't promote values more than
4360 once (doing so causes previous animations to target objects that
4361 are no longer attached anywhere).
4363 * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
4365 2009-07-10 Larry Ewing <lewing@novell.com>
4367 * shape.cpp (MeasureOverride): start working towards fixing
4368 LayoutShapes with some tweaking here.
4369 (Clip): apply the framework clip to elements in the flow too.
4371 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
4373 * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
4375 (TextBoxBase::CursorPrevWord): Same.
4376 (TextBoxBase::KeyPressRight): If there is currently a selection
4377 and the user presses ArrowRight by itself, set the anchor and
4378 cursor at the end of the selection.
4379 (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
4382 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
4384 * textbox.cpp: Always set SelectionStart before
4385 SelectionLength. Fixes a bug when selecting backwards from the end
4388 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
4390 * mediaelement.cpp|h: Store the last seeked-to position so that we never
4391 return a value before that as the current Position. MS DRT #486 uses
4392 a MediaStreamSource which returns frames before the seeked to position
4393 after seeking, and the test checks that MediaElement's Position property
4394 never returns a value before the seeked to position.
4396 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
4398 * audio.cpp: When we stop, we need to discard any audio data we might
4401 2009-07-10 Sebastien Pouliot <sebastien at ximian.com>
4403 * runtime.cpp|h, type-generated.cpp: Rename
4404 SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
4406 2009-07-09 Jeffrey Stedfast <fejj@novell.com>
4410 * uri.cpp: Don't use a GData for params, instead use a custom
4411 linked-list. This makes it easier to compare param lists.
4412 (operator==): Compare params.
4414 * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
4417 2009-07-09 Jackson Harper <jackson@ximian.com>
4419 * dependencyobject.cpp|h: Add a little more logic for setting
4420 things to NULL and consolidate in it's own function (STRING can
4421 now be set to NULL).
4423 2009-07-09 Sebastien Pouliot <sebastien at ximian.com>
4425 * downloader.cpp|h: Don't check redirection AFTER downloading the
4426 data. Expose CheckRedirectionPolicy so the plugin can check for
4427 the redirection policy when creating a new stream.
4428 * uri.cpp|h: Add IsAbsolute method and make the return value of
4431 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4433 * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
4434 the root takes care of that. (Playlist): loop over all children and
4435 call StopAsync on them, this way all nested playlists are reset properly
4436 (PlaylistRoot): when done stopping, reopen us.
4438 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4440 * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
4442 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4444 * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
4446 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4448 * mediaelement.cpp: Don't go directly into a Buffering state, when
4449 MediaOpened is emitted we must be either in Paused or Playing state.
4451 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4453 * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
4455 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4457 * mediaelement.cpp|h: Emit CurrentState events asynchronously.
4459 2009-07-08 Larry Ewing <lewing@novell.com>
4461 * frameworkelement.cpp (Arrange): apply min/max values to the
4464 2009-07-08 Jeffrey Stedfast <fejj@novell.com>
4466 * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
4467 at opening the requested system font. First, try using the font
4468 name exactly as the user gave it to us. If that fails, fallback to
4469 canonicalizing it and the style values.
4470 (style_diff): Modify the algorithm used to compare the style
4471 difference between 2 fonts.
4473 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
4476 * mediaelement.h: Add validators for Balance and Volume.
4477 This fixes MS DRT #960.
4479 * value.cpp|in: Add support for changing a value.
4482 * dependencyproperty.g.cpp: Regenerated.
4484 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4486 * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
4487 some casing changes with media attributes. PlayNext: fix logic, after
4488 finishing a nested playlist we must play the next entry in our playlist,
4489 not finish right away. If the pipeline raises a MediaError event due to
4490 missing a codec (which is most likely due to an unsupported media file),
4491 don't propagate the error, just play the next entry. Fix a lot of error
4492 code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
4493 as 99.6% of our playlist tests.
4495 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4498 * playlist.h|cpp: Unify playlist detection into one place and add
4499 support for skipping initial whitespace in the file.
4501 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4503 * playlist.cpp|h: String setters: be consistent: take a const string
4504 and dup inside the setter if required, instead of always when calling
4505 the setter, which may leak.
4507 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4509 * playlist.cpp: OnASXStartElement: null initialize to avoid reading
4512 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4514 * playlist.cpp: Cleanup: cleanup properly since we may continue to live
4515 after this method has been called.
4517 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4519 * playlist.cpp: PlaylistEntry: needs to ref/unref the source.
4521 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4524 * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
4525 the parsing fails, propagate the args up in the pipeline.
4527 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4529 * mediaelement.cpp: We need to populate media attributes before raising
4532 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4534 * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
4535 has changed at least a tiny bit.
4537 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4539 * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
4541 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4543 * mediaelement.cpp: Properly set CanPause and CanSeek, and always use
4544 mediaplayer's duration as NaturalDuration.
4546 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4548 * mediaplayer.cpp: All starting points seem to be allowed now, so don't
4549 throw an error event for starting point > duration anymore. Also duration
4550 is always the entire length of the media, regardless of when we start and
4551 how long we're supposed to play.
4553 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4555 * error.cpp|h: Add custom information to ErrorEventArgs, to provide
4556 better Moonlight debugging and in some cases we need more information
4557 than what MS reports.
4559 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
4561 * media.cpp: MediaAttributes are case-insensitive.
4563 2009-07-07 Jeffrey Stedfast <fejj@novell.com>
4565 * fontmanager.cpp (canon_font_family_and_style): New convenience
4566 function to canonicalize font family & style info, split out of
4568 (IndexMatchFace): Use the new function.
4570 2009-07-07 Jackson Harper <jackson@ximian.com>
4572 * style.h: Need an internal setter for IsSealed so we can do the
4573 parser seal/unseal hack.
4575 2009-07-07 Sebastien Pouliot <sebastien@ximian.com>
4577 * downloader.cpp|h: Add a new FontPolicy since it differs from
4578 XamlPolicy (which is otherwise *unused*) and fix policies wrt
4579 http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
4580 * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
4583 2009-07-07 Alan McGovern <amcgovern@novell.com>
4585 * namescope.cpp: Once a namescope is locked, don't allow names
4586 to be registered or unregistered. Fixes the case where the
4587 name is changed on a template item.
4589 2009-07-07 Alan McGovern <amcgovern@novell.com>
4593 * template.cpp: When expanding a template, mark all the
4594 children as TemplateItems so they will be able to look up
4595 the correct namescope.
4599 * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
4602 * dependencyobject.h:
4603 * dependencyobject.cpp: Add extra overloads to FindName and
4604 FindNameScope so that we can tell whether we are looking up
4605 a template name or regular name.
4608 * namescope.cpp: Add the ability to lock a namescope so it
4609 can be recognised as a template namescope.
4611 2009-07-07 Jackson Harper <jackson@ximian.com>
4613 * xaml.cpp: Lookup properties on the owner type so attached
4614 properties get looked up properly when setting them via text ie
4615 <Canvas.Left>5</Canvas.Left>
4617 2009-07-06 Jackson Harper <jackson@ximian.com>
4619 * xaml.cpp: Ignored elements should buffer their contents
4620 - Add in Ignored attributes
4622 2009-07-06 Jackson Harper <jackson@ximian.com>
4624 * xaml.cpp: Implement ignorable namespaces.
4626 2009-07-06 Larry Ewing <lewing@novell.com>
4628 * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
4630 2009-07-06 Stephane Delcroix <sdelcroix@novell.com>
4632 * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
4633 so ZoomAbout *= the target's value for zoom, not the current one.
4635 2009-07-06 Jeffrey Stedfast <fejj@novell.com>
4639 * fonts.cpp (LoadPortableUserInterface): Return the index of the
4641 (TextFont::Load): If PUI is our first family, keep track of which
4642 face the Lucida face is and use that as our master. Otherwise use
4644 (TextFont::UpdateFaceExtents): Use the 'master' face to get the
4645 extents from, rather than the first face.
4647 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
4649 * playlist.cpp: PlayNext: play even if previous entry didn't fail.
4650 Fixes our test #136.
4652 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
4654 * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
4655 playlist format so we'll never get it, it'll be parsed on the
4658 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
4660 * mediaelement.cpp: Fix warning.
4662 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
4666 2009-07-03 Larry Ewing <lewing@novell.com>
4668 * textblock.cpp (ArrangeOverride): try to get textblock height
4669 stretching closer. See 295 and 2020 for examples.
4671 2009-07-03 Alan McGovern <amcgovern@novell.com>
4673 * runtime.cpp: We don't need to change these actually.
4675 2009-07-03 Alan McGovern <amcgovern@novell.com>
4677 * runtime.cpp: When inside the if statement, we know that
4678 toplevel and element are the same, so use 'element' instead
4679 of 'toplevel' in case the toplevel is removed during the
4680 loaded/resized event. Fixes memorabilia.
4682 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
4684 * mms-downloader.cpp: ProcessResponseHeaderCallback:
4685 set current deployment.
4687 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4689 * pipeline-asf.cpp|h:
4690 * mms-downloader.cpp|h: If downloading the mms url
4691 doesn't succeed, raise an error. Fixes MS DRT #222
4694 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4697 * mediaelement.cpp: When playing an mms stream, SL sets
4698 DownloadProgress to 1.0 after downloading the header.
4699 Makes MS DRT #222 reach a bit further.
4701 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4703 * pipeline.cpp: Fix printf.
4705 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4707 * mediaelement.cpp: Handle DownloadProgressChanged events
4710 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4712 * downloader.cpp|h: Add another downloader API
4713 method, this time to get the DownloaderResponse.
4715 * cbinding.cpp|h: Regenerated.
4717 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
4719 * multiscaleimage.h: instruct the generator to do more for us.
4721 2009-07-02 Chris Toshok <toshok@ximian.com>
4723 * propertypath.h: fix operator== and add operator!=.
4725 * validators.h|cpp: add StoryboardTargetPropertyValidator.
4727 * dependencyproperty.g.cpp: regen.
4729 * animation.h (class Storyboard): use a special validator for
4730 TargetPropertyProperty such that it follows the semantics laid out
4731 in StoryboardTest.SetTargetPropertyTwice*.
4733 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
4735 * mediaelement.cpp: Protect against emitting BufferingProgressChanged
4736 when the actual value hasn't changed.
4738 * pipeline.cpp: FillBuffers: don't report any buffering progress
4739 if we don't have any media streams.
4741 2009-07-02 Jeffrey Stedfast <fejj@novell.com>
4743 * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
4744 argument which is used for loading the preferred default font (by
4745 language) first, before the other fallback fonts.
4746 (TextFont::Load): Pass in the 'lang' argument.
4747 (TextFontDescription): Added methods to get/set a Language
4750 * textblock.cpp (Inline::UpdateFontDescription): Set the language
4751 on the TextFontDescription.
4752 (TextBlock::OnPropertyChanged): If the
4753 FrameworkElement::LanguageProperty changes, reload the fonts and
4756 2009-07-02 Jackson Harper <jackson@ximian.com>
4758 * xaml.cpp: Fix error code so it gets propogated up when
4759 validating templates.
4761 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4763 * runtime.cpp: Fix printf.
4765 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
4767 * multiscaleimage.h|cpp: handle the various motion finished separately
4768 and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
4769 animations are completed.
4771 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
4773 * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
4774 use a custom property provider so getting vp origin or width returns
4775 the current value, while setting them sets the animation's targets.
4777 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4779 * pipeline.cpp: FillBuffers: Only take into
4780 account media streams when trying to determine
4781 if all streams have reached its end. Fixes our test
4784 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4786 * mediaelement.cpp: Reinvalidate everything when
4787 clearing a source. Fixes MS DRT #45 (after setting
4788 the source to an empty string, the media element
4789 shouldn't render anything anymore).
4791 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
4793 * pipeline.cpp: FillBuffers: Take into account that
4794 decoders may call SetOutputEnded once SetInputEnded
4795 is called, and update the number of ended streams
4796 immediately. Fixes our test #111.
4798 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4801 * playlist.cpp: Make debug output more descriptive.
4803 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4805 * pipeline-asf.cpp|h: Reimplement support for mms seeking.
4807 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4809 * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
4812 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4814 * mp3.cpp: Fix parsing of xing vbr headers causing wrong
4815 duration to get calculated of the file.
4817 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4819 * mp3.cpp: FindMpegHeader: fix return value: the offset of
4820 the header goes into the result output variable and we return
4821 success instead of returning a bogus error value.
4823 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4825 * pipeline.cpp: If we couldn't select a demuxer because of
4826 not having enough data yet, try again later.
4828 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4830 * mediaelement.cpp: If Source (or UriSource) is either null
4831 or an empty string, we're only supposed to clean up, not
4832 trying to play the null/empty string.
4834 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4836 * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
4837 to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
4838 all streams have finished their output, set buffering progress
4841 * playlist.cpp: Properly forward progress event args.
4843 * mediaelement.cpp: Set buffering progress when it changes,
4844 and raise BufferingProgressChanged. Don't try to autoplay
4845 when buffering progress is < 1.0, wait until it reaches 1.0.
4847 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4849 * audio-pulse.cpp: Fix warning.
4851 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4853 * audio-alsa.cpp: WriteMmap: If we try to write with an audio
4854 source which has ended, call Underflowed, since that's what's
4857 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4859 * audio-alsa.cpp: If hw setup failed, dump current hw parameters
4860 to stdout (if debug mode is enabled).
4862 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4864 * mms-downloader.cpp: Do better initialization and cleanup of
4865 downloader and state variables to prevent issues when seeking.
4867 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4869 * mms-downloader.cpp: Write: Don't use math when not necessary to
4870 avoid overflows, and if we end up freeing the buffer set the size
4873 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4875 * mms-downloader.cpp: Use thread-safe tick call from media thread.
4877 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4879 * mms-downloader.cpp: Don't leak the uri.
4881 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4883 * downloader.h: Make OpenInitialize public so that the
4884 MmsDownloader can reinitialize it when sending new requests.
4886 2009-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
4888 * audio.cpp: Play 24 bit audio unconditionally.
4890 2009-07-01 Chris Toshok <toshok@ximian.com>
4892 * Makefile.am (INCLUDES): turns out we need to include ../plugin
4893 here to deal with type-generated/type.h/etc.
4895 * type.h.in: fix annoying indent problem.
4897 * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
4898 value.h, type.h: regen
4900 2009-07-01 Larry Ewing <lewing@novell.com>
4902 * textblock.cpp (ArrangeOverride): take alignment into account
4903 when computing our size.
4905 2009-07-01 Jeffrey Stedfast <fejj@novell.com>
4907 * textblock.cpp (ArrangeOverride): Set the available width on the
4908 layout so that it can properly align the text for center/right
4911 2009-07-01 Jackson Harper <jackson@ximian.com>
4913 * xaml.cpp: Need to set the binding source when we are validating
4916 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
4918 * mediaelement.cpp: SetMarkerTimeout: when unreffing self
4919 use a delayed timeout, since we can be the last ref, this
4920 ensures the stack is unwound first.
4922 2009-06-30 Larry Ewing <lewing@novell.com>
4924 * border.cpp (Render): get CornerRound rendering closer to the sl
4927 2009-06-30 Chris Toshok <toshok@ximian.com>
4929 * clock.h|cpp: Seeking doesn't start the clock. And we have to
4930 support UpdateFromParentTime even while paused, since we can seek
4931 while paused. Fixes 392 (along with actually fixing the test..)
4933 2009-06-30 Chris Toshok <toshok@ximian.com>
4935 * clock.h|cpp: fix Seek and SeekAlignedToLastTick. fixed DRT
4938 2009-06-30 Jeffrey Stedfast <fejj@novell.com>
4940 * fontmanager.cpp (style_diff): Improved a bit so that we never
4941 return G_MAXINT if any font by the same name is found, no matter
4942 what style differences there are.
4944 2009-06-30 Jackson Harper <jackson@ximian.com>
4946 * deepzoomimagetilesource.cpp: Parsers need to be freed.
4948 2009-06-30 Alan McGovern <amcgovern@novell.com>
4950 * popup.cpp: According to the docs, a popup which is GC'ed
4951 should be closed. Ensure that this happens.
4953 2009-06-30 Alan McGovern <amcgovern@novell.com>
4955 * popup.cpp: If the child is set after the popup is opened,
4956 make sure it is shown. Ensure that we now only emit the
4957 Opened/Closed events when the popup IsOpen state changes.
4958 Allows 503 to progress further.
4960 2009-06-30 Jackson Harper <jackson@ximian.com>
4962 * xaml.cpp|h: Add a flag for template validation
4963 - Implement template validation and propogate errors up
4964 * cbinding.cpp: regen
4966 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
4968 * multiscaleimage.cpp: drop a debug block that was misinterpreted by
4969 the preprocessor. fir x drt 265.
4971 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
4973 * multiscaleimage.cpp: download the first num_dl (6) levels while the
4976 2009-06-29 Alan McGovern <amcgovern@novell.com>
4978 * control.cpp: Unregress drt 911, EnabledChanged events fire
4979 at the correct time again.
4981 2009-06-29 Jeffrey Stedfast <fejj@novell.com>
4983 * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
4984 of the GlyphMetrics fields.
4986 * layout.cpp: Updated to keep track of the previous GlyphInfo
4987 rather than the previous GlyphInfo's index.
4989 * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
4990 (TextFont::Kerning): Modified to take GlyphInfo arguments rather
4991 than face indexes since they are worthless w/o knowing which font
4992 face the indexes of each are for.
4994 2009-06-29 Alan McGovern <amcgovern@novell.com>
4996 * control.cpp: Propagate the IsEnabled changes down the visual
4997 tree in OnPropertyChanged, not in SetValue.
4999 2009-06-29 Jackson Harper <jackson@ximian.com>
5001 * xaml.cpp: Store enums as INTs.
5003 2009-06-28 Chris Toshok <toshok@ximian.com>
5005 * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
5006 Clock::Active) to (state != Clock::Stopped) to tell whether or not
5007 we've started (since we can start directly in the filling state.)
5009 Also remove all the idle_hint stuff, since it's no longer used.
5011 * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
5012 why this method is needed at all, but at the very lease we need to
5013 stop calling ClockGroup::UpdateFromParentTime, since this method
5014 very nearly duplicates that one (and we're therefore looping over
5015 the child clocks twice).
5017 2009-06-28 Chris Toshok <toshok@ximian.com>
5019 * color.cpp (named_colors): update these so that text-colors.xaml
5022 2009-06-28 Larry Ewing <lewing@novell.com>
5024 * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
5026 2009-06-27 Jeffrey Stedfast <fejj@novell.com>
5028 * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
5029 changes, the layout *always* gets dirty. We also always need to
5032 * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
5033 calculate/update the font extents. Only use the extents of the
5034 first face - this fixes a bunch of MS DRTs.
5035 (TextFont::.ctor): Call UpdateFaceExtents().
5036 (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
5037 a number of regressions (like MS DRT #43).
5039 2009-06-27 Chris Toshok <toshok@ximian.com>
5041 * grid.cpp (Grid::OnCollectionItemChanged): don't
5042 InvalidateMeasure() when the grid's actualwidth or row's
5043 actualheight is set. this gets us into an infinite loop.
5045 2009-06-26 Chris Toshok <toshok@ximian.com>
5047 * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
5048 (initialize_enums): and add it to the hashtable.
5050 * grid.h|cpp: make ColumnDefinition.ActualWidth and
5051 RowDefinition.ActualHeight dependencyproperties to make the plugin
5052 binding easier. get rid of each class's "actual" field.
5054 2009-06-25 Chris Toshok <toshok@ximian.com>
5056 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5057 object we're looking the event up on, and a flag as to whether or
5058 not to allow desktop-specific events. and just look up the event
5059 from the type system instead of having the hardcoded list.
5061 2009-06-25 Chris Toshok <toshok@ximian.com>
5063 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5064 object we're looking the event up on, and a flag as to whether or
5065 not to allow desktop-specific events. and just look up the event
5066 from the type system instead of having the hardcoded list.
5068 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5070 * fonts.cpp (LoadPortableUserInterface): Only set that we've
5071 loaded PUI, not each individual fallback face. The other faces may
5072 match user-specified faces, but there may also be a font source
5073 that it is loading them from (which may differ from the locally
5076 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5078 * runtime.cpp: Don't need to call font_init() or font_shutdown()
5081 * deployment.cpp: Create a new FontManager per Deployment and
5082 provide an access method to get at it.
5084 * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
5087 * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
5088 inheritance, these no longer exist.
5090 * fonts.cpp|h: New source files with the higher-level abstraction
5091 for font loading, glyph manipulation, etc.
5093 * fontmanager.cpp|h: New source files containing a FontManager
5094 class which handles caching of font faces and indexing of font
5095 resources. Serves as platform-dependent font loading layer.
5097 * font.cpp|h: Removed.
5099 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5101 * uri.cpp (ToString): Respct the UriHideQuery flag.
5103 2009-06-26 Larry Ewing <lewing@novell.com>
5105 * border.h: change the default value.
5107 * cornerradius.h: reorder the bottom* arguments.
5109 2009-06-26 Alan McGovern <amcgovern@novell.com>
5112 * popup.cpp: Handle popup hittesting when its closed in a way
5115 2009-06-26 Alan McGovern <amcgovern@novell.com>
5117 * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
5118 IsOpen state so that hittesting works correctly.
5120 2009-06-25 Chris Toshok <toshok@ximian.com>
5122 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5123 object we're looking the event up on, and a flag as to whether or
5124 not to allow desktop-specific events. and just look up the event
5125 from the type system instead of having the hardcoded list.
5127 2009-06-25 Larry Ewing <lewing@novell.com>
5129 * grid.cpp, grid.h (PostRender): move the grid lines from Render to
5130 PostRender so that the lines are on top of the children (which
5131 appears to be the sl behavior). Fixes at least 317 and 446.
5133 2009-06-25 Sebastien Pouliot <sebastien@ximian.com>
5135 * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
5136 Fix two unnumbered DRT tests.
5138 2009-06-25 Chris Toshok <toshok@ximian.com>
5140 * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
5141 generate ArgumentExceptions here if start/length are out of range.
5142 This could, in the future, be entirely handled by the setter
5143 methods but for now we don't pass a MoonError to them.
5145 * xaml.h|cpp (xaml_set_property_from_str): this method takes an
5146 additional MoonError parameter so we can communicate back if there
5147 was a problem. Also, call SetValueWithError.
5149 * cbinding.h|cpp: regen.
5151 2009-06-25 Chris Toshok <toshok@ximian.com>
5153 * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
5154 can tell in AddedToCollection and RemovedFromCollection if we got
5155 there from using ResourceDictionary's string-based api or
5156 Collection's object-based api. Take care of adding/removing the
5157 key for the object in those methods if we didn't come from the RD
5160 * type.cpp (Type): quiet valgrind down by using "delete []"
5161 instead of "delete" to free up the interfaces array.
5163 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5165 * mediaplayer.cpp: Improve debug output.
5167 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5169 * pipeline.h: Added a ProgressEventArgs class.
5173 * type-generated.cpp: Regenerated.
5175 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5177 * audio.cpp|h: Add support for having different input (from the
5178 codec) and output (to the device) formats. This is required for
5179 pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
5180 bit. Also add support for multi channel audio.
5183 * audio-pulse.cpp: Add support for multi channel and 24 bit audio
5184 and update according to audio API changes.
5186 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5188 * audio-alsa.cpp: Fix debug output by not duplicating declarations.
5190 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5192 * audio.cpp|h: Add support for dumping raw audio data to a file.
5194 2009-06-25 Alan McGovern <amcgovern@novell.com>
5196 * dependencyproperty.g.cpp: Regen
5198 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5202 * file-downloader.h:
5203 * internal-downloader.h: Add a SetFilename abstract method to
5204 InternalDownloader, provide implementations in FileDownloader
5205 and MmsDownloader and call the abstract method in the downloader
5206 instead of blindly casting an InternalDownloader to a FileDownloader
5207 when it might be an MmsDownloader.
5209 2009-06-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
5211 * pipeline.cpp|h: AudioStream: add possibility of having different
5212 input and output formats.
5214 * cbinding.cpp|h: Regenerated.
5216 2009-06-24 Chris Toshok <toshok@ximian.com>
5218 * xaml.cpp (matrix_from_str): handle "Identity" here.
5219 (value_from_str_with_parser): you can also create TransformGroups
5220 directly using the matrix syntax. Also, add support for parsing
5221 FontWeight/FontStyle/FontWeight structs here since we can't just
5222 rely on the enum_* stuff alone to do it.
5224 * value.h.in, value.cpp: add support for
5225 FontWeight/FontStyle/FontWeight structs.
5227 * textblock.cpp (Inline::UpdateFontDescription): track the
5229 (TextBlock::Layout): same.
5231 * textbox.cpp (TextBoxBase::Initialize): same.
5232 (TextBoxBase::OnPropertyChanged): same.
5234 * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
5235 structs now for these.
5237 * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
5238 struct types for properties instead of our internal enums.
5240 * Makefile.am (libmoon_include_headers): add fontstretch.h
5241 fontstyle.h, and fontweight.h
5243 * type-generated.cpp: regen.
5245 * cbinding.h|cppp: regen.
5247 * dependencyproperty.g.cpp: regen.
5251 2009-06-24 Larry Ewing <lewing@novell.com>
5253 * panel.cpp (Render): add layout clipping to panel rendering.
5255 2009-06-24 Larry Ewing <lewing@novell.com>
5257 * grid.h: stop drawing the gridlines by default. See comment for
5260 2009-06-24 Alan McGovern <amcgovern@novell.com>
5263 * runtime.cpp: Focus changed events should be emitted at the
5264 start and end of any user initiated event.
5265 can_raise_focus_changed is no longer necessary.
5267 2009-06-23 Larry Ewing <lewing@novell.com>
5269 * frameworkelement.cpp (UpdateLayout): reorder the way we process
5270 the lyout queues. Fixes ms 409.
5272 2009-06-23 Jackson Harper <jackson@ximian.com>
5274 * xaml.cpp: Handle empty buffers
5276 2009-06-23 Jackson Harper <jackson@ximian.com>
5278 * xaml.cpp: ContentControl can not have string content set this
5279 way, if the content object is a string it needs to be set with
5282 2009-06-23 Jackson Harper <jackson@ximian.com>
5284 * xaml.cpp: Another stab at not skipping empty attributes. Fixed
5285 all the unit test regression this caused last night.
5287 2009-06-23 Alan McGovern <amcgovern@novell.com>
5289 * grid.cpp: A dash length of 4 seems to be more correct.
5291 2009-06-23 Alan McGovern <amcgovern@novell.com>
5294 * grid.cpp: Implement Grid.ShowGridlines
5296 2009-06-22 Jackson Harper <jackson@ximian.com>
5298 * xaml.cpp: Pass the full prop name to managed
5299 - If managed fails to set the property, delete it so unmanaged can
5302 2009-06-22 Larry Ewing <lewing@novell.com>
5304 * provider.cpp: make UIElement::UseLayoutRounding inherited, this
5305 doesn't make it pass 2019 but it does a lot more.
5307 * shape.cpp: mirror the silverlight logic for canvas children with
5308 only one of w/h set. Fixes ms test 23.
5310 2009-06-18 Larry Ewing <lewing@novell.com>
5312 * shape.cpp: try to get the shape flags right once again trap
5313 explicit small values properly. Add Clipping logic to clip shapes
5314 to the fe values when explicitly set.
5316 * frameworkelement.cpp: look at stretch even when we have no
5319 2009-06-19 Jackson Harper <jackson@ximian.com>
5321 * xaml.cpp|h: We now have a managed version of AddChild so remove
5322 all the AddToContainer junk and use the managed AddChild instead.
5323 - Add MoonError to all the callbacks. Not handling the errors yet,
5324 but at least they are there now.
5326 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5328 * xaml.cpp: Add comment about absolute/relative paths
5331 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5333 * multiscaleimage.cpp: When an image has been opened,
5334 invalidate everything.
5336 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5338 * multiscaleimage.cpp|h: Emit MotionFinished after
5339 SetViewportWidth/SetViewportOrigin has been called.
5341 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5343 * multiscaleimage.cpp|h:
5344 * deepzoomimagetilesource.cpp|h: Raise error events.
5346 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5348 * multiscaleimage.cpp|h: Add support for methods exposed to JS.
5350 * cbinding.h: Regenerated.
5352 2009-06-18 Sebastien Pouliot <sebastien@ximian.com>
5354 * textblock.cpp: Avoid crash when using FontSource
5356 2009-06-18 Alan McGovern <amcgovern@novell.com>
5360 * control.cpp: When the visual parent changes on a Control, it
5361 needs to search up the visual tree to find out the Enabled
5362 state of the first Control it finds. When raising the
5363 IsEnabledChanged events, the control must emit its event
5364 before controls in its subtree emit their events. Fixes drt
5367 2009-06-17 Jeffrey Stedfast <fejj@novell.com>
5369 * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
5370 for single-line entry controls (e.g. PasswordBox), don't allow
5373 2009-06-17 Alan McGovern <amcgovern@novell.com>
5375 * uielement.cpp: Changing UIElement::Visibility should also
5376 invalidate the parents measure. This allows DRT 2050 to
5377 complete without timing out.
5379 2009-06-17 Alan McGovern <amcgovern@novell.com>
5381 * uielement.cpp: Changing UIElement.Visibility should result
5382 in the measure being invalidated.
5384 2009-06-17 Alan McGovern <amcgovern@novell.com>
5386 * font.cpp: When the font cache is destroyed, set it to NULL
5387 so that if a Font is destroyed later it does not try to
5389 Null check the the FontFace cache before using it.
5390 If the FT_Face stream is null already, don't try to destroy
5393 2009-06-17 Alan McGovern <amcgovern@novell.com>
5395 * runtime.cpp: A subset of keypresses are allowed to bubble up
5396 when in fullscreen mode. Fixes drt 175.
5398 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5400 * uri.cpp: Add a null check to prevent a crash.
5402 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5404 * uri.cpp: Flag a lot more characters as url unsafe, and
5405 fix printf specifiers for url encoded characters to not
5406 include extra 'ff' sequences for every encoded character.
5408 This fixes parts of MS DRT #641.
5410 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5412 * downloader.cpp|h: Add an Open overload which takes an Uri
5413 instead of a string.
5415 * deepzoomimagetilesource.cpp:
5416 * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
5418 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5420 * playlist.cpp: When we stop, emit the StopEvent.
5422 * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
5424 2009-06-16 Chris Toshok <toshok@ximian.com>
5426 * xaml.cpp (XamlElementInfoStaticResource,
5427 XamlElementInstanceStaticResource): remove these classes.
5428 (begin_buffering_element_names): remove this unused variable.
5429 (XamlParserInfo::LookupNamedResource): remove.
5430 (DefaultNamespace::FindElement): remove the
5431 XamlElementInfoStaticResource case, and just let the managed
5432 loader create the StaticResource element itself.
5433 (is_static_resource_element): remove.
5434 (XamlElementInstanceNative::SetProperty): defer to the loader if
5435 either the property or the value RequiresManagedSet.
5436 (dependency_object_set_property): defer to the loader if the value
5438 (dependency_object_set_attributes): remove all processing of
5439 markup extensions from unmanaged code.
5440 (xaml_markup_parse_argument): remove.
5441 (xaml_markup_extension_type): remove.
5442 (handle_markup_in_managed): remove.
5443 (handle_xaml_markup_extension): remove.
5445 * panel.h|cpp (Panel::Panel): just set our subtree object here.
5446 (Panel::GetSubtreeObject): remove.
5448 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
5449 don't notify listeners when creating an auto-created value.
5451 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
5452 only call the property's change callback if we're notifying
5455 2009-06-17 Andreia Gaita <avidigal@novell.com>
5457 * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
5459 2009-06-17 Andreia Gaita <avidigal@novell.com>
5461 * xaml.cpp: fix typo
5463 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5465 * pipeline.cpp: Remove spurious printfs.
5467 2009-06-16 Andreia Gaita <avidigal@novell.com>
5469 * deployment.[h|cpp]: Try to dispose types only if there are no
5470 objects pending destruction. If there are, dispose only after
5471 they are all cleared (on DrainUnrefs). This makes sure no properties
5472 are destroyed while objects are still pending.
5473 Added isDead flag, used when doing object tracking to protect against
5474 trying to access type fields when the types have been destroyed
5475 already (when doing ref logging and the final leak report).
5476 Type destruction is slightly delayed when doing object tracking
5477 to allow for the report (otherwise we wouldn't have any type names
5478 on it, and that would be sad)
5480 * type.cpp: fake-clear the properties list by setting it's count to 0
5481 so access by id fails (in case someone wants to access the property
5482 while we're disposing everything).
5483 Delete all the registered types and kill the properties list when
5484 destroying. By this point all properties and objects should be
5486 * type.h.in: added dispose flag.
5487 * type.h: regenerated
5489 2009-06-16 Andreia Gaita <avidigal@novell.com>
5491 * uielement.cpp: release all refs on dispose
5493 2009-06-16 Andreia Gaita <avidigal@novell.com>
5495 * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
5497 2009-06-16 Jeffrey Stedfast <fejj@novell.com>
5499 * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
5501 2009-06-16 Larry Ewing <lewing@novell.com>
5503 * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
5504 when properties change in preparation for fixing the autocreated
5505 property notification stuff
5507 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
5509 * multiscaleimage.cpp: Add a call to print_stack_trace, looks
5510 like abort () doesn't cause a stack trace.
5512 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
5514 * mediaplayer.cpp: Remove circular dependency between MediaPlayer
5515 and MediaElement, clear out the element in Dispose and add a null
5516 check before accessing the element. Fixes crash in MS DRT #238.
5518 2009-06-15 Andreia Gaita <avidigal@novell.com>
5520 * frameworkelement.cpp: delete UIElement nodes when we're done
5523 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
5525 * textblock.cpp (SetTextInternal): Get rid of some duplicated
5528 2009-06-15 Alan McGovern <amcgovern@novell.com>
5531 * frameworkelement.h:
5532 * frameworkelement.cpp: Give an initial implementation of
5533 FindElementInHostCoordinates (UIElement, Rect) which treats
5534 the rect as a series of points and checks each one until a
5535 hit is found. Allows drt 280 to
5537 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
5539 * dependencyobject.cpp (Initialize): Initialize is_hydrated to
5542 2009-06-15 Andreia Gaita <avidigal@novell.com>
5544 * type.[h|cpp]: Dispose method added, to help separate between clearing
5545 all the DPs and actually deleting the types. For now, just clears the
5546 DPs and doesn't touch the type list.
5547 * deployment.cpp: (Dispose) types are disposed here, for now.
5549 2009-06-15 Andreia Gaita <avidigal@novell.com>
5551 * dependencyproperty.g.cpp: regenerated
5553 2009-06-15 Jackson Harper <jackson@ximian.com>
5555 * xaml.cpp: Reorder errors.
5557 2009-06-15 Andreia Gaita <avidigal@novell.com>
5559 * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
5560 inside SetParts, and since we don't store it anywhere else, drop a
5563 2009-06-15 Andreia Gaita <avidigal@novell.com>
5565 * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
5566 it removes itself from the property list and gets deleted as soon as
5567 possible, otherwise it will not only leak, but blow up once we start
5569 Floating status is gone.
5571 2009-06-15 Andreia Gaita <avidigal@novell.com>
5573 * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
5574 and some extra debugging output for refcounting.
5577 2009-06-15 Alan McGovern <amcgovern@novell.com>
5579 * frameworkelement.cpp: Objects can be hit as long as their
5580 height as greater than zero and the point is in the fill or
5583 2009-06-15 Alan McGovern <amcgovern@novell.com>
5585 * frameworkelement.cpp: Back that change out as it causes some
5586 regressions in the moon-unit tests.
5588 2009-06-15 Alan McGovern <amcgovern@novell.com>
5590 * frameworkelement.cpp: We can hit an element in both stroke
5593 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
5595 * playlist.cpp|h: When a media reports that it has been opened
5596 successfully, check if we're the current element, and if not,
5597 don't to anything more until we are the current element. This
5598 fixes an issue with server side playlists where they would
5599 only play the first entry.
5601 * pipeline.cpp|h: Move code out of header.
5603 * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
5606 2009-06-15 Alan McGovern <amcgovern@novell.com>
5608 * frameworkelement.cpp: We're hittesting the clip, we use
5609 user-space coordinates, so apply the identity matrix to get
5612 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
5614 * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
5616 * cbinding.cpp|h: Regenerated.
5618 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
5620 * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
5621 to the enum->str conversion table.
5623 2009-06-15 Alan McGovern <amcgovern@novell.com>
5625 * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
5626 it's attached to otherwise it can access the element after
5627 the element has been destroyed. Stops 238 crashing.
5629 2009-06-14 Andreia Gaita <avidigal@novell.com>
5631 * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since
5632 there are certain refcounted objects that aren't child classes of
5634 Wrap null objects but don't try to unref them.
5637 2009-06-14 Andreia Gaita <avidigal@novell.com>
5639 * debug.[h|cpp]: add max frame arg for finer control when getting
5642 2009-06-12 Jackson Harper <jackson@ximian.com>
5644 * xaml.cpp|h: import_xmlns now validates the namespace so we can
5645 raise an error if it is invalid.
5647 2009-06-12 Jackson Harper <jackson@ximian.com>
5649 * xaml.cpp: Don't allow dtds.
5651 2009-06-12 Jackson Harper <jackson@ximian.com>
5653 * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
5655 2009-06-12 Jackson Harper <jackson@ximian.com>
5657 * xaml.cpp: Use the value attribute parsing for enum types, this
5658 allows them to have x:Key and x:Name attributes.
5660 2009-06-12 Sebastien Pouliot <sebastien@ximian.com>
5662 * dependencyproperty.g.cpp: Regenerated
5663 * deployment.h: Update ExternalCallersFromCrossDomainProperty
5664 generator-related properties and add unmanaged accessors
5665 * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
5666 dropped after SL2 beta2
5667 * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
5668 * validators.cpp|h: Add new CrossDomainValidator that ensure we
5669 can set only once Deployment::ExternalCallersFromCrossDomainProperty
5671 2009-06-11 Jackson Harper <jackson@ximian.com>
5673 * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
5674 - Don't try to set managed properties in
5675 dependency_object_add_child.
5676 - Make sure we only create managed property elements for managed
5677 items, even if they are DOBs, otherwise UserControl.Resources gets
5678 a native property info.
5680 2009-06-11 Alan McGovern <amcgovern@novell.com>
5683 * runtime.cpp: The uielements involved in GotFocus/LostFocus
5684 events need to be stored in a queue so that focusing
5685 multiple elements in one tick works correctly.
5687 2009-06-11 Alan McGovern <amcgovern@novell.com>
5691 * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
5693 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
5695 * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
5697 * security.c: Fix signed/unsigned mismatch warning.
5699 * error.cpp: Fix warning about not initialize in correct order.
5701 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
5703 * pipeline.cpp: Fix warning/typo in printf.
5705 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
5707 * pipeline.cpp: MarkerStream: if there is no callback, store
5708 the markers in a list instead of just dropping them. Fixes an
5709 issue with our #150 where we'd lose markers since the stream
5710 had processed them before getting a callback.
5712 * mediaelement.cpp: Check if a marker stream has stored markers
5713 (which would have been added before the calback was set).
5715 2009-06-10 Larry Ewing <lewing@novell.com>
5717 * frameworkelement.cpp (Arrange): measure containers if they
5718 haven't been at least for now.
5720 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5722 * mediaelement.cpp: When we get a stream as the source, set download
5723 progress immediately to 1.0. Also emit DownloadProgressChanged just
5724 after opening the file (to ensure that we emit DownloadProgressChanged
5725 at least once). This makes MS DRT #420 not time out.
5727 2009-06-10 Larry Ewing <lewing@novell.com>
5729 * frameworkelement.cpp (UpdateLayout): if we find a unloaded
5730 element while walking the tree emit loaded on it now.
5732 2009-06-10 Larry Ewing <lewing@novell.com>
5734 * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
5735 place it was supposed to be emitted.
5737 2009-06-10 Jeffrey Stedfast <fejj@novell.com>
5739 * layout.cpp (Layout): Don't apply font height to the line unless
5740 text has been rendered on that line using that font.
5742 2009-06-10 Jackson Harper <jackson@ximian.com>
5744 * xaml.cpp|h: Add another param to LookupObject to specify whether
5745 we are looking up a property. We can't rely on the '.' being in
5746 the name because x:Class names can have namespaces.
5747 - Force USERCONTROL to be looked up in managed so we can
5750 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5752 * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
5753 parent entries/playlists too. Also propagate the BufferUnderflow
5756 * pipeline.cpp: Change logic when filling the buffer to request
5757 a frame from the least-buffered stream. This solves an issue with
5758 live streams, we might end up playing audio only when the video
5759 buffer was empty and the audio buffer never full.
5761 * mediaplayer.cpp|h: When determining duration of an entry, check
5762 the entry's parents too for duration. We also need to set
5763 first_live_pts when rendering. This makes MS DRT #129
5764 not time out. Add a BufferUnderflow to inform listeners of any
5767 * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
5768 playback and update states accordingly. Remove UpdateProgress,
5771 * type-generated.cpp: Regenerated.
5773 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5775 * mediaplayer.cpp: use the correct max value for guint64.
5777 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5779 * mediaplayer.cpp|h: Make flags a thread-safe variable, since
5780 we might write to it from an audio thread.
5782 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5784 * playlist.cpp: When checking if an entry has duration, check
5785 the right entry. Fixes a possible crash.
5787 2009-06-10 Alan McGovern <amcgovern@novell.com>
5789 * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
5790 event too. Allows drt 293 to complete.
5792 2009-06-10 Alan McGovern <amcgovern@novell.com>
5794 * uri.cpp: Uris starting with "\\" need to be recognised as
5797 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5799 * pipeline-asf.cpp: Remove dead code.
5801 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5803 * runtime.cpp: g_warning -> printf to ease breaking on
5806 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5808 * dependencyobject.h: Fix IdMask.
5810 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
5812 * pipeline.h|cpp: Rework some of the buffer filling algorithm:
5813 we now never have more than one frame pending (to know which
5814 stream a response comes from - if frame parameter to
5815 ReportGetFrameCompleted is null, we need to mark the corresponding
5816 stream as ended. Also split the 'stream ended' concept in two:
5817 input ended (the demuxer won't give us more data) and output
5818 ended (the decoder won't give us more data). This fixed
5822 * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
5823 need to try again later.
5825 * mediaelement.cpp: CheckMarkers: subtract one to not include
5826 both ends of the range, if the marker matches exactly the end
5827 of a range it will get emitted twice otherwise.
5830 * audio.cpp: Updated according to IMediaStream changes.
5832 2009-06-09 Jeffrey Stedfast <fejj@novell.com>
5834 * value.cpp (operator==): Fix a crash if comparing a null
5837 * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
5838 the control is loaded.
5839 (EmitTextChangedAsync): Same.
5841 2009-06-09 Alan McGovern <amcgovern@novell.com>
5843 * runtime.cpp: The first mouse click will always Focus on the
5844 'default' control. After that we follow the normal focusing
5845 rules and focus on the first eligible control which the
5846 mouse has clicked on.
5848 2009-06-08 Jackson Harper <jackson@ximian.com>
5850 * xaml.cpp: Add TimeSpan to the primitive types.
5852 2009-06-08 Chris Toshok <toshok@ximian.com>
5854 * runtime.h (class Surface): add IsZombie.
5856 2009-06-08 Jackson Harper <jackson@ximian.com>
5858 * error.cpp|h: Add method and fields for line/char positions.
5859 * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
5860 them to get propogated to managed and fixes some of the unit tests.
5862 2009-06-08 Jackson Harper <jackson@ximian.com>
5864 * xaml.cpp|h: Pass the property xmlns and the element xmlns into
5865 managed when setting properties.
5867 2009-06-08 Alan McGovern <amcgovern@novell.com>
5869 * runtime.cpp: Un-regress drt 783. We need to raise our cached
5870 focus changed event, then process the focus change itself,
5871 then raise the events for the new change.
5873 2009-06-08 Alan McGovern <amcgovern@novell.com>
5876 * runtime.cpp: If Control.Focus is called from inside a
5877 GotFocus handler, the focus change occurs immediately and
5878 the new GotFocus event is raised as soon as the current
5879 handler is finished.
5881 2009-06-08 Jackson Harper <jackson@ximian.com>
5883 * xaml.cpp: Bail out after we hit the first attribute parsing
5886 2009-06-08 Jackson Harper <jackson@ximian.com>
5888 * xaml.cpp: We need to convert path geometry strings from managed.
5890 2009-06-08 Jackson Harper <jackson@ximian.com>
5892 * xaml.cpp: Little more cleanup now that we don't have to reparse
5893 attributes for x:Class.
5895 2009-06-05 Chris Toshok <toshok@ximian.com>
5897 * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
5898 element when we aren't hydrating is illegal. this has the
5899 pleasant side effect of removing the need to reparse attributes,
5900 so axe that code as well.
5902 2009-06-05 Chris Toshok <toshok@ximian.com>
5904 * textbox.cpp (TextBoxView::Blink): don't set deployments using
5905 the pattern Deployment::SetCurrent (GetDeployment()), as
5906 GetDeployment() issues a warning if the object's deployment
5907 doesn't match the current one. use
5908 DependencyObject::SetCurrentDeployment(true) instead.
5910 2009-06-04 Chris Toshok <toshok@ximian.com>
5912 * runtime.cpp (Surface::EmitError): stop unreffing the args after
5913 the Emit call. Emit unrefs them for us.
5915 2009-06-05 Jeffrey Stedfast <fejj@novell.com>
5917 * layout.cpp (layout_word_wrap): Stop processing when we come to
5918 open-punctuation if it isn't the first char in the word as this is
5919 a good break opportunity. Fixes the last remaining issue in
5922 2009-06-04 Jackson Harper <jackson@ximian.com>
5924 * xaml.cpp: Track the owner type of properties so we know whether
5925 or not to go into managed when we are dealing with an attached
5928 2009-06-04 Jeffrey Stedfast <fejj@novell.com>
5930 * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
5931 font face that fontconfig can find for the requested language.
5932 (FontFace::LoadFontFace): Get the lang string and pass it along.
5933 (FontFace::Init): initialize a default font hash table for
5934 non-latin languages.
5935 (FontFace::Shutdown): destroy aformentioned table.
5936 (FontFace::LoadDefaultFaceForLang): New helper method to load the
5937 default font face for a given language code.
5938 (FontFace::GetDefault): If the language in the Fc pattern is
5939 'special', use LoadDefaultFaceForLang().
5940 (TextFontDescription::.ctor): Initialize language.
5941 (TextFontDescription::.dtor): Free language.
5942 (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
5944 (TextFontDescription::UnsetFields): Unset the language field.
5945 (TextFontDescription::Merge): Merge the language field.
5946 (TextFontDescription::GetLanguage): New method to get the language.
5947 (TextFontDescription::SetLanguage): New method to set the language.
5948 (TextFontDescription::ToString): Modified a bit.
5950 * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
5952 (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
5953 TextFontDescription.
5955 2009-06-04 Jackson Harper <jackson@ximian.com>
5957 * xaml.cpp: The managed property could be either the property or
5960 2009-06-04 Larry Ewing <lewing@novell.com>
5962 * canvas.cpp (OnCollectionItemChanged): call
5963 InvalidateSubtreePaint on items when their position in the canvas
5964 changes to make sure we clear the old region. Fixes a couple of
5965 the inkpresenter tests.
5967 2009-06-04 Larry Ewing <lewing@novell.com>
5969 * shape.cpp (ComputeStretchBounds): reject negative width/height
5970 settings. Fixes test-shape-negative.xaml
5972 2009-06-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
5974 * multiscaleimage.cpp: Add a debugging abort to try to find the
5977 2009-06-04 Alan McGovern <amcgovern@novell.com>
5980 * type-generated.cpp: Actually add IsEnabledChangedEvent
5982 2009-06-04 Alan McGovern <amcgovern@novell.com>
5984 * control.h: Add IsEnabledChangedEvent to native
5986 * type-generated.cpp: regen
5988 2009-06-04 Stephane Delcroix <sdelcroix@novell.com>
5990 * multiscaleimage.cpp: qtree_insert () takes no value. returns
5991 the newly created QTreeNode. qtree_insert_at () renamed to
5992 qtree_insert_with_value ().
5994 2009-06-03 Alan McGovern <amcgovern@novell.com>
5999 * uielement.cpp|h: Calling Control.Focus () results in a recursive
6000 check to find a focusable element. A mouse click does a non-recursive
6001 check on the elements which were 'hit'. Fixes two DRTs.
6003 2009-06-03 Jackson Harper <jackson@ximian.com>
6005 * xaml.cpp: Update some error messages.
6006 - Pass the current namespace in when creating property infos in
6008 * frameworkelement.h: ActualWidth and ActualHeight are readonly
6010 * dependencyproperty.g.cpp: regen
6012 2009-06-03 Jeffrey Stedfast <fejj@novell.com>
6014 * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
6015 bit more than FT_Get_Char_index().
6017 * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
6018 trailing lwsp towards line width, even if underlined.
6019 (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
6020 we are the last glyph cluster on a line.
6021 (GenerateGlyphCluster): Keep track of underline width (calculated
6022 using width up to/including last non-lwsp char).
6023 (word_type_changed): Consider numerics as part of the containing
6026 2009-06-03 Jackson Harper <jackson@ximian.com>
6028 * xaml.cpp|h: We need to look for managed properties on native
6030 - Set the element info for properties to the type of the property.
6031 - Add the ability for properties to force their set to be in
6032 managed even if they come from a native type.
6034 2009-06-03 Alan McGovern <amcgovern@novell.com>
6036 * uielement.cpp: Calculate the Transform between two UIElements
6039 2009-06-03 Alan McGovern <amcgovern@novell.com>
6041 * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
6042 we need to populate M11/M12/M21 etc with the correct values.
6044 2009-06-02 Chris Toshok <toshok@ximian.com>
6046 * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
6047 Type::INVALID as its Kind. This is another facet to the "we need
6048 to register enum types" work that will need to be done. The
6049 GetKind() method needs to eventually return a property Kind, but
6050 until then we'll just check for Type::INVALID.
6052 2009-06-02 Sebastien Pouliot <sebastien@ximian.com>
6054 * security.c: Use the PREVIEW_VERSION for the environment variable
6055 used to turn off security (coreclr and verifier)
6057 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
6059 * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
6060 the run->SetAutogenerated() logic a while back which is causing
6063 * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
6064 longer supports this wrapping model.
6066 2009-06-02 Larry Ewing <lewing@novell.com>
6068 * uielement.cpp (DoArrange): don't poke at unset values. Fixes
6071 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
6073 * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
6076 2009-06-02 Alan McGovern <amcgovern@novell.com>
6078 * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
6079 reverse logical order.
6082 * uielement.cpp|h: Make Focus a virtual method on UIElement.
6084 * src/runtime.cpp: When the surface receives a mouse down we need to
6085 focus the first control added to the root element if the user has not
6086 clicked on a control or focused one using Control.Focus (). Then any
6087 pending Focus events are raised before the mouse event is processed.
6089 * src/window-gtk.cpp: Always pass a right mouse button event into the
6090 Surface so that we can fire any pending Focus events to match the
6091 behaviour of Silverlight.
6093 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6095 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6096 since g_ascii_strtoull isn't available in sled.
6098 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6100 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6101 since g_ascii_strtoull isn't available in sled.
6103 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6108 * type-generated.cpp: Regenerated.
6110 * downloader.h: Removed streaming_features, not used here anymore.
6116 * pipeline-asf.cpp|h:
6117 * mms-downloader.cpp|h: Implement support for server side playlists.
6119 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6121 * pipeline.cpp: Check queued_requests for null after locking too.
6123 2009-06-02 Alan McGovern <amcgovern@novell.com>
6125 * runtime.cpp|h: Focus changed events are emitted synchronously right
6126 before a MouseLeftButtonDown or MouseRightButtonDown event.
6128 2009-06-01 Chris Toshok <toshok@ximian.com>
6130 * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
6131 here too so xaml.cpp knows if the type is creatable.
6133 * type.h, cbinding.cpp|h: regen
6135 2009-06-01 Chris Toshok <toshok@ximian.com>
6137 * xaml.cpp (dependency_object_add_child): only do this check for
6138 non-Type::MANAGED children.
6140 2009-06-01 Chris Toshok <toshok@ximian.com>
6142 * grid.cpp|h: the row/columndefinitioncollections do not permit
6143 definitions to be inserted more than once.
6145 * type.h.in (class Type): add IsCtorVisible method and ctor arg.
6147 * type.h, type-generated.cpp: regen.
6149 * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
6150 the instance if the ctor is visible.
6151 (dependency_object_add_child): if the ctor for the child isn't
6152 visible, error out even if it's the same type/kind as the
6155 2009-06-01 Jeffrey Stedfast <fejj@novell.com>
6157 * deployment.cpp (Dispose): Properly chain up to
6158 DependencyObject::Dispose().
6160 * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
6162 * brush.cpp (ImageBrush::Dispose): Chain up to
6163 TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
6164 crash in GlyphsManagedDRT
6166 * dependencyobject.cpp (WildcardListener): Uh, this needs to
6167 subclass Listener or we can't go around casting it to a Listener.
6168 (CallbackListener): Same.
6170 2009-06-01 Chris Toshok <toshok@ximian.com>
6172 * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
6173 end_idx == 0) return early.
6175 * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
6176 the toplevel object as hydrated if parser_info->hydrating == true.
6177 this fixes some managed parsing stuff since XamlReader.Load was
6178 using the same codepath (just passing NULL into
6179 XamlReader::HydrateFromString.)
6181 2009-05-29 Jeffrey Stedfast <fejj@novell.com>
6183 * application.cpp (GetResourceAsPath): Fixed extra
6184 XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
6187 2009-05-29 Alan McGovern <amcgovern@novell.com>
6189 * control.cpp: When Control.Focus () is called, if the control itself
6190 is not focusable, we need to check it's visual children. The call will
6191 complete successfully if any of the children are focusable, and that
6192 child will become the focused element.
6194 2009-05-29 Alan McGovern <amcgovern@novell.com>
6196 * control.cpp|h: If a control becomes disabled, it loses mouse capture
6197 and cannot regain it later. If CaptureMouse is called on a disabled
6198 control, the mouse is successfully captured and then immediately
6199 released which fires the LostMouseCapture event.
6201 * runtime.cpp|h: If control A captures the mouse, control B can't steal
6202 the capture or release the capture. Add an explicit ReleaseMouseCapture
6203 function to accomodate this behaviour.
6205 * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
6206 function which signifies whether or not the current UIElement can keep the
6209 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
6211 * textbox.h (class PasswordBox): Marked PasswordProperty as
6212 AlwaysChange so that setting this property (even to the same
6213 value) will force a PasswordChanged event to be emitted.
6214 (class TextBox): Marked SelectedTextProperty as AlwaysChange to
6215 fix moon-unit test: SetIdenticalSelectedText()
6217 * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
6218 printfs for utf8->ucs4 conversion errors.
6220 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
6222 * textbox.h (class TextBox): Added the AlwaysChange metadata to
6223 SelectionStart/Length properties.
6225 * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
6226 to asynchronously emit SelectionChanged events.
6227 (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
6228 (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
6229 (TextBox::EmitSelectionChanged): Simply emit the event now, don't
6230 bother updating state which is now handled elsewhere.
6231 (TextBox::EmitTextChanged): Same.
6232 (TextBox::OnPropertyChanged): When clamping the SelectionLength
6233 value due to a SelectionState property change, block events - we
6234 should only emit a single SelectionChanged event. Also modified to
6235 avoid emitting a TextBoxModelChanged event if the values didn't
6236 actually change. Same for SelectionLength changes.
6238 2009-05-28 Chris Toshok <toshok@ximian.com>
6240 * value.h.in, value.cpp: add a copy assignment operator.
6244 2009-05-28 Alan McGovern <amcgovern@novell.com>
6246 * control.cpp: When changing Control.IsEnabled, create the
6249 2009-05-28 Alan McGovern <amcgovern@novell.com>
6251 * animation.cpp: Fix a double free caused by the line
6252 converted = Value (*value);
6254 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6256 * pipeline-ui.cpp: Protect against a null surface.
6258 * mediaelement.cpp: Get the surface from the deployment (which should
6259 always have a surface) instead of the media element's surface
6260 (which is not guaranteed to be set always).
6262 2009-05-28 Alan McGovern <amcgovern@novell.com>
6264 * control.cpp|h: Control.IsEnabled propagates to its children
6265 when the control is Loaded.
6267 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6271 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6273 * mms-downloader.cpp: Custom headers must be requested before
6274 opening the downloader.
6276 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6278 * multiscaleimage.h|cpp: replace the hash cache on uri by
6279 a set of qtree, one per subimage. This should speed stuffs
6280 a lot, as uri crating/parsing/hashing was taking up to 20%
6283 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6285 * multiscalesubimage.h: GetId (). Get subimage id, used as
6288 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6290 * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
6291 qtree_insert, etc. The Q(uad)Tree data structure is a tree with
6292 4 child nodes, matching the tree-ish pyramid of MSI tiles.
6294 2009-05-28 Andreia Gaita <avidigal@novel.com>
6296 * timeline.cpp: Stop the clock when you call Stop.
6298 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6300 * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
6301 argument which defaults to true. If not set, we avoid calling
6302 SyncText() even if emit has the TEXT_CHANGED bit set.
6303 (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
6304 false if the value was just set to null.
6306 2009-05-27 Alan McGovern <amcgovern@novell.com>
6309 * control.cpp: Implement correct propagation of
6310 Control.IsEnabled. Children of disabled controls are
6311 disabled. When their parent is re-enabled, they go back to
6312 their previous state.
6314 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6316 Fixes to make sure that an TextChanged and SelectionChanged events
6317 are emitted after each and every change to the Text/Selection
6320 * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
6321 batch operation. Prevents SyncAndEmit() from doing anything until
6322 all nested batch operations are completed.
6323 (TextBoxBase::BatchPop): Call at the end of each
6325 (TextBoxBase::*): Instead of using inkeypress, use the more
6326 generic BatchPush()/Pop().
6327 (TextBox::OnPropertyChanged): Call SyncAndEmit() after
6328 Text/Selection changes.
6329 (PasswordBox::OnPropertyChanged): Same.
6331 2009-05-27 Geoff Norton <gnorton@novell.com>
6333 * runtime.cpp|h: Support the splash progress/completed events.
6335 * type-generated.h: Regen
6337 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6339 * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
6340 if the TextBox is loaded and unset the emit state.
6341 (TextBox::EmitTextChanged): Same.
6343 2009-05-27 Geoff Norton <gnorton@novell.com>
6345 * deployment.cpp|h: Allow reinitializing the appdomain if our
6346 Source has changed, or we're switching from the splash screen to
6349 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
6352 * textblock.cpp: Fix warnings.
6354 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
6357 * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
6359 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
6365 * mms-downloader.cpp:
6366 * internal-downloader.h:
6367 * file-downloader.h:
6368 * file-downloader.cpp:
6369 * pipeline-asf.cpp: Updated according to downloader API changes.
6372 * downloader.cpp: Add support for retrieving response headers
6373 and disable caching. Initialize the downloader interface methods
6374 to their default/dummy methods statically.
6378 * type-generated.cpp:
6380 * cbinding.cpp: Regenerated.
6382 2009-05-27 Alan McGovern <amcgovern@novell.com>
6384 * resources.cpp: Wait til AddedToCollection returns success
6385 before adding the item to the hashtable.
6387 2009-05-27 Alan McGovern <amcgovern@novell.com>
6389 * resources.cpp: Propagate the error (if there is one) from
6390 Collection::AddWithError. If there is an error, clear the item
6391 from the hashtable before returning.
6393 2009-05-27 Alan McGovern <amcgovern@novell.com>
6397 * dependencyproperty.g.cpp: Control.Enabled needs to be
6398 created in native code as it's required for hittesting. A
6399 disabled control and its visual children do not receive
6400 mouse events and are not visible to
6401 VisualTreeHelper.FindElementInHostCoordinates.
6403 2009-05-26 Jeffrey Stedfast <fejj@novell.com>
6405 * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
6406 on the StyleSimulations value.
6407 (Layout): No longer need to pass along StyleSimulations to
6410 * font.cpp (style_weights): Added more style weight name mappings.
6411 (style_slants): Same.
6412 (FontFace::IsItalic): New method to query the font face to see if
6413 it is italic or not.
6414 (FontFace::IsBold): Same idea.
6415 (TextFont::TextFont): Now takes a TextFontDescription so that we
6416 can initialize the new 'simulate' member variable which tells us
6417 if we have to simulate bold or italics due to not finding a
6419 (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
6420 argument. Instead, it now uses the 'simulate' member variable to
6421 pass to FontFace::LoadGlyph().
6422 (TextFontDescription::CreatePattern): Always add Weight and Slant
6423 to the pattern now, even if it is the default font
6424 family. Silverlight 2.0 no longer restricts bold/italics to
6427 2009-05-26 Chris Toshok <toshok@ximian.com>
6429 * xaml.cpp (XamlElementInstance::SetName): if it's a
6430 dependencyobject, add it to the container here.
6431 (XamlElementInstance::SetKey): same.
6432 (end_element_handler): only do the AddToParentContainer call here
6433 if the element is not a dependencyobject.
6435 2009-05-25 Jeffrey Stedfast <fejj@novell.com>
6437 * glyphs.cpp: Changed 'style' to be unsigned.
6439 2009-05-25 Andreia Gaita <avidigal@novel.com>
6441 * timeline.h|cpp (DispatcherTimer): reset the clock properly when
6442 restarting a dispatcher timer. also, rename Run to Restart.
6443 note: if a timer is not stopped or started during it's tick event,
6444 the time spent on the tick is counted for the next tick on the
6447 2009-05-25 Chris Toshok <toshok@ximian.com>
6449 * runtime.h|cpp (Surface::EmitError): add an overload so
6450 Application.cs can cause an error to be emitted on the surface.
6452 * cbinding.h|cpp: regen.
6454 2009-05-25 Andreia Gaita <avidigal@novel.com>
6456 * border.cpp (OnPropertyChanged): Invalidate when background is
6459 2009-05-25 Chris Toshok <toshok@ximian.com>
6461 * uielement.cpp (UIElement::GetTransformToUIElementWithError):
6462 this method fails incorrectly when you call it on the toplevel
6463 element of a surface.
6465 2009-05-25 Chris Toshok <toshok@ximian.com>
6467 * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
6468 for separate resource dictionary name registration. this isn't
6469 exactly right, since the name *should* be unregistered.
6471 2009-05-25 Chris Toshok <toshok@ximian.com>
6473 * validators.cpp (Validators::TemplateValidator): this is causing
6474 DRT 438 to throw an exception and subsequently timeout. its
6475 removal doesn't seem to break anything else, so ifdef it out with
6478 2009-05-25 Alan McGovern <amcgovern@novell.com>
6483 * dependencyobject.cpp
6484 * dependencyproperty.cpp
6485 * dependencyproperty.g.cpp
6486 * dependencyproperty.h
6487 * uielement.h: There are two types of DependencyProperty.
6488 Core properties and custom properties. Custom properties
6489 do not set the parent on a DO. This makes the old
6490 'SetsParent' property redundant, so remove it.
6492 2009-05-22 Chris Toshok <toshok@ximian.com>
6494 * xaml.cpp (XamlElementInstance::SetName): don't call
6495 AddToContainer here. in case the element is a value type, and
6496 we're adding it to a RD on a managed type (like StackPanel), the
6497 managed xaml loader will marshal the value type to C# and we'll
6498 lose any further updates to the value typed object by the parser.
6499 That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
6500 ManagedXamlLoader will see a color with #00000000 as its value, as
6501 the content hasn't been parsed by the time we create the managed
6503 (XamlElementInstance::SetKey): same.
6504 (end_element_handler): call AddToParentContainer here instead.
6506 2009-05-22 Chris Toshok <toshok@ximian.com>
6508 * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
6509 were missing the case where HydratedFromXaml elements weren't
6510 updating their parent namescope on name changes, only their
6511 private ones. Adding the parent namescope fix fixes FaceMonkey's
6514 2009-05-22 Jackson Harper <jackson@ximian.com>
6516 * xaml.h|cpp: New callback for registering elements in
6517 containers, we need to do this earlier on in the parse than
6518 setproperty because other elements could reference these elements
6519 before they've been set.
6521 2009-05-21 Alan McGovern <amcgovern@novell.com>
6524 * src/cbinding.h: regen
6526 * dependencyproperty.c:
6527 * dependencyproperty.h: We can either register a 'core' property or a
6528 'custom' property from managed code. Core properties are part of the
6529 framework itself, custom properties are user-created. Custom properties
6530 don't set the parent or register names in namescopes.
6532 2009-05-21 Stephane Delcroix <sdelcroix@novell.com>
6534 * deepzoomimagetilesource.h:
6535 * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
6536 without listening to the event, if a tilesource is ready to be
6538 * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
6539 size from a subimage source.
6541 2009-05-21 Larry Ewing <lewing@novell.com>
6543 * multiscaleimage.cpp (RenderCollection): reoorder the max level
6544 test so that we only call get_tile_func once in that case. Speeds
6545 up hardrock and the moment.
6547 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
6549 * debug.h: Added LOG_ASF.
6551 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
6553 * runtime.h: Don't use 64 bit constants for the runtime debug enum.
6555 2009-05-21 Alan McGovern <amcgovern@novell.com>
6559 * src/dependencyproperty.g.cpp: regen
6561 * dependencyobject.cpp:
6562 * dependencyproperty.cpp:
6563 * dependencyproperty.h:
6564 * uielement.h: Add the ability to set a DP as non-parenting and
6565 apply it to FrameworkElement::TagProperty
6567 2009-05-20 Larry Ewing <lewing@novell.com>
6569 * multiscaleimage.cpp (RenderCollection): fix bug introduced in
6570 earlier tile size fix. Fixes covertocover.
6572 2009-05-20 Larry Ewing <lewing@novell.com>
6575 * bitmapsource.cpp: when creating a cached surface use the group
6576 target type not the overall target.
6578 2009-05-20 Larry Ewing <lewing@novell.com>
6580 * frameworkelement.cpp (ComputeActualSize): avoid making a
6581 IsLayoutContainer call here.
6583 2009-05-20 Stephane Delcroix <sdelcroix@novell.com>
6585 * multiscaleimage.cpp: support different tile sizes for the collection
6586 and the individual images. Fixes "the moment" 2D.
6588 2009-05-20 Larry Ewing <lewing@novell.com>
6590 * xaml.cpp: update the parser error numbers and strings to match 2.0.
6592 2009-05-20 Larry Ewing <lewing@novell.com>
6594 * multiscaleimage.cpp: small change to avoid getting the property
6597 2009-05-20 Alan McGovern <amcgovern@novell.com>
6602 * type-generated.cpp: Register 'float' as a known type
6604 2009-05-20 Chris Toshok <toshok@ximian.com>
6606 * type.h.in: a few changes. We no longer pass the kind name to
6607 the ctor, since nothing ever uses it, and the type name is enough.
6608 add both an interface array and array count to the Type ctor, as
6609 well as a is_interface bool. Lastly, add IsAssignableFrom
6612 * dependencyobject.cpp (DependencyObject::IsValueValid): switch
6613 from using a direct comparison on Kinds to using
6614 Type::IsAssignableFrom. this makes interfaces work.
6616 * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
6618 * animation.cpp (AnimationClock::HookupStorage): instead of
6619 comparing kinds, use Type::IsAssignableFrom to see if we can
6620 animate the property using a particular timeline type.
6621 (DoubleAnimation::GetCurrentValue,
6622 DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
6623 ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
6624 PointAnimation::GetTargetValue): add code to deal with the start
6625 value not being the same type as the animation uses (this can
6626 happen if we're animating an interface property like
6627 IComparable.) The start values in that case are 0.0, Point(0.0),
6628 and Color(0,0,0,0), respectively.
6630 2009-05-19 Larry Ewing <lewing@novell.com>
6632 * collection.cpp: avoid some GetDeployment calls in looping cases.
6634 2009-05-19 Larry Ewing <lewing@novell.com>
6636 * frameworkelement.cpp (UpdateLayout): clear the needs flags when
6637 we restart in case they we're properly cleared before.
6639 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
6641 * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
6642 function pointers to call whenever the corresponding virtual method
6645 * enums.h: Move enums from the pipeline here (makes it easier to
6646 create c bindings for methods taking enums)
6650 * pipeline-ffmpeg.cpp: Update accccording to enum changes.
6652 * codec-version.h.in: Bump ABI version.
6656 * type-generated.cpp: Regenerated.
6658 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
6664 * pipeline-ffmpeg.cpp:
6665 * pipeline.cpp|h: Add accessors for fields in VideoStream,
6666 AudioStream and MediaFrame.
6667 * cbinding.cpp|h: Regenerated.
6669 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
6671 * cbinding.cpp|h: Regenerated.
6673 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
6675 * security.h: Include <mono/metadata/assembly.h>.
6676 Fixes a warning (and the build with MD).
6678 2009-05-19 Alan McGovern <amcgovern@novell.com>
6680 * animation.cpp: Add some optimisations to ObjectKeyFrames.
6681 Don't call back into managed when the value is null or when
6682 the the value is already of the exact right kind. This will
6683 need to be reviewed once unmanaged code understands
6684 interfaces so we can fastpath interfaces too.
6686 2009-05-18 Larry Ewing <lewing@novell.com>
6690 * frameworkelement.cpp: for the time being use the needs* flags on
6691 surface to skip the UpdateLayout logic when the tree is clean.
6692 Optimize a couple of the property reads inside the deep walk.
6694 * provider.cpp (GetPropertyValue): rework some more of the checks
6695 to remove some other remaining unneeded checks.
6697 2009-05-18 Chris Toshok <toshok@ximian.com>
6699 * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
6702 2009-05-18 Larry Ewing <lewing@novell.com>
6704 * bitmapsource.cpp (GetSurface): use the content type of the image
6705 when creating the native surface.
6707 2009-05-18 Larry Ewing <lewing@novell.com>
6709 * provider.cpp (GetPropertyValue): reorder the framework element
6710 property lookup to avoid an extra type inquiry in a potentially
6713 2009-05-18 Larry Ewing <lewing@novell.com>
6715 * xaml.cpp (dependency_object_set_attributes): move the types
6716 lookup outside the loop.
6718 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
6721 * type.h: Regenerated.
6724 * dependencyobject.h:
6725 * dependencyproperty.h:
6728 * frameworkelement.h:
6731 * type.h: Sprinkle CBindingPrequisite around. Also use ints
6732 instead of Type::Kind values in function pointers.
6734 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
6736 * window-gtk.h: Add a GetNativeWidget which returns a void
6737 pointer instead of GtkWidget* so that we don't need to include
6738 gtk for the c bindings.
6740 2009-05-18 Alan McGovern <amcgovern@novell.com>
6742 * contentcontrol.cpp: For contentcontrols, the applied
6743 template is only cleared if the old or new content is a
6744 UIElement (frameworkelement?). The fallback 'template' of a
6745 Grid + TextBlock is also reused every time.
6747 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
6749 * utils.h: Use c++-style structs to please the generator.
6751 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
6753 * window-gtk.h: Add a GetNativeWidget which returns a void
6754 pointer instead of GtkWidget* so that we don't need to include
6755 gtk for the c bindings.
6756 * cbinding.h|cpp: Updated.
6758 2009-05-16 Chris Toshok <toshok@ximian.com>
6760 * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
6761 be g_strstrip'ed, but we can't do it until right before we use it,
6764 2009-05-16 Chris Toshok <toshok@ximian.com>
6766 * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
6767 XamlElementInfo::IsCDataVerbatim): new methods to set and get a
6768 flag telling the cdata_handler to not collapse/remove
6769 whitespace. <clr:String> requires this.
6770 (PrimitiveNamespace::FindElement): for the "String" case, call
6771 XamlElementInfo::SetIsCDataVerbatim(true).
6772 (char_data_handler): if the current element IsCDataVerbatim, just
6773 append the input string and return.
6775 2009-05-16 Alan McGovern <amcgovern@novell.com>
6777 * security.c: Bump the security env var to _04
6779 2009-05-16 Alan McGovern <amcgovern@novell.com>
6787 * dependencyproperty.g.cpp: Add type converting to
6788 ObjectKeyFrame. The conversion is done during the Resolve
6789 phase. If the type conversion can't be completed an
6790 exception is thrown.
6792 2009-05-15 Chris Toshok <toshok@ximian.com>
6794 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
6795 in the hydrated case we still need to register our name.
6796 (DependencyObject::ProviderValueChanged): don't swallow the error
6797 when we SetParent on the new_as_dep.
6798 (DependencyObject::SetParent): if we're adding a Hydrated
6799 element (i.e. one that was loaded using LoadComponent), we need to
6800 register its name into the parent namescope. Also, move the
6801 quickest check to the top so we don't do the family check on every
6802 SetParent call if the before/after parent are the same. Lastly,
6803 we only register names if the current parent is NULL. That is, if
6804 a named brush is a property on an element already, and its name is
6805 registered, we don't register it in the new namescope when it's
6806 set as a property on a second element. Odd but it matches SL
6808 (DependencyObject::FindName): no longer walk up the namescope
6809 hierarchy, and don't look up things in the toplevel's namescope
6812 * dependencyobject.h (class DependencyObject): add
6813 SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
6815 * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
6816 object as being hydrated.
6817 (everywhere): we don't need GetParentNamescope for anything. we
6818 always use the toplevel namescope of the subtree the parser is
6821 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6822 don't pass a null error to ProviderValueChanged.
6824 2009-05-15 Larry Ewing <lewing@novell.com>
6826 * frameworkelement.cpp (UpdateLayout): just warn if the element is
6827 loaded don't skip it for now since it causes regressions in the
6830 2009-05-15 Chris Toshok <toshok@ximian.com>
6832 * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
6833 change that gets automatic storyboards with zero length children
6834 to have a zero length themselves.
6836 2009-05-15 Larry Ewing <lewing@novell.com>
6838 * grid.cpp (OnCollectionItemChanged): invalidate on column
6841 2009-05-15 Larry Ewing <lewing@novell.com>
6843 * debug.h (LOG_LAYOUT): use printf.
6845 * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
6847 * frameworkelement.cpp: reorder the updated_list and clean up some
6850 * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
6851 loaded here since it will break delayed queuing of loaded events
6852 when the tree is modified inside the event handler. Improves
6854 2009-05-15 Jackson Harper <jackson@ximian.com>
6856 * xaml.cpp: Use the property element's type instead of parsing out
6857 the name, this fixes setting propertys of imported managed types.
6859 2009-05-15 Alan McGovern <amcgovern@novell.com>
6862 * dependencyproperty.g.cpp: The Keyframes property of
6863 ObjectAnimationUsingKeyframes needs to be autogenerated.
6865 2009-05-15 Alan McGovern <amcgovern@novell.com>
6867 * type-generated.cpp:
6868 * frameworkelement.h: Properly handle exceptions when updating
6869 the source in a 2 way binding. Raise the
6870 BindingValidationError event in the right place.
6872 2009-05-14 Jackson Harper <jackson@ximian.com>
6874 * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
6876 2009-05-14 Larry Ewing <lewing@novell.com>
6878 * xaml.cpp (lookup_named_item): make this nonrecursive.
6880 2009-05-14 Jeffrey Stedfast <fejj@novell.com>
6882 * frameworkelement.cpp (OnPropertyChanged): Do a
6883 FullInvalidate(true) when the Horizontal or Vertical Alignment
6886 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6888 * dependencyobject.cpp: unref: only try to delete
6889 us if we had a 0 refcount after decrementing refcount.
6890 Also use an atomic fetch when checking if the object
6893 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6895 * dependencyobject.cpp: when printing stack traces
6896 first get all the lines to print, then print them.
6897 This way it's a lot less probable to get other lines
6898 in between when printing stacktraces from multiple threads.
6900 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6902 * dependencyobject.cpp: Print typename for object creation
6903 too, now that we don't have to call a virtual method to
6906 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
6908 * timesource.h: G_PRIORITY_IDLE doesn't exist, use
6909 G_PRIORITY_HIGH_IDLE.
6911 2009-05-13 Chris Toshok <toshok@ximian.com>
6913 * xaml.cpp (class XamlContextInternal): allow for a parent context
6914 so that we can track context's (and resources) across multiple
6915 template instantiations.
6916 (create_resource_list): just stuff the FrameworkElement on the
6917 list and leave the GetValue(UIElement::Resources) for when we look
6918 up the actual resource.
6919 (end_element_handler): when creating a new XamlContext pass in our
6920 current XamlContext.
6921 (XamlContextInternal::LookupNamedItem): handle both changes (FWE
6922 in our resources list, and parent context chaining.)
6924 2009-05-13 Jackson Harper <jackson@ximian.com>
6926 * xaml.cpp: We need to dup the top_element since this can be
6929 2009-05-13 Chris Toshok <toshok@ximian.com>
6931 * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
6932 clocks (those with Duration=00:00:00) we weren't emitting
6933 completed (or switching to Fill/Stop).
6935 2009-05-13 Jackson Harper <jackson@ximian.com>
6937 * xaml.h|cpp: use a Value* for top level objects, this lets us get
6938 rid of the gchandle hack in the managed xaml loader for non DOB
6941 2009-05-13 Larry Ewing <lewing@novell.com>
6943 * canvas.cpp: make IsLayoutContainer nonrecursive using
6946 * frameworkelement.cpp:
6947 * uielement.cpp, uielement.h:
6949 * shape.cpp: start reworking the container layout logic to avoid
6952 * collection.cpp: don't ref elements inside DeepTreeWalker use
6953 UnsafeUIElementNode instead.
6955 * dirty.cpp (UpdateLayout): remove some dead code.
6957 2009-05-13 Alan McGovern <amcgovern@novell.com>
6959 * value.cpp: Ensure we don't explode when checking null uris
6961 2009-05-13 Alan McGovern <amcgovern@novell.com>
6963 * validators.cpp: If StyleProperty has a value and it is
6964 'null', that is allowed to be replaced.
6966 2009-05-12 Chris Toshok <toshok@ximian.com>
6968 * timeline.cpp (DispatcherTimer::Start): when resetting the clock
6969 we need to make sure to reset the root parent time, or else the
6970 timer will tick immediately when started (if it's previously hit
6973 2009-05-12 Larry Ewing <lewing@novell.com>
6975 * collection.cpp, collection.h: Add a SkipBranch method to avoid
6976 computing walking into the tree when we can.
6978 * frameworkelement.cpp (UpdateLayout): Use the new skip branch
6979 logic in deeptreewalker to avoid invisible elements.
6981 2009-05-12 Larry Ewing <lewing@novell.com>
6983 * frameworkelement.cpp (UpdateLayout): revert the visibility change
6986 2009-05-12 Larry Ewing <lewing@novell.com>
6988 * frameworkelement.cpp (ComputeBounds): make sure the bounds are
6989 the size of the full element, and skip elements based on the
6990 actual visibility setting not the computed one.
6992 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
6994 * textbox.cpp (InvalidateCursor): New helper method which applies
6995 the absolute transform to the cursor before invalidating the
6997 (ShowCursor): Use InvalidateCursor().
6999 (UpdateCursor): Here too.
7001 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
7003 * textbox.cpp (OnKeyDown): Need to set the handled flag on the
7004 routed event args in the case where the key event is handled by
7006 (OnKeyUp): Set the handled flag in both cases here.
7008 2009-05-11 Alan McGovern <amcgovern@novell.com>
7012 * contentcontrol.cpp: Recommit r133738 as it's not causing the
7015 2009-05-09 Andreia Gaita <avidigal@novell.com>
7017 * uielement.h: Add GenerateJSBinding annotation to
7018 CaptureMouse, ReleaseMouseCapture and
7019 GetTransformToUIElementWithError (TransformToVisual)
7021 2009-05-09 Chris Toshok <toshok@ximian.com>
7023 * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
7024 this check so we're buildable on SLED10.
7026 2009-05-08 Jeffrey Stedfast <fejj@novell.com>
7028 * layout.cpp (layout_word_wrap): If we can't find a suitable place
7029 to wrap in the first time through the loop, make sure to respect
7030 the 'force' state the second time through.
7032 * application.cpp (GetResourceAsPath): Updated.
7034 * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
7035 to specify whether the filename should be lowercased as it is
7037 (ExtractAll): The 'canon' argument has been renamed to 'lower'
7038 which more accurately reflects its purpose. Pass this on to
7039 CanonicalizeFilename().
7041 2009-05-08 Alan McGovern <amcgovern@novell.com>
7045 * contentcontrol.cpp: Revert the changes in r133738 until I
7046 can figure out why the x86 bot doesn't like them. It's
7047 causing the extended controls tests to time out.
7049 2009-05-07 Alan McGovern <amcgovern@novell.com>
7053 * contentcontrol.cpp: If the content property changes, the
7054 Template is cleared if it has already been applied.
7056 2009-05-07 Andreia Gaita <avidigal@novell.com>
7058 * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
7059 the to_element is the top level element.
7061 2009-05-06 Chris Toshok <toshok@ximian.com>
7063 * xaml.cpp (dependency_object_set_attributes): we can't assume
7064 that a NULL value for @v means it hasn't been set, since {x:Null}
7065 could have been specified. we need another flag to make it work.
7067 2009-05-06 Jeffrey Stedfast <fejj@novell.com>
7069 * textbox.cpp (OnPropertyChanged): Guard against calling
7070 ResetIMContext in the middle of some keyboard input.
7072 2009-05-05 Chris Toshok <toshok@ximian.com>
7074 * collection.cpp (Collection::InsertWithError): we need to make a
7075 further copy because the caller could remove the element in a
7076 handler, which causes us to delete the value (values aren't ref
7079 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
7081 * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
7082 false since we're not rendering the preedit strings ourselves.
7083 (TextBoxBase::SetSurface): Update the GtkIMContext's client
7085 (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
7086 where the cursor is at.
7088 2009-05-05 Alan McGovern <amcgovern@novell.com>
7090 * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
7091 elements to be added to ResourceDictionarys in managed land.
7093 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
7095 * layout.cpp (Select): Fixed some selection logic.
7097 * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
7098 and hook up some callbacks. Also init need_im_reset to false.
7099 (TextBoxBase::~TextBoxBase): Kill the IMContext.
7100 (TextBoxBase::OnKeyDown): Filter the event key through the
7101 IMContext. If it handles the key, don't do anything more.
7102 (TextBoxBase::DeleteSurrounding): New callback method for
7104 (TextBoxBase::RetrieveSurrounding): Same.
7105 (TextBoxBase::Commit): New IMContext callback method to commit the
7106 input-method chars into the TextBox.
7107 (TextBoxBase::ResetIMContext): New helper method to reset the
7109 (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
7110 (TextBoxBase::OnFocusIn): Same.
7111 (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
7112 changes, update the GtkIMContext state accordingly. Same with the
7113 various Selection states and Text property.
7115 * eventargs.cpp (GetEvent): New method to get access to the
7116 original GdkEventKey event for use with GtkIMContext.
7118 2009-05-05 Alan McGovern <amcgovern@novell.com>
7122 * dependencyproperty.g.cpp: Back out the default value fix
7123 until the parser can be updated to handle this.
7125 2009-05-05 Alan McGovern <amcgovern@novell.com>
7129 * dependencyproperty.g.cpp: PathGeometry.Figures and
7130 ObjectAnimationUsingKeyframes.KeyFrames both need to be
7131 autogenerated. This allows them to pass their respective
7132 DefaultValues tests (when those tests are run).
7134 2009-05-05 Alan McGovern <amcgovern@novell.com>
7136 * template.h: Remove the forward decls for TemplateBinding and
7137 XamlTemplateBinding as they don't exist in unmanaged anymore
7139 2009-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
7141 * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
7143 2009-05-04 Geoff Norton <gnorton@novell.com>
7145 * codec-version.h.in: Bump
7146 * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
7148 2009-05-04 Jeffrey Stedfast <fejj@novell.com>
7150 * debug.cpp (Frame::ToString): fixed compile warning.
7152 * uielement.cpp (UpdateLayout): Need to return a bool here, we
7155 * textbox.cpp (Blink): Set the deployment.
7157 2009-05-03 Chris Toshok <toshok@ximian.com>
7159 * everywhere (NotifyListenersOfPropertyChange): add a MoonError
7162 * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
7163 can hook up TemplateBindings in managed code. Also, change all
7164 the loader callback types to take a loader pointer so we can get
7167 * template.h|.cpp: remove all the lists of bindings, the
7168 two different template binding types (XamlTemplateBinding and
7169 TemplateBinding) and their respective List::Node containers. all
7170 this is handled in managed land now, where it belongs.
7172 * dependencyproperty.h|.cpp: move
7173 PropertyChangedEventArgs to dependencyproperty.h, and unify the
7174 two types for property change handlers into simply
7175 PropertyChangeHandler.
7177 * dependencyobject.h: remove the PropertyChangedEventArgs struct
7178 from here, it now lives in dependencyproperty.h
7180 * dependencyobject.cpp (class CallbackListener): pass a MoonError
7182 (DependencyObject::ProviderValueChanged): reuse the
7183 PropertyChangedEventArgs since property change callbacks take them
7184 now instead of splitting up the old_value/new_value/property.
7186 * control.cpp (Control::Control, Control::~Control,
7187 Control::ApplyTemplate): remove all reference to the list of
7190 * control.h (class Control): remove the list of bindings.
7192 * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
7195 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
7197 * runtime.h (InMainThread): check main_thread_inited.
7199 * runtime.cpp: All flags variables are now 32bit. Split _EX flags
7200 into a second debug_flags_ex. Also added a new bool var to keep
7201 track of whether or not main_thread has been initialized since we
7202 can't necessary compare against NULL.
7206 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
7208 * debug.cpp: #include <unistd.h>
7210 * *.h: Don't #include stdint.h or unistd.h (only cpp files should
7213 2009-05-02 Jeffrey Stedfast <fejj@novell.com>
7220 * value.h[.in]: Don't include stdint.h
7222 2009-05-01 Jackson Harper <jackson@ximian.com>
7224 * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
7227 2009-05-01 Larry Ewing <lewing@novell.com>
7229 * collection.cpp: rework the sorting invalidation logic so that we
7230 don't do it quite as often.
7232 2009-05-01 Larry Ewing <lewing@novell.com>
7235 * collection.cpp: cache the deployment more and add a
7236 VisualTreeWalker interface to help with that.
7238 2009-05-01 Larry Ewing <lewing@novell.com>
7242 * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
7243 add a static version that handles looking up the deploy for us.
7247 * value.cpp: Make it possible to use a cached deployment when
7248 retriving values using the ::As* methods and calling
7249 Types::IsSubclassOrSuperclassOf.
7251 * style.cpp: when sealing the style use the cached deployment logic.
7253 2009-05-01 Larry Ewing <lewing@novell.com>
7255 * dependencyobject.h:
7256 * xaml.cpp: use types more directly in a few more places to reduce
7257 calls to Deployment::GetCurrent even more.
7259 2009-05-01 Jackson Harper <jackson@ximian.com>
7262 * dependencyobject.cpp|h: Move the name validation check to a
7263 validator (phase one of moving NameProperty to frameworkelement).
7264 * dependencyproperty.g.cpp: regen
7266 2009-05-01 Jackson Harper <jackson@ximian.com>
7269 * value.h.in: Sync with their .h's
7271 2009-04-30 Jackson Harper <jackson@ximian.com>
7273 * xaml.cpp: Use the type system for detecting if we should be in
7274 buffering mode, anything that is a FrameworkTemplate
7275 should be buffered. This fixes custom types that inherit from
7276 DataTemplate not getting buffered properly.
7278 2009-04-30 Jackson Harper <jackson@ximian.com>
7280 * xaml.cpp: We need to pass the object to GetPropertyName because
7281 non DOB objects can have content properties now.
7283 2009-04-30 Jackson Harper <jackson@ximian.com>
7285 * xaml.cpp: Don't require a content property name when we are
7286 trying to set a managed content property. This could be the
7287 content of a managed collection.
7289 2009-04-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
7291 * bitmapimage.cpp: Make sure we clean up any previous
7292 downloaders when we create new ones.
7294 2009-04-29 Larry Ewing <lewing@novell.com>
7296 * frameworkelement.cpp:
7297 * uielement.cpp (DoMeasure): reorder some calls to improve speed
7298 until the new logic lands.
7300 2009-04-29 Larry Ewing <lewing@novell.com>
7302 * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
7303 reduce Deployment::GetCurrent calls.
7306 * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
7309 2009-04-29 Larry Ewing <lewing@novell.com>
7312 * dependencyobject.cpp: reuse types to reduce calls to
7313 Deployment::GetCurrent ().
7315 2009-04-29 Alan McGovern <alan.mcgovern@gmail.com>
7317 * popup.cpp: Forgot to call the base Dispose method.
7319 2009-04-29 Geoff Norton <gnorton@novell.com>
7321 * debug.cpp: Not everyone in the world is 32-bit intel.
7323 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
7325 * textblock.cpp (SetTextInternal): Protect everything from
7326 reentrancy and never replace the autocreated InlineCollection with
7327 a newly allocated one. Instead, Clear() the old one and add the
7329 (OnCollectionChanged): If !setvalue, then it means we are updating
7330 stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
7332 2009-04-29 Andreia Gaita <avidigal@novell.com>
7334 * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
7335 parseable stacktraces for later visualization
7337 2009-04-29 Andreia Gaita <avidigal@novell.com>
7339 * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
7340 calls in a nice way, for later parsing and visualization.
7342 2009-04-29 Geoff Norton <gnorton@novell.com>
7344 * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
7345 nicely crashes on a incomplete .so (thanks). As such we're going to
7346 sha1 the expected binary before blindly installing it to gatekeep
7349 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
7351 Fixes some cursor position/selection bugs
7353 * layout.cpp (TextLayoutLine): Initialize a new member variable
7355 (Layout): Update line->count (needed for the reworking of
7356 GetCursor) and line->length (which was the case of the bugs)
7357 variables as we go. Switch to doing this for run->length too.
7358 (GetCursor): Reworked a bit to use character indexes to help us
7359 find the correct cursor position rather than using byte offsets
7360 which were more awkward.
7362 2009-04-29 Alan McGovern <amcgovern@novell.com>
7365 * popup.cpp: Remove the attached layer correctly when the
7366 surface is being nulled on a Popup.
7368 2009-04-29 Geoff Norton <gnorton@novell.com>
7371 * provider.cpp: GetIterator returns a ref'd iter, we need to delete
7372 it when we're done to clean it up.
7373 * dependencyproperty.g.cpp: You raise me up.
7374 * deployment.cpp|h: Deployment has a cyclic reference to things
7375 stored in it (AssemblyParts, NameScope), we need to break this cycle
7376 in our disposer so they can be properly cleand up.
7377 * xaml.cpp: If we create a new collection, and set the collection as
7378 some objects value, it will have a refcount of 2. We need to unref
7379 the collection once we've handed it off.
7381 2009-04-28 Geoff Norton <gnorton@novell.com>
7383 * popup.cpp: We cannot access this local value here since its been
7384 cleared in our dispose call.
7386 2009-04-28 Geoff Norton <gnorton@novell.com>
7388 * deployment.cpp: Now that we properly shut down the clocks and
7389 media threads, we can finalize the domain here instead of pumping
7392 2009-04-28 Chris Toshok <toshok@ximian.com>
7394 * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
7395 address of a temporary.
7397 2009-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
7400 * audio.cpp: When looping over playing nodes, don't include
7401 nodes in the Waiting state.
7403 * audio-alsa.cpp: when Played, update the poll list. The state
7404 might not actually have changed if only the Waiting flag was
7407 2009-04-28 Larry Ewing <lewing@novell.com>
7414 * frameworkelement.h:
7415 * frameworkelement.cpp: add FrameworkProvider for actual*
7416 values. Rework layout using the actual* values and add a first
7417 pass at looping layout.
7420 * collection.h: Add a deep tree walker that allows you to walk the
7421 entire tree without recursing.
7428 * canvas.cpp: rework layout logic for the new providers and handle
7429 more of the corner cases.
7432 * textblock.cpp: Remove the old Actual* provider since we use the
7433 generic one now. Go a bit crazy with Invalidations until they can
7436 * eventargs.cpp: stop using IsAnythingDirty.
7438 2009-04-28 Larry Ewing <lewing@novell.com>
7440 * dependencyobject.cpp:
7445 * timesource.h: rework the priority of our event queue so that
7446 we end up being more responsive to input and give the browser a
7447 chance to do things like repaint.
7449 2009-04-28 Jackson Harper <jackson@ximian.com>
7451 * xaml.cpp: Don't allow x:Class on non top level elements.
7453 2009-04-28 Jackson Harper <jackson@ximian.com>
7455 * dependencyproperty.cpp: When resolving property paths if we
7456 don't have enough info to lookup the correct managed type we just
7457 verify that the current lookup object has the correct type name,
7458 excluding namespace.
7460 2009-04-28 Alan McGovern <amcgovern@novell.com>
7465 * contentcontrol.cpp: Add the ability to stop ContentControl
7466 from automatically setting the LogicalParent when a
7467 FrameworkElement is added as the Content.
7469 2009-04-27 Jackson Harper <jackson@ximian.com>
7471 * value.cpp: property path's have expanded paths that need to be
7472 copied, freed, ect now.
7473 * propertypath.h: Add an expanded path to the property path, this
7474 is a path with managed types marked with namespaces expanded into
7475 full names. So 'moon:MyType' becomes something like
7476 'MoonNamespace.MyType'.
7477 * dependencyproperty.cpp: If an expanded path is available use
7478 that for property path parsing. Also added support for the ' mark
7479 for escaping full type names (otherwise full names could not have
7480 '.'s). The ' can only be used in expanded paths.
7481 * xaml.cpp: When parsing property paths expand out managed
7482 namespaces if possible.
7484 2009-04-27 Geoff Norton <gnorton@novell.com>
7486 * value.cpp: Its possible for these pointers to be 0x0 here, so
7487 we need to guard against a invalid dereference causing a SIGSEGV
7488 fixes moon-unit with toggleref on.
7490 2009-04-27 Geoff Norton <gnorton@novell.com>
7492 * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
7494 2009-04-24 Chris Toshok <toshok@ximian.com>
7496 It turns out the granularity of overriding in styles is at the
7497 setter level, not the style level. so if you have a local style
7498 with a setter for Background, it doesn't overwrite the default
7499 style setters for, say, Foreground. We handle this by having two
7500 style providers, with the local style provider overriding the
7501 default style provider.
7503 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
7504 initialize both of the style providers (at both LocalStyle and
7505 DefaultStyle levels.)
7506 (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
7507 style (so that values are converted in managed-land), and seal it
7508 at the local style level.
7509 (FrameworkElement::SetDefaultStyle): same blob here, but seal it
7510 at the default style level.
7512 * dependencyobject.cpp (DependencyObject::Initialize): pass
7513 precedences to the providers in their ctors, and also don't
7514 initialize a style provider here. This saves us from having a
7515 style provider on anything except frameworkelement subclasses.
7517 * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
7518 precedence ctor arg to property value providers.
7520 * provider.h: provider ctors now take both an object and a
7521 precedence level. that way they know what precedence level to
7522 notify changes on (this is mostly for the style provider, but it
7523 moves all the precedence level logic to the spot where we create
7524 the provider, not in the provider code itself.)
7526 * provider.cpp: add all the precedence ctor args.
7527 (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
7528 with the precedence we were initialized with.
7529 (AutoCreatePropertyValueProvider::GetPropertyValue): same.
7531 2009-04-24 Alan McGovern <amcgovern@novell.com>
7533 * runtime.cpp: When a layer is being detached, don't try to
7534 invalidate its bounds if the active window has already been
7535 torn down. Fixes the case where a popup is open while the
7536 window is being torn down.
7538 2009-04-24 Alan McGovern <amcgovern@novell.com>
7541 * popup.cpp: When the popup is detached from the surface, it
7542 should automatically close if it is open.
7544 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
7546 * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
7547 lwsp after going beyond the width constraint. Fixes the
7548 tests in the far right in MS DRT 206.
7550 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
7552 * font.cpp (GetGlyphInfo): Don't special-case
7553 ZeroWidthNonBreakingSpace anymore. Rely on the font for this
7554 glyph. That seems to be what SL2 does now...
7556 * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
7557 implemenetd a forced-wrap if we can't find a suitable place to
7560 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
7562 * layout.cpp (layout_word_wrap): Don't treat special numeric
7563 punctuation as the start of a numeric word until we see what lays
7566 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
7568 * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
7569 anymore, that was a 1.0-thing and can no longer be used. Also
7570 added support for non-breaking-glue classes as well as rules for
7571 breaking on combining-marks, open-punctuation, contingents,
7572 quotations, prefixes, and words starting with an infix.
7574 2009-04-23 Chris Toshok <toshok@ximian.com>
7576 * animation.cpp|.h, clock.cpp|.h: remove
7577 OnSurfaceAttach/OnSurfaceDetach. They're no longer used.
7579 2009-04-23 Chris Toshok <toshok@ximian.com>
7581 * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
7582 clock state and use that to tell whether to update the child
7583 clocks on this tick. Clock::UpdateFromParentTime will change it
7584 out from under us, and child clocks won't get updated the last
7585 time when we switch to Filling or Stopped.
7587 2009-04-23 Chris Toshok <toshok@ximian.com>
7589 * animation.cpp (Animation::AllocateClock): remove the name
7590 setting from here, since it only works here if the target/property
7591 were set on the animation itself.
7592 (AnimationClock::HookupStorage): and move it here, when we know
7593 both the target and property.
7595 * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
7596 Class::Event instead of instance->Event. also set the name of the
7597 storyboard in debug mode.
7598 (MultiScaleImage::SetViewportOrigin): same.
7599 (motion_finished): make static.
7601 2009-04-23 Chris Toshok <toshok@ximian.com>
7603 * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
7604 clocks (not clockgroups, mind you) if we're active and not paused.
7605 Fixes animations reverting in lutz's deep zoom demo.
7607 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
7609 Lots of fixage for MS DRT #209
7611 * layout.cpp (layout_word_wrap): Fixed for inseparables,
7612 exclamations, ambiguous, and postfix. Also removed the
7613 glyph->index == 0 hack that was there for Silverlight 1.0
7615 2009-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
7617 * dependencyobject.h:
7618 * dependencyobject.cpp: Add a way to mark allow objects to be
7619 deleted on any thread, not just the main thread.
7621 * pipeline.cpp: MediaClosures can be deleted on any thread.
7623 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
7625 * layout.cpp (layout_word_wrap): Add a bit more logic for infix
7626 separators. Finishes off MSDRT 208.
7628 2009-04-22 Chris Toshok <toshok@ximian.com>
7630 * xaml.cpp (value_from_str): permit empty int32's (they're 0).
7631 add comment about empty doubles.
7633 2009-04-22 Chris Toshok <toshok@ximian.com>
7635 * xaml.cpp (dependency_object_add_child): guard against adding an
7636 empty Value to a resource dictionary. this happen when you have
7637 no content on a primitive type (<sys:Bool></sys:Bool>) and
7638 value_from_str can't deal with parsing an empty string.
7639 (value_from_str): for non-object/non-string types, we need to
7640 strip leading/trailing whitespace before attempting to parse. this
7641 allows things like: <sys:Bool> true </sys:Bool>
7642 (class XamlElementInstanceValueType): for empty elements the value
7643 will have never been set. try to set it here using an empty
7646 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
7648 * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
7649 SelectionLength values as they come in. Apparently this is what
7650 Silverlight does too.
7652 2009-04-22 Chris Toshok <toshok@ximian.com>
7654 * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
7655 with true meaning "i need another tick."
7656 (ClockGroup::UpdateFromParentTime): same.
7658 * timeline.cpp (DispatcherTimer::Start): use the timemanager to
7660 (DispatcherTimer::Run): use the root_clock's parent clock here to
7661 simplify the code a bit.
7662 (DispatcherTimer::~DispatcherTimer): same.
7664 * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
7665 we don't care about groups, just add it to the deployment's
7668 * timemanager.h|cpp (class RootClockGroup): new class to represent
7669 the root clock group created by a time manager to house all other
7670 clocks in a surface. It has slightly different behavior from a
7671 noprmal clock group, particularly wrt putting the timemanager to
7673 (TimeManager::TimeManager): create a RootClockGroup.
7674 (TimeManager::RemoveTickCall): if we're putting the time manager
7675 to sleep, check to see if this was the last tick call, and clear
7676 the flag (and stop the source if the flags are now empty).
7677 (TimeManager::NeedRedraw): now that clock smoothing isn't used,
7678 source->SetTimerFrequency() can't be called with whatever timeout
7679 we like and have it migrrate back to the user-specified time. so
7680 change 0 to current_time.
7681 (TimeManager::NeedClockTick): same.
7682 (TimeManager::AddTickCall): same.
7683 (TimeManager::SourceTick): remove the #if'ed out version with
7684 clock smoothing, and add back in the stuff to put the time manager
7685 to sleep (currently ifdef'ed out still)
7686 (TimeManager::AddClock): move the logic to delay the root clock
7687 group here out of Storyboard::Begin. This is because we also want
7688 to do this with DispatcherTimers as well. Given that there is no
7689 TimeManager::GetRootClock anymore, this is the only api to add
7692 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
7694 * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
7695 the 'in' ptr to inend.
7697 * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
7699 2009-04-22 Rusty Howell <rhowell@novell.com>
7701 * building libmoonxpi for the FF plugin
7703 2009-04-21 Chris Toshok <toshok@ximian.com>
7706 (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
7707 but hopefully worth the hotspot reduction. do fast checks to see
7708 if we're even dealing with a property that's inheritable first.
7709 cache the Types* pointer instead of indirectly fetching it
7710 repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
7713 2009-04-21 Jeffrey Stedfast <fejj@novell.com>
7715 * glyphs.cpp (Layout): Fixed scaling calculation.
7717 * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
7718 and LayoutWrap. The different word-wrapping behaviors are, as
7719 before, handled in different subroutines but the outer loops are
7722 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
7724 * textblock.cpp (SetTextInternal): Don't break the string into
7725 multiple inlines, Silverlight shoves the entire string into a
7726 single Run no matter what.
7727 (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
7728 character instead of \n to match Silverlight behavior.
7730 * layout.cpp: Fixed various loops and checks to properly handle
7731 any type of unicode line-breaking character.
7733 2009-04-21 Alan McGovern <amcgovern@novell.com>
7735 * collection.h: HitTestCollection should override
7736 RemovedFromCollection the same way it overrides
7737 AddedToCollection so that items added/removed from the
7738 collection are not reparented.
7740 2009-04-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
7742 * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
7744 2009-04-20 Chris Toshok <toshok@ximian.com>
7746 * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
7747 this method. Also, don't multiply to compute localTime only to
7748 turn around and divide to compute normalizedTime. normalizedTime
7749 is always the factor we multiply natural_duration_timespan by.
7751 2009-04-20 Chris Toshok <toshok@ximian.com>
7753 * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
7754 textblock autocreator here, and stop using TextBlock vs. Control
7755 for the font size names, as both textblock and controls have the
7756 varying font size. There's also no reason to make them public
7757 anymore. if you want the font size, just call GetFontSize().
7759 * control.h: FontSize uses an autocreator now, and remove the
7762 * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
7763 of the #define, and while we're at it just replace the other
7764 defines with calls to the getters too.
7766 * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
7767 now), and the #define for font_size.
7769 * dependencyproperty.g.cpp: regen.
7771 2009-04-20 Chris Toshok <toshok@ximian.com>
7773 * security.c (security_enable_coreclr): version the
7774 MOON_DISABLE_SECURITY variable.
7776 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
7778 * textblock.cpp (TextBlock): Removed cached TextFontDescription
7779 since it's only ever used in 1 place and even then it's a corner
7782 2009-04-20 Chris Toshok <toshok@ximian.com>
7784 * timeline.cpp: fix up DispatcherTimers after I broke them by
7785 removing the clock event.
7787 2009-04-19 Chris Toshok <toshok@ximian.com>
7789 * eventargs.h|.cpp: add RenderingEventArgs type.
7791 * timemanager.cpp (TimeManager::SourceTick): the render event
7792 takes a RenderEventArgs, even though the type of the event is
7793 EventHandler. Goes a long way toward fixing DRT #394 and fixes
7796 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
7799 2009-04-19 Chris Toshok <toshok@ximian.com>
7801 * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
7802 default for the various shapes (Fill if a rectangle or ellipse,
7803 None for all other types). Fixes part of DRT #508.
7804 (Rectangle::Rectangle): don't set the default value as a local
7806 (Ellipse::Ellipse): same.
7808 2009-04-19 Jeffrey Stedfast <fejj@novell.com>
7810 * textblock.cpp (DefaultFontSize): New function to get the default
7811 font size for a TextBlock (or Inline) based on the Silverlight
7812 context (XAP vs XAML).
7814 2009-04-19 Chris Toshok <toshok@ximian.com>
7816 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7817 inlines inherit their Language from the textblock, and textblocks
7818 inherit it from frameworkelements. part of fix for drt #952.
7820 2009-04-18 Chris Toshok <toshok@ximian.com>
7822 * clock.h|.cpp: move to the holy grail of a functional clock
7823 setup. this removes Clock::Tick and related additive machinery
7824 that introduces errors into various calculations. instead we use
7825 the fact that a child's time can be expressed as a function of its
7826 parent's time. more calculation per-frame, perhaps, but less
7827 problems wrt inflection points like autoreverse/repeat points.
7828 This removes *tons* of difficult to read and impossible to
7829 understand code, and brings clocks and clockgroups a lot closer.
7830 Docs coming soon to a source file near you.
7832 * timeline.h|.cpp: various clock-related changes. 2 notables are
7833 the fact that all Timelines have a completed event now instead of
7834 just storyboards (because Clocks are also emitting completed now,
7835 not just ClockGroups), and DispatcherTimers now subclass from
7836 Timeline instead of TimelineGroup. We also use a virtual method
7837 instead of an event handler for ticking DispatcherTimers.
7839 * animation.h|.cpp: more clock fallout. Also, rewrite
7840 HookupAnimationsRecurse so that we propagate the current
7841 target/property as parameters instead of requiring a search back
7842 up the tree at ever level.
7844 * timemanager.cpp: more clock rewrite stuff. Set the surface
7845 clockgroup's duration to forever instead of automatic, and switch
7846 from ->Tick to ->UpdateFromParentTime.
7848 * multiscaleimage.cpp: track changes to storyboard api (basically
7849 i removed the non-WithError methods.. maybe i should put them
7852 * cbinding.h|.cpp, type-generated.cpp: regen.
7854 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
7856 * glyphs.cpp (Layout): Pass our StyleSimulations along to
7857 GetGlyphInfo() so that we can simulate Bold or Italics as the user
7860 * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
7861 argument (which defaults to None). Adjust the glyph for Bold
7862 and/or Italics if requested.
7863 (TextFont::GetGlyphInfo): Now takes a StyleSimulations
7864 argument (which defaults to None). When looking up the glyph in
7865 the cache, make sure that the simulations also match. When loading
7866 a new glyph, pass along the StyleSimulations.
7868 2009-04-17 Larry Ewing <lewing@novell.com>
7870 * runtime.cpp (Surface): remove references to removed variable.
7872 2009-04-17 Chris Toshok <toshok@ximian.com>
7874 * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
7875 getter/setter here, and move XapLocation from surface to here.
7877 * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
7879 * downloader.cpp: use Deployment::GetXapLocation
7881 * cbinding.h|chinding.cpp: regen.
7883 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
7885 * font.h: Changed the glyph cache size to be #defined rather than
7886 hard-coded everywhere.
7888 2009-04-17 Jackson Harper <jackson@ximian.com>
7890 * xaml.cpp: When we are setting the Name property use the same
7891 trick we are using for setting the x:Name property. Grabbing the
7892 parent element and making sure we get registered in that
7893 namescope. This isn't perfect, but should fix 95% of the managed
7896 2009-04-17 Alan McGovern <amcgovern@novell.com>
7899 * type-generated.cpp: Correctly mark Popup.Child as its
7902 2009-04-17 Geoff Norton <gnorton@novell.com>
7904 * media.cpp: Ensure that we invalidate the image if the
7905 BitmapImage has already been parsed (like from a SetSource call)
7907 2009-04-17 Geoff Norton <gnorton@novell.com>
7909 * error.cpp: Image errors use the code 4001, fixes #97
7911 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
7913 * glyphs.cpp (Layout): Don't bail if we have something other than
7914 StyleSimulationsNone.
7916 * enums.h (enum StyleSimulations): Added Bold, Italic, and
7919 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
7921 * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
7922 already unref them upon destruction.
7924 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
7926 * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
7927 of our inlines' fonts have changed - if they all override the font
7928 family, then there's no need to redraw.
7930 2009-04-16 Jackson Harper <jackson@ximian.com>
7932 * dependencyobject.cpp: Unregister the old name when we set an
7935 2009-04-16 Sebastien Pouliot <sebastien@ximian.com>
7937 * openfile.cpp|h: Add a dialog requester to increase isolated
7938 storage quota. Add function to recursively compute the total size
7939 of a directory, which is used to check quota in IS.
7941 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
7943 * deployment.cpp: mono_gc_invoke_finalizers may cause the
7944 current appdomain to change, so restore it afterwards. Fixes
7945 a rare, random crash upon shutdown.
7947 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7949 * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
7950 invalidating the TextBoxBase, we need to emit an event to let the
7951 TextBoxView know our font has changed.
7952 (TextBoxView::OnModelChanged): Reset state on the layout when the
7953 font changes (since it has no way of knowing that the font has
7956 * textblock.cpp (Inline::UpdateFontDescription): Return true if
7957 the font has changed or false otherwise.
7958 (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
7959 return true and reset the state on the TextLayout.
7961 * font.cpp (TextFontDescription::Set*): Return true if the font
7962 has changed or false otherwise.
7964 * layout.cpp (TextLayout::ResetState): New method to reset the
7965 state of a TextLayout. Normally the state only gets reset if a
7966 layout property chanegs, but sometimes it is necessary to notify
7967 the TextLayout engine of a state change in one of the
7968 TextLayoutAttributes.
7970 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7972 * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
7973 xap resource, download it from the web.
7975 * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
7976 resource, download it from the web.
7978 2009-04-15 Larry Ewing <lewing@novell.com>
7980 * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
7983 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
7985 * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
7986 glib until 2.10, so so guard to allow building on systems with
7987 older versions of glib. Also merged BREAK_NEXT_LINE and
7988 BREAK_UNKNOWN into the BREAK_AFTER group.
7990 2009-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
7992 * runtime.cpp: Don't support versions of the type "1.0..0".
7993 Fixes a test case in MS DRT #21.
7995 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
7997 * downloader.cpp (Downloader::Open): fix the argument passed to
8000 2009-04-15 Alan McGovern <amcgovern@novell.com>
8002 * utils.cpp: We need to increment the pointer otherwise we
8005 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
8007 * downloader.cpp (Downloader::Open): make the relative uris relative to
8009 (check_redirection_policy, Downloader::Write): don't use
8010 uri->originalString, but uri->ToString ()
8012 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
8014 * runtime.h|cpp (Surface): xap_location, Get() and Set()
8016 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8018 * layout.cpp (layout_word_wrap): Fixed word-break logic for
8019 ambiguous break-types. Fixes second column of text in test #208.
8021 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8023 * layout.cpp (layout_word_wrap): Fixed word-breaking around a
8024 BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
8026 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
8028 * deepzoomimagetilesource.h: expose IsDownloaded()
8029 * multiscaleimage.cpp: download the tile source for the subimage before
8030 downloading the un-shared tiles.
8032 2009-04-14 Andreia Gaita <avidigal@novell.com>
8034 * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
8035 indicates frame could not be decoded. fixes uninitialized buffer
8036 size leading to huge memory allocation and abort. kudos to
8037 Alp Toker for spotting this.
8039 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8041 * layout.cpp (layout_word_wrap): Added support for Hangul and
8042 ideographic word breaking. Improves test #208 quite a bit.
8044 2009-04-14 Larry Ewing <lewing@novell.com>
8047 * control.cpp (InsideObject): always return fals controls don't
8048 handle the testing. Fixes MSI navigation in
8049 http://playboy.covertocover.com/
8052 * panel.cpp: remove HitTest stubs.
8054 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8056 * layout.cpp (layout_word_wrap): Added logic to for breaking after
8057 more break-types including BREAK_AFTER, BREAK_HYPHEN, and
8058 BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
8059 behavior on test #206.
8061 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8063 * layout.cpp (utf8_strlen): Removed, this has never been sued.
8064 (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
8065 no longer has this wrapping bug.
8066 (layout_word_wrap): Don't need to check if we're at the last word
8067 in the textblock because Silverlight 2.0 fixed this bug.
8068 (FindLastWord): Removed, no longer needed.
8070 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8073 * playlist.cpp: Don't try to open the media if an error has
8076 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8080 * mediaelement.cpp: Check for markers with a timeout instead
8081 of after rendering a frame, this way markers also work with
8084 2009-04-14 Jackson Harper <jackson@ximian.com>
8086 * dependencyobject.cpp|h: Add a return value for SetName with
8087 namescope, returns false if there is an error.
8088 * xaml.cpp: Check the return value of SetName
8090 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
8092 * uri.cpp (Combine): strip leading ../ as we're already cutting the
8093 filename off the base uri
8095 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8113 * timemanager.cpp: Added @GeneratePInvoke to all methods used
8114 in managed code. For C++ methods also generate the
8115 corresponding C method.
8118 * cbinding.cpp: Regenerated.
8120 2009-04-13 Jeffrey Stedfast <fejj@novell.com>
8122 * textblock.cpp (SetFontResource): If we cannot get the resource
8123 from within the xap, then we need to spawn a downloader to fetch
8126 2009-04-13 Geoff Norton <gnorton@novell.com>
8128 * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
8131 2009-04-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
8135 2009-04-12 Jeffrey Stedfast <fejj@novell.com>
8137 * debug.cpp (hexdump_addr): New function to help toshok print a
8138 hexdump of memory from gdb.
8140 * textbox.cpp (TextBoxBase::SetFontResource): Set the font
8141 filename/guid based on the resource provided.
8142 (TextBoxBase::OnPropertyChanged): If a font resource is named in
8143 the FontFamily property, then call SetFontResource() with the
8144 provided resource name.
8145 (TextBox::ClearFontSource): Clear the FontSourceProperty.
8146 (PasswordBox::ClearFontSource): Same.
8148 2009-04-11 Chris Toshok <toshok@ximian.com>
8150 * provider.h|.cpp, dependencyobject.cpp: get rid of
8151 PropertyPrecedence_Animation and the associated provider. in SL,
8152 animations are considered local values (and a choir of angels was
8153 heard moaning as they fell on their swords).
8155 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
8157 * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
8158 FT_Streams and setup their own FT_Open_Args instead. This solves
8159 the crasher problems in the silverlight2 test harness.
8161 * textblock.cpp (Inline::SetFontResource): New method to update
8162 our FontFilenameProperty and FontGUIDProperties.
8163 (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
8164 that reference a resource.
8165 (Inline::UpdateFontDescription): Parse out the family name from
8166 the FontFamily::Source.
8168 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
8170 * textblock.cpp (TextBlock::SetFontResource): Renamed from
8171 SetFontSource() to be more accurate.
8173 * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
8174 fail. This is probably what was causing the crash on
8177 * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
8178 than a string and returns a bool argument hinting at whether we
8180 (OnPropertyChanged): Only fall back on creating a downloader for
8181 the font if the uri is not a resource.
8183 2009-04-11 Jackson Harper <jackson@ximian.com>
8185 * xaml.cpp: If we are hydrating we don't need the extra ref.
8187 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8189 * uri.cpp (ToString): Made to accept const Uri*
8191 * textblock.cpp (SetFontSource): Parse the resource string into a
8192 Uri and pass that along to GetResourceAsPath().
8194 * glyphs.cpp (SetFontResource): Parse the resource string into a
8195 Uri and pass that along to GetResourceAsPath().
8197 * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
8200 * application.cpp (GetResource): Oops, this really does need a Uri
8202 (GetResourceAsPath): Use a Uri here too, and convert any ';' into
8205 2009-04-10 Jackson Harper <jackson@ximian.com>
8207 * xaml.cpp: Let the XamlElementInstances cleanup their Values.
8209 2009-04-10 Chris Toshok <toshok@ximian.com>
8211 * timemanager.cpp (TimeManager::SourceTick): just for kicks
8212 completely rip out the clock smoothing code, and also emit all
8213 tick calls (don't worry about how much time we're taking in them).
8214 Lastly, emit tick calls *before* rendering. we need to do this or
8215 else the Loaded event won't be posted before we draw (when we
8216 delay the loaded event, that is.) which leads to a great many
8217 VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
8218 flag for the initial children z-sorting.
8220 * collection.cpp (VisualTreeWalker::Step): add a special case for
8221 collection::count == index == 1, which is what we end up with on
8222 uielement's with a subobject. it won't be a collection child of a
8223 panel, so it'll never be z-sorted, but since it's only 1 element
8224 it doesn't need to be anyway.
8226 * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
8227 to Panel. Also, move the ZIndex OnCollectionItemChanged code into
8230 * panel.h|.cpp: remove a couple of unused
8231 decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
8234 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8236 * font.cpp (OpenFaceByIndex): New helper function split out from
8237 FontFace::LoadFontFace() which performs the FT_Open_Face() and
8238 family name matching.
8239 (OpenFaceByFamily): If we don't have an index, this function opens
8240 all faces in the file and finds a matching font face based on
8242 (LoadFontFace): Use our new helper functions.
8244 * textblock.cpp (SetFontSource): On fail, set the font filename to
8245 NULL and call UpdateFontDescriptions() no matter what.
8247 * font.cpp (UnsetFields): Allow unsetting of the font index.
8248 (Merge): Merge the index separately.
8249 (SetIndex): Set/unset the FontMaskIndex bit.
8251 * glyphs.cpp (SetFontResource): New internal method to set a font
8253 (OnPropertyChanged): Handle non-absolute Uris as resource streams.
8255 2009-04-10 Larry Ewing <lewing@novell.com>
8257 * multiscaleimage.cpp: add a translucency check before calling
8258 cairo_paint_with_alpha.
8260 2009-04-10 Jeffrey Stedfast <fejj@novell.com>a
8262 * textblock.cpp (SetFontSource): New method for setting a font
8263 source via a resource name.
8264 (OnPropertyChanged): When the FontFamily changes, parse out the
8265 resource name (if it exists) and set that as our font source.
8267 * bitmapimage.cpp (UriSourceChanged): Updated.
8269 * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
8271 * application.cpp (GetResourceAsPath): New helper method to get a
8272 specified resource as a filesystem path.
8273 (GetResource): Now takes a resource name rather than a Uri.
8275 * utils.cpp (CanonicalizeFilename): New function to canonicalize a
8277 (ExtractAll): New helper function to extract all files from a zip
8278 archive into a specified directory.
8280 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8282 * textblock.cpp (CleanupDownloader): New helper method.
8283 (SetFontSource): Use CleanupDownloader() and also clear the
8284 FontSourceProperty since this will override that source.
8285 (OnPropertyChanged): Parse the FontFamily name.
8286 (DownloaderComplete): Use SetValue() correctly.
8288 * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
8291 2009-04-10 Sebastien Pouliot <sebastien@ximian.com>
8293 * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
8294 all coreclr-related code from being compiled.
8296 2009-04-09 Chris Toshok <toshok@ximian.com>
8298 * uielement.cpp (UIElement::WalkTreeForLoaded): be more
8299 descriptive with the "attempting to use a null application" thing.
8301 * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
8302 that were missing. we need to make this less fragile, and have it
8303 use the event strings in type-generated.cpp.
8304 (end_element_handler): add more text to the line about attempting
8305 to use a null application, so we can differentiate it from the
8308 * timeline.h (class Timeline): BeginTime has, in fact, a default
8311 * dependencyproperty.g.cpp: regen.
8313 2009-04-09 Jeffrey Stedfast <fejj@novell.com>
8315 * textblock.h, textbox.h: Added FontSourceProperty.
8317 * value.cpp|h: Added FontSource support.
8319 * fontsource.h: Added.
8321 2009-04-09 Sebastien Pouliot <sebastien@ximian.com>
8323 * cbinding.cpp|h: regenerated
8324 * openfile.cpp|h: Add save_file_dialog_show to implement
8325 SaveFileDialog (SL3) and refactor the filter code to be shared.
8326 * runtime.cpp|h: Rename can_full_screen to user_initiated_event
8327 since we need it for SaveFileDialog (and elsewhere too). Rename
8328 setter and add a getter with a c binding.
8330 2009-04-09 Jackson Harper <jackson@ximian.com>
8332 * xaml.cpp|h: We need to create Value*'s from strings/files now
8333 instead of just creating dependencyobjects, it's legal to create a
8334 managed object from xaml that isn't a DOB.
8335 - Add a couple utility methods for creating just DOBs from
8337 * cbinding.cpp: regen
8340 * runtime.cpp: Updated method names
8342 2009-04-08 Geoff Norton <gnorton@novell.com>
8344 * downloader.cpp: Ensure that when someone subscribes to NotifySize
8345 they actually will get notified of the size.
8347 2009-04-08 Geoff Norton <gnorton@novell.com>
8349 * glyphs.cpp: Ensure we dont pass an unitialized pointer to
8350 TextFontDescription::SetFilename
8352 2009-04-08 Andreia Gaita <avidigal@novell.com>
8354 * dependencyobject.cpp: enable toggleref
8355 conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
8357 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
8359 * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
8360 isn't a .odttf file.
8362 2009-04-08 Geoff Norton <gnorton@novell.com>
8364 * pipeline.cpp: Ensure we dont try to decode if our stream has been
8367 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
8369 * downloader.cpp (validate_policy): Don't delete source here, we
8372 * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
8373 the file extension is .odttf. Also no need to stat() anymore.
8375 * textblock.cpp (DownloaderComplete): Same.
8377 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
8379 * provider.cpp (InheritedPropertyValueProvider): We need to
8380 inherit FontGUIDProperty for Inlines as well.
8382 * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
8383 deobfuscation features.
8385 * glyphs.cpp (DownloaderCompleted): Don't need to call
8386 downloader_deobfuscate_font() anymore. We only need to get the
8387 GUID to set on the FontDescription.
8389 * textblock.cpp (DownloaderCompleted): Same.
8391 * font.cpp: Implemented our own FT_Stream that can handle reading
8392 obfuscated fonts directly without the need to rewrite the file
8394 (TextFontDescription): Now has a GUID property for Glyphs and
8397 * downloader.cpp: Fixed to autogenerate the accessors and changed
8398 the UriProperty type to a Uri to be consistent with other classes.
8399 (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
8401 2009-04-08 Geoff Norton <gnorton@novell.com>
8403 * deployment.cpp: Ensure that we restore to the current MonoDomain
8404 after creating a new deployment.
8406 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
8408 * multiscaleimage.h|cpp: Set IsDownloading property according to the
8409 status of the downloaders
8411 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
8413 * multiscaleimage.cpp (MultiScaleImage::RenderSingle,
8414 MultiScaleImage::RenderCollection): do not start any new download if
8415 AllowDownlodingProperty is false.
8417 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
8419 * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
8421 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
8423 * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
8426 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
8428 * multiscaleimage.cpp: some additional debug info printing the state of
8431 2009-04-07 Chris Toshok <toshok@ximian.com>
8433 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8434 almost had it that last time. In the case where the parent has
8435 that property, use GetValue on it instead of ReadLocalValue, which
8436 won't pick up styles.
8438 2009-04-07 Chris Toshok <toshok@ximian.com>
8440 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8441 rewrite this substantially to make it work correctly and be more
8442 efficient. we no longer look up the hierarchy for properties
8443 which aren't inheritable, and we only loop up the visual tree, not
8444 the logical one (since that has issues when it comes to
8446 (get_parent): nuke, it was a broken way to deal with parents.
8448 2009-04-07 Chris Toshok <toshok@ximian.com>
8450 * uielement.h|.cpp (class UIElement): scrap that ill-advised
8451 AutoCreator crap. it's much simpler. the default is actually
8452 NULL, and the managed layer does the stupid mapping from NULL to
8453 new MatrixTransform.
8455 2009-04-07 Chris Toshok <toshok@ximian.com>
8457 * uielement.h|.cpp (class UIElement): use an AutoCreator for
8458 RenderTransformProperty.
8460 * dependencyproperty.g.cpp: regen.
8462 2009-04-07 Larry Ewing <lewing@novell.com>
8464 * grid.cpp (MeasureOverride): use the star fraction of the
8465 available size when measuring.
8467 * border.cpp: restrict the return value to available size.
8469 2009-04-07 Geoff Norton <gnorton@novell.com>
8471 * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
8472 to the media thread from any thread. Fixes seeking on SmoothHD
8475 2009-04-07 Geoff Norton <gnorton@novell.com>
8477 * bitmapimage.cpp|h: Ensure we stop getting events from any
8478 active downloaders once we're disposed.
8479 * brush.cpp|h: Ensure we stop getting events from any
8480 active BitmapImages once we're disposed.
8482 2009-04-07 Jeffrey Stedfast <fejj@novell.com>
8484 * glyphs.cpp (CleanupDownloader): New helper method.
8485 (DownloadFont): Don't delete the uri after we're done, we do not
8487 (OnPropertyChanged): Use Uri::IsNullOrEmpty().
8489 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
8491 * runtime.cpp: layers is an EventObject, unref instead of
8494 * collection.h: Have a protected dtor so that nobody can
8495 delete this class directly ever again.
8497 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
8499 * runtime.cpp: Add a few null checks.
8501 2009-04-07 Stephane Delcroix <sdelcroix@novell.com>
8503 * application.cpp: uri->ToString() allocates memory, free it after
8506 2009-04-06 Chris Toshok <toshok@ximian.com>
8508 * runtime.cpp|.h (Surface::Attach): split this method effectively
8509 in half: stuff we do before the loaded events are fired, and stuff
8510 we do after. The second half is in Surface::ToplevelLoaded. This
8511 fixes playboy.covertocover.com coming up, as the alert that
8512 vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
8513 to screw with our async events.
8515 2009-04-06 Chris Toshok <toshok@ximian.com>
8517 * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
8518 flesh this method out some. I don't like the walks we have to do
8519 here. Also, rename this to *WithError so we can report the error
8520 back to managed land from here instead of doing it in C#.
8522 * cbinding.cpp|.h: regen.
8524 2009-04-06 Chris Toshok <toshok@ximian.com>
8526 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
8527 in case we didn't notify listeners, output the moon error if there
8530 2009-04-06 Chris Toshok <toshok@ximian.com>
8532 * xaml.cpp (value_from_str): quiet spew (which in this case
8533 indicates an error when there isn't one.)
8535 2009-04-06 Chris Toshok <toshok@ximian.com>
8537 * brush.h: include imagesource.h, not bitmapimage.h
8539 * brush.cpp: include bitmapimage.h here.
8541 2009-04-06 Geoff Norton <gnorton@novell.com>
8543 * bitmapimage.cpp: Stop leaking the resource here.
8545 2009-04-06 Geoff Norton <gnorton@novell.com>
8547 * codec-version.h.in: Bump
8549 2009-04-06 Geoff Norton <gnorton@novell.com>
8551 * application.cpp: We want ToString here, not just the path of the
8553 * bitmapimage.cpp|h: We need to do this async, since the events
8554 might be registered in managed code before a yield.
8556 2009-04-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
8558 * security.c: Add jtr.dll to the list of platform assemblies,
8559 it's an assembly used by managed tests which contains unsafe
8560 code and pinvoke methods.
8562 2009-04-06 Stephane Delcroix <sdelcroix@novell.com>
8564 * multiscaleimage.h: ad the 3.0 DPs and property accessors
8566 2009-04-05 Chris Toshok <toshok@ximian.com>
8568 * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
8569 managed subclasses can register a delegate.
8571 * cbinding.cpp|.h: regen.
8573 2009-04-04 Geoff Norton <gnorton@novell.com>
8575 * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
8577 2009-04-04 Geoff Norton <gnorton@novell.com>
8579 * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
8581 2009-04-04 Geoff Norton <gnorton@novell.com>
8583 * media.h: Removed unused define
8584 * mediaplayer.cpp|h: We need to support RGBA video formats now, so
8585 lets track what the decoder is giving us (pass-thru is the only decoder
8586 which will provide RGBA from MSS, we still pass around yuv and rgb
8587 internally). If the format is RGBA we have to incur a one-frame penalty
8588 to recreate our cairo surfaces.
8589 * pipeline.cpp|h: Support RGBA pixel formats. Don't support RGB from
8590 MediaStreamSource. Mark the pass-thru frames as decoded.
8592 2009-04-04 Chris Toshok <toshok@ximian.com>
8594 * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
8596 * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
8597 cbinding.h|.cpp: regen.
8599 2009-04-03 Chris Toshok <toshok@ximian.com>
8601 * animation.h: add EasingFunctionProperty to
8602 Color/Double/PointAnimation.
8604 * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
8605 easing function, apply it to progress.
8606 (ColorAnimation::GetCurrentValue): if there's an easing function,
8607 apply it to progress.
8608 (PointAnimation::GetCurrentValue): if there's an easing function,
8609 apply it to progress.
8611 * easing.h, easing.cpp: implementations of all the easing
8612 functions. still missing are BounceEase and ElasticEase.
8614 * enums.h, enums.cpp (enum EasingMode): new enum.
8616 * Makefile.am: add easing.h/easing.cpp
8618 * type.h, type-generated.cpp, cbinding.h|.cpp,
8619 dependencyproperty.g.cpp, value.h: regen.
8621 2009-04-03 Geoff Norton <gnorton@novell.com>
8623 * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
8624 which renders garbage on the screen on amd64.
8626 2009-04-03 Aaron Bockover <abockover@novell.com>
8630 * dependencyproperty.g.cpp:
8631 * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
8632 by Moonlight.Gtk.XamlHost
8634 2009-04-03 Larry Ewing <lewing@novell.com>
8637 * popup.cpp: Make sure that we hide any active layers when Child
8638 changes and that we show any new ones. Fixes part of
8639 PopupExample2. Give IsOpen a default value.
8643 2009-04-03 Chris Toshok <toshok@ximian.com>
8645 * animation.h: remove a couple of ancient (and unused) method and
8646 function declarations, and re-order
8647 public/private/protected (seriously, this makes my eyes bleed.)
8648 Also move the "internal classes" to the end.
8650 2009-04-03 Chris Toshok <toshok@ximian.com>
8652 * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
8653 since that's for compatability with 1.0, which we no longer are.
8655 2009-04-03 Alan McGovern <amcgovern@novell.com>
8657 * textbox.h: TextBox does validation in both the getter and
8658 setter of its TextProperty, so we have to manually implement
8661 2009-04-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
8663 * security.c: Include "config.h" to get
8664 MONO_ENABLE_CORECLR_SECURITY.
8666 2009-04-02 Aaron Bockover <abockover@novell.com>
8668 Do not build code that requires Mono 2.5 or better in the case where
8669 we want Moonlight to run only in an embedded desktop app scenario; in
8670 this case, CoreCLR security and non-default app domains are not needed
8672 * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
8673 is not defined, this function is now a noop
8675 * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
8676 not implement app domain loading/unloading; factor out all common init
8677 code that was duplicated in both ctors into InnerConstructor
8679 * deployment.h: Define InnerConstructor
8681 2009-04-02 Larry Ewing <lewing@novell.com>
8684 * uielement.cpp: move the bulk of the paint ftb logic from surface
8685 to here since we will be using this in more places. Make some of
8686 the ftb logic protected now.
8689 * writeablebitmap.h:
8690 * writeablebitmap.cpp: Land Geoff's initial Render implementation
8695 2009-04-02 Larry Ewing <lewing@novell.com>
8699 * runtime.cpp: Treat full_screen_message as another layer. Make
8700 sure that we mark layers as loaded. Popups should render now.
8702 2009-04-02 Alan McGovern <amcgovern@novell.com>
8704 * runtime.cpp: the real toplevel element must always be at
8705 position 0 in the layers list. Fixes the situation where we
8706 open a popup before setting attaching the surface.
8708 2009-04-02 Stephane Delcroix <sdelcroix@novell.com>
8710 * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
8711 linear animation, animate for 4 secs instead of .4, use steep spline
8712 to start fast finish smoothly. For botn panning and zooming.
8714 2009-04-02 Alan McGovern <amcgovern@novell.com>
8718 * dependencyproperty.g.cpp: The Child property has similar
8719 validation to a ContentControl. Fixes three tests.
8721 2009-04-02 Alan McGovern <amcgovern@novell.com>
8730 * dependencyproperty.g.cpp: Popups are treated as top level
8731 elements which are rendered on top of all other elements. To
8732 handle this a list of all toplevel elements (layers) is kept
8733 in the surface. Mouse events are captured within a toplevel
8734 element and not visible to other toplevel elements.
8736 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8738 * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
8739 not to the center of the control
8741 2009-04-01 Andreia Gaita <avidigal@novell.com>
8743 * window-gtk.cpp: Only connect the scroll-event signal if we're
8744 not running on the desktop (otherwise, gecko won't get the
8747 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8749 * uri.h: no longer expose GetOriginalString(), it leads to buggy
8752 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8756 * deepzoomimagetilesource.cpp: g_free the memory allocated by
8759 2009-04-01 Chris Toshok <toshok@ximian.com>
8761 * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
8762 the (desktop extension -ized) button check here. this wouldn't be
8763 necessary if the plugin could insert its signal handler before the
8764 window's, but alas, gtk...
8766 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8768 * application.cpp (GetResource): use the uri path, not
8771 2009-04-01 Jeffrey Stedfast <fejj@novell.com>
8773 * expression.cpp|h: Removed from the build.
8774 not running on the desktop (otherwise, gecko won't get the
8777 2009-04-01 Chris Toshok <toshok@ximian.com>
8779 * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
8780 extensions are turned on, allow button 3 (right mouse).
8781 (Surface::HandleUIButtonPress): same.
8783 * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
8784 non-button 1 presses here.
8786 2009-04-01 Chris Toshok <toshok@ximian.com>
8788 * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
8789 sign here so we have the same behavior that lutz's demo expects
8792 2009-04-01 Geoff Norton <gnorton@novell.com>
8794 * uri.cpp|h: Add IsNullOrEmpty
8795 * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
8797 2009-04-01 Geoff Norton <gnorton@novell.com>
8799 * bitmapimage.cpp: Ensure we deregister the events too.
8801 2009-04-01 Geoff Norton <gnorton@novell.com>
8803 * bitmapimage.cpp: If the UriSource is changed, then we should abort
8804 and clean up any existing downloaders.
8806 2009-04-01 Geoff Norton <gnorton@novell.com>
8808 * brush.cpp: ImageSource is a nullable property so we need to new
8809 one up here if we dont have one already.
8811 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8813 * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
8814 and creating cairo surfaces.
8816 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
8818 * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
8821 2009-04-01 Chris Toshok <toshok@ximian.com>
8823 * uielement.h (class UIElement): add
8824 MouseRightButton{Down,Up}Event and MouseWheelEvent.
8826 * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
8828 (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
8830 * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
8832 * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
8834 (MoonWindowGtk::EnableEvents): connect the scroll-event.
8835 (MoonWindowGtk::InitializeCommon): if desktop extensions are
8836 enabled, add GDK_SCROLL_MASK.
8838 * xaml.cpp (xaml_is_valid_event_name): if we're running with
8839 desktop extensions, expose the right button events and mouse
8842 * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
8844 2009-03-31 Jeffrey Stedfast <fejj@novell.com>
8846 * enums.h: Well what do ya know... TextWrapping enum wasn't the
8847 same as the TextWrapping.cs enum, this is likely the case of some
8848 text layout wonkyness.
8850 * textblock.cpp (TextBlock::MeasureOverride): Set the
8851 ActualWidth/Height DP values here after calling Layout(), this
8852 seems to be what Silverlight does (can't be set in FWE::Measure()
8853 because it doesn't have the actual extents, it just has the
8854 desiredSize). Also don't reset dirty back to true after laying out
8856 (TextBlock::Layout): Restructured slightly.
8858 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8860 * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
8861 originalstrings aren't updated on Uri::Combine ().
8863 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8865 * bitmapimage.h: Set a DefaultValue for ProgressProperty
8867 2009-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
8869 * src.mdp: Updated some project files.
8871 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8873 * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages
8876 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
8878 * multiscaleimage.h|.cpp: remove the AddTickCall workaround for
8879 the race while emitting ImageOpenSucceded. Test if the source is
8880 a deepzoom before casting (avoid g_warnings on the console). Change a
8883 2009-03-30 Chris Toshok <toshok@ximian.com>
8885 * timemanager.cpp|.h: split this out from clock.cpp|.h
8887 * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
8888 libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
8889 timeline.cpp, uielement.cpp: track the above change.
8891 * Makefile.am: add timemanager.cpp|.h
8893 * cbinding.h, type-generated.cpp: regen
8895 2009-03-30 Geoff Norton <gnorton@novell.com>
8897 * bitmapsource.cpp: When caching a native surface ensure we dont
8898 destroy it on every GetSurface pass, but we do clean it up in
8901 2009-03-30 Chris Toshok <toshok@ximian.com>
8903 * application.h, border.h, contentcontrol.h, control.h,
8904 cornerradius.h, deployment.h, expression.h, frameworkelement.h,
8905 grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
8906 transform.h, type.h, usercontrol.h: remove @SilverlightVersion
8907 metadata attributes.
8910 2009-03-30 Chris Toshok <toshok@ximian.com>
8912 * downloader.h: add pinvokes for a few of the downloader_* C
8915 * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
8916 AddTickCall, and remove the manual implementation.
8918 * dependencyobject.h (class EventObject): add a PInvoke for
8919 event_object_get_surface.
8921 * cbinding.h, cbinding.cpp: regen
8923 2009-03-30 Sebastien Pouliot <sebastien@ximian.com>
8925 * security.c: Ensure mono_assembly_setrootdir is always called
8926 while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
8927 variable and the availability of a platform directory.
8929 2009-03-30 Geoff Norton <gnorton@novell.com>
8931 * brush.h: Brush.ImageSource is stupid, and of course not consistent
8933 * bitmapimage.cpp: Nuke some debug spew.
8934 * dependencyproperty.g.cpp: Funky cold medina.
8936 2009-03-30 Larry Ewing <lewing@novell.com>
8938 * brush.cpp (OnPropertyChanged): check for the right property and
8939 fixup a harmless typo.
8941 * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
8943 2009-03-30 Jeffrey Stedfast <fejj@novell.com>
8945 * font.cpp (FontFace::GetExtents): Instead of calculating our
8946 ascent/descent and height values from 2 different ways, calculate
8947 ascent/descent the same way we calculated height. This seems to
8948 give slightly more accurate results (previous logic rounded up to
8949 the nearest whole pixel for ascent/descent).
8951 2009-03-30 Geoff Norton <gnorton@novell.com>
8953 * media.h: Hide some API that never should have been public.
8954 * media.cpp: ImageBrush no longer uses a image internally.
8955 * bitmapimage.cpp|h: Part name is a const char * since we dup
8957 * brush.cpp|h: Migrate away from using a Image internally
8958 and consume the new BitmapImage API.
8960 2009-03-30 Geoff Norton <gnorton@novell.com>
8962 * bitmapimage.cpp: Ensure we fall back to downloading if we
8963 cannot find the image as a resource.
8965 2009-03-30 Chris Toshok <toshok@ximian.com>
8967 * deployment.h|.cpp: combing the desktop and browser cases (the
8968 desktop case coming from jeff's patch) into one method, where the
8969 different root_domain behavior is determined by the boolean
8972 * runtime.cpp (runtime_init): pass an initial boolean to
8973 Deployment::Initialize to tell whether or not we should create the
8974 root domain (i.e. whether or not we should initialize mono.)
8975 (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
8977 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
8979 * security.c: Revert latest fix, the buildbots aren't ready
8982 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
8984 * security.c: Always call mono_assembly_setrootdir, even if
8985 CoreCLR is disabled. This should fix buildbots where
8986 mono/mcs and moonlight are installed into different
8989 2009-03-30 Geoff Norton <gnorton@novell.com>
8991 * media.cpp: Stop leaking a cairo pattern in Image::Render
8993 2009-03-30 Stephane Delcroix <sdelcroix@novell.com>
8995 * deepzoomimagetilesource.cpp: revert latest change, don't advance
8996 twice. Fixes collections.
8998 2009-03-29 Chris Toshok <toshok@ximian.com>
9000 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9001 add a sanity check here to make sure the autocreated value is of a
9004 * animation.h|.cpp: remove the /*Timeline*/ comments from
9005 everywhere -- stop pretending the type names are the same as WPF.
9007 2009-03-29 Geoff Norton <gnorton@novell.com>
9009 * media.cpp: Ensure that the ImageSource we get is a BitmapImage
9010 before treating it as such.
9012 2009-03-29 Geoff Norton <gnorton@novell.com>
9014 * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
9015 writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
9016 imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
9017 Update the image based source to have a properly implemented
9018 BitmapImage. I've also moved all this code to the SL3 API which
9019 injects a BitmapSource in between ImageSource and BitmapImage,
9020 and adds support for WriteableBitmap.
9022 Basically now all the cairo logic lives in ImageSource and
9023 BitmapSource. All the pixbuf loader logics and downloader logic
9024 is isolated in BitmapImage.
9026 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
9027 type.h, value.h: Regenerate
9029 2009-03-29 Chris Toshok <toshok@ximian.com>
9031 * provider.h, provider.cpp, dependencyproperty.h: change
9032 AutoCreator signature to take the DependencyObject as the first
9035 2009-03-29 Chris Toshok <toshok@ximian.com>
9037 * dependencyproperty.h|.cpp: rework the autocreate functionality.
9038 instead of a boolean flag, we pass a function pointer. We keep
9039 IsAutoCreated() around (just func != NULL) and add
9040 GetAutoCreator() so the AutoCreateProvider can call the method
9041 when it needs a value.
9043 Also, remove the empty ctor since it doesn't initialize any
9044 fields (and it also isn't called.)
9046 * provider.h (class AutoCreators): new class, containing the
9047 default autocreator which just calls type->CreateInstance().
9049 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9050 call the property's AutoCreator function if there is one.
9051 (AutoCreators::default_autocreator): new function for the default
9052 case. basically some code that was ripped out of
9055 * dependencyproperty.g.cpp: regen.
9057 2009-03-29 Chris Toshok <toshok@ximian.com>
9059 * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
9060 tree in OnLoaded, don't do anything at all if we're already
9063 2009-03-29 Chris Toshok <toshok@ximian.com>
9065 * eventargs.h: consistenfy everything, and make
9066 CollectionChangedEventArgs fields private, not public. add
9069 * dependencyobject.h (PropertyChangedEventArgs): make
9070 old_value/new_value private and add accessors.
9072 * *.cpp|.h: track the above changes.
9074 2009-03-29 Chris Toshok <toshok@ximian.com>
9076 * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
9078 * dependencyobject.cpp:, provider.cpp: track above change.
9080 2009-03-28 Sebastien Pouliot <sebastien@ximian.com>
9082 * deployment.cpp|h (Initialize): If a platform directory is
9083 specified then we initialize the CoreCLR security model.
9084 * runtime.cpp|h: Initialize the runtime using the plugin
9085 directory (when applicable, i.e. browser mode).
9086 * security.c|h: New. Handle the CoreCLR security model
9087 initialization and platform code detection.
9088 * Makefile.am: Add security.[c|h] to the build
9090 2009-03-28 Jeffrey Stedfast <fejj@novell.com>
9092 * frameworkelement.cpp (OnPropertyChanged): Instead of setting
9093 ActualWidth/Height to 0 in the non-LayoutContainer case, use
9094 ClearValue() those properties instead. Fixes some TextBlock cases.
9096 * textblock.cpp (GetSize): Check isnan() rather than 0.
9097 (Render): The dirty flag should never be set at this point, so
9098 don't bother with it. Set TextLayout's AvailableWidth to our
9100 (ArrangeOverride): Don't set dirty back to true after we've
9101 arranged, this is why dirty was true in ::Render()
9103 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9105 * textblock.cpp (Layout): Fixed the special-case logic. If no text
9106 has ever been set, then the extents should be 0,0. However, if
9107 they have ever been set but the text is currently empty, then use
9108 the font height as the ActualHeight value. Use a state variable to
9109 check if the text has ever been set rather than trying to check
9110 other things which are not reliable.
9112 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9114 * size.h (Size::GrowBy): If the width or height are infinite going
9115 in, then leave them infinite going out.
9117 * textblock.cpp (TextBlock::GetSize): New method to get the
9119 (TextBlock::Render): Use GetSize() instead of GetRenderSize().
9120 (class TextBlockDynamicPropertyValueProvider): Same.
9122 2009-03-27 Chris Toshok <toshok@ximian.com>
9124 * uielement.h (class UIElement): add LostMouseCaptureEvent.
9126 * type-generated.cpp: regen.
9128 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9130 * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
9131 subimage collection items changed.
9133 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9135 * multiscalesubimage.h|.cpp:
9136 * multiscaleimage.cpp: remove the link to msi parents and don't try to
9137 Invalidate from subimage.
9139 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9141 * collection.cpp: do not use generated cbinding in
9142 MultiScaleSubImageZIndexComparer.
9144 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9146 * multiscalesubimage.h: set a default ZIndex value
9148 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9150 * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
9151 update the TextLayout's text and attributes.
9152 (TextBlock::OnPropertyChanged): If the Text or Inlines properties
9153 change, immediately call UpdateLayoutAttributes().
9154 (TextBlock::Layout): No longer sets up the TextLayout's attributes
9155 as this is already done. Also no longer takes a cairo_t argument
9156 since it's never used, instead it now takes a Size constraint
9158 (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
9159 (TextBlock::MeasureOverride): Rewritten / simplified.
9160 (TextBlock::ArrangeOverride): Same.
9161 (class TextBlockDynamicPropertyValueProvider): Updated.
9162 (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
9163 on the Inline that changed.
9164 (TextBlock::UpdateFontDescriptions): New method to update the font
9165 descriptions on all inlines.
9166 (TextBlock::OnPropertyChanged): Update the font descriptions on
9167 all inlines whenever a font property changes.
9168 (TextBlock::SetFontSource): Call UpdateFontDescriptions().
9169 (TextBlock::DownloaderComplete): Same.
9171 * textbox.cpp (TextBoxView::Render): Set the layout's
9172 AvailableWidth to the render size width.
9173 (TextBoxView::Layout): Don't worry about constraint.width being
9174 INFINITY anymore, TextLayout() now handles INFINITY.
9176 * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
9177 and max width/height constraints, use NAN and
9178 INFINITY (respectively). This will prevent TextBox/Block from
9179 having to use hacks if their width/height constraints are
9181 (TextLayout::HorizontalAlignment): Since MaxWidth might be
9182 INFINITY, we need to base this on a new property called
9183 AvailableWidth, which is the width available for rendering (where
9184 MaxWidth is only used for wrapping).
9186 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9188 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9189 After finding the baseUri's filename, advance beyond the / before
9190 passing it to uri->Combine().
9192 * uri.cpp (Uri::Combine): If the uri has no path and the
9193 relative_path does not begin with a /, don't prepend one.
9195 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9197 General cleanup of the TextBoxBase abstraction.
9199 * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
9201 (PasswordBox::SyncDisplayText): Generate a masked password string
9202 using the specified PasswordChar.
9203 (PasswordBox::SyncText): Call SyncDisplayText ().
9204 (PasswordBox::OnPropertyChanged): When the PasswordProperty
9205 changes, call SyncDisplayText().
9206 (PasswordBox::GetDisplayText): Override TextBoxBase's to return
9207 our masked password string.
9208 (PasswordBox::ctor): Initialize display text
9209 (PasswordBox::dtor): Delete display text.
9210 (TextBox::GetDisplayText): Simply return GetText ()
9212 2009-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
9214 * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
9217 2009-03-27 Jackson Harper <jackson@ximian.com>
9219 * xaml.cpp: Despite the docs saying differently
9220 (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
9221 sys:Boolean is also legal. (I wonder what else is).
9223 2009-03-27 Jackson Harper <jackson@ximian.com>
9225 * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
9227 - When we are populating the context resource dictionaries we need
9228 to include elements that are resource dictionaries not just
9229 elements have have dictionaries. This fixes elements looking up
9230 items in their top level RD (like in generic xaml).
9232 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9234 * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
9235 '/', are relative uris.
9237 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9239 * multiscaleimage.cpp: if a tile is already being downloaded, don't
9240 start a 2nd downloader for the same uri.
9242 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9244 * deepzoomimagetilesource.cpp: Uris composed of a single file name
9245 are fine too. don't discriminate !
9247 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9249 * uri.cpp: fix Combine when the original path is a single file,
9250 without a leading '/'
9252 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9254 * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
9255 the overloaded ctor now that we have a proper Uri struct
9257 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9259 * uri.h, uri.cpp: add Combine (const Uri*).
9261 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9263 * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
9265 2009-03-26 Chris Toshok <toshok@ximian.com>
9267 * deployment.h|.cpp: be a little more fragile (and a lot less
9268 evil) about the way we're exposing Mono types in our headers.
9269 just put a typedef for MonoDomain in deployment.h instead of
9270 including appdomain.h. Include appdomain.h from deployment.cpp.
9272 2009-03-26 Chris Toshok <toshok@ximian.com>
9274 * uielement.h|.cpp (class UIElement): add the ability to do
9275 instant and delayed emission of Loaded events.
9276 (UIElement::PostSubtreeLoad): perhaps poorly named, but the
9277 @load_list is a list of UIElement which will be walked in order in
9278 a tick call, emitting OnLoaded on all of them.
9279 (UIElement::EmitSyncLoaded): walk the same list as would be passed
9280 to PostSubtreeLoad, emitting it now.
9281 (UIElement::WalkTreeForLoaded): this does a post-order tree walk
9282 building up the list which is passed to PostSubtreeLoad or
9283 EmitSubtreeLoad. The out bool parameter tells us whether we
9284 should delay the emission or not. Currently the only thing that
9285 delays emission is a control with a style applied (even a default
9286 style.) We also set a PENDING_LOADED flag on all elements during
9288 (UIElement::OnLoaded): no longer walk the tree here. only emit
9289 Loaded on this one element. Clear the PENDING_LOADED flag while
9291 (UIElement::ElementAdded): complicate matters slightly here so
9292 that it follows the following two rules:
9294 1) if @this is loaded, walk the tree and either emit or post the
9295 load based on what the out param tells us to do.
9297 2) if @this is pending_loaded, walk the tree and always post.
9299 * frameworkelement.h (class FrameworkElement): unfortunately we
9300 need access to "default_style_applied" from UIElement.
9302 * control.h|.cpp: remove OnLoaded implementation from here.
9304 * runtime.cpp (Surface::Attach): move the Loaded handling *after*
9305 the zombie check. not sure why we were ever doing it before. but
9306 most importantly, this always Posts the loaded state, it doesn't
9307 emit it synchronously. This allows us to do the changes in
9308 Application.cs/Deployment.cs that are needed to get ncaa working.
9310 2009-03-26 Chris Toshok <toshok@ximian.com>
9312 * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
9313 out the code that allows other events to be used. Maybe in SL3
9316 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9318 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9319 from a new TextBoxBase class which handles almost all of the logic
9322 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9324 * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
9326 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9328 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9329 from a new TextBoxBase class which handles almost all of the logic
9332 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9334 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9335 Use the new Uri::Combine() method.
9337 * uri.cpp (Uri::Combine): New method to combine a relative path to
9340 2009-03-26 Chris Toshok <toshok@ximian.com>
9342 * animation.cpp, clock.cpp: move some class-static fields around
9343 so they make more sense.
9345 2009-03-26 Chris Toshok <toshok@ximian.com>
9347 * clock.h: move enum FillBehavior...
9349 * enums.h: ... to here.
9351 2009-03-26 Chris Toshok <toshok@ximian.com>
9353 * animation2.h: nuke, moving everything into animation.h.
9355 * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
9356 the timesource/timeline stuff into separate files to reduce
9357 clock.cpp's size/complexity a bit.
9359 * mediaplayer.cpp, mediaelement.cpp, media.cpp,
9360 mms-downloader.cpp: track new locations of things (that were moved
9361 out of clock.h|.cpp)
9363 * cbinding.h, cbinding.cpp, type-generate.cpp,
9364 dependencyproperty.g.cpp: regen.
9366 * Makefile.am: add/remove files.
9368 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9370 * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
9371 with an aspect_ratio < 1.0 (portrait images).
9373 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9375 * multiscaleimage.h|.cpp: replace the single downloader code by
9376 a list of downloader, speed up downloading a lot. (Set --arbitrary--
9377 to 6 dlders for now)
9379 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9381 * multiscaleimage.h|.cpp: Download directly from Render*
9383 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9385 * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
9386 as cache key, use the new get_image_uri_func everywhere.
9388 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9391 * deepzoomimagetilesource.h|.cpp: change the signature of
9392 get_image_uri_func. It returns a bool indicating success, the Uri is
9393 now a method arg, and no longer returned as a string pointer. Fixes
9394 some random crashes with managed tilesoources.
9396 2009-03-25 Chris Toshok <toshok@ximian.com>
9398 * uri.h (struct Uri): add accessor methods for all of the fields.
9399 The fields are still public for now, since a few places (e.g.,
9400 plugin-debug, playlist), make direct modifications.
9402 * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
9403 glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
9404 accessors when getting values.
9406 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
9408 * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
9411 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
9413 * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
9414 argument to enums_int_to_str() anymore.
9416 * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
9417 no longer exists, don't bother checking it. If the target is other
9418 than the Loaded event, we need to treat the whole thing as
9419 Silverlight2 anyway.
9421 * runtime.cpp (Surface::Surface): No longer takes a silverlight2
9422 argument or keeps such a flag.
9423 (Surface::EmitEventOnList): Don't need to care about the
9425 (Surface::HandleUIKeyPress): Same.
9426 (Surface::HandleUIKeyRelease): Here too.
9428 * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
9429 (enums_int_to_str): Same.
9431 * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
9433 (value_from_str): Same.
9434 (convert_value_type): Same.
9435 (xaml_set_property_from_str): Same.
9437 2009-03-25 Geoff Norton <gnorton@novell.com>
9444 * frameworkelement.cpp:
9445 * frameworkelement.h:
9446 * type-generated.cpp:
9449 * xaml.cpp: Bindings live 100% in managed land now
9451 2009-03-25 Alan McGovern <amcgovern@novell.com>
9453 * animation.cpp: Revert the changes in r130133 as they
9454 resulted in double frees of the Value *.
9456 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
9458 * value.cpp (Value::FreeValue): Don't dereference uri if it is
9461 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
9463 * multiscaleimage.cpp: emit ViewportChanged
9465 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
9467 * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
9469 2009-03-25 Jackson Harper <jackson@ximian.com>
9471 * xaml.cpp: Can put this back now that bindings are convertering
9472 strings properly. Don't try to create a value object if we are
9473 just going into managed anyways.
9475 2009-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
9478 * runtime.cpp: Move IsVersionSupported implementation here,
9479 add GetBackgroundColor and sprinkle generator annotations.
9482 * cbinding.cpp: Regenerated.
9484 2009-03-25 Alan McGovern <amcgovern@novell.com>
9486 * uri.cpp: Scheme was being used uninitialised if the if
9487 (!*start) check succeeded.
9489 2009-03-24 Chris Toshok <toshok@ximian.com>
9491 * playlist.cpp (PlaylistParser::OnASXStartElement): use
9493 (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
9495 * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
9496 *scheme)" so we can stop twiddling internals.
9498 2009-03-24 Chris Toshok <toshok@ximian.com>
9500 * downloader.cpp: s/protocol/scheme for Uris
9502 * playlist.cpp: s/protocol/scheme for Uris
9504 * uri.h, uri.cpp: s/protocol/scheme for Uris.
9506 2009-03-24 Chris Toshok <toshok@ximian.com>
9508 * uri.cpp: do as much as we can to get isAbsolute set correctly.
9510 2009-03-25 Andreia Gaita <avidigal@novell.com>
9512 * clock.h: remove unused timeline field
9514 2009-03-25 Andreia Gaita <avidigal@novell.com>
9516 * clock.cpp: Refresh the clock's duration, it might have changed
9519 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
9521 * value.cpp (Value::Value): If the input value has a NULL uri,
9522 don't call Uri::Copy(), simply set the new uri to NULL too.
9524 * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
9525 members in the 'to' argument. This should never happen anymore,
9526 but if it does, don't allow 'to' to have invalid pointers.
9528 2009-03-24 Jackson Harper <jackson@ximian.com>
9530 * xaml.cpp: Need to make this a little smarter, revert for now
9531 because it breaks hardrock.
9533 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
9535 * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
9536 actual_height extents if the text is "".
9538 * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
9539 set NULL text on the layout so that we won't crash inside
9540 TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
9542 2009-03-24 Jackson Harper <jackson@ximian.com>
9544 * xaml.cpp: Don't attempt to convert values if we are going to
9545 managed anyways. This prevents things that can be created easily
9546 from strings being created from expressions.
9548 2009-03-24 Jackson Harper <jackson@ximian.com>
9551 * animation.cpp: Use an OBJECT for the Value property.
9552 * dependencyproperty.g.cpp: Regen
9554 2009-03-24 Stephane Delcroix <sdelcroix@novell.com>
9556 * uri.h|uri.cpp: new Equals () methods, so we can use its generated
9557 cbinding as GCompareFunc.
9559 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
9561 * pipeline.cpp: Fix breakage.
9563 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
9566 * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
9567 gives ready-to-present data. Make it handle pcm, rgb, rgba
9572 * type-generated.cpp: Regenerated.
9574 2009-03-23 Stephane Delcroix <sdelcroix@novell.com>
9576 * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
9577 changes to keep working
9579 2009-03-23 Jeffrey Stedfast <fejj@novell.com>
9581 * uri.cpp (Uri::operator==): If all the != compares pass, return
9582 true. Don't let control reach the end of a non-void function!
9584 * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
9585 position changed event.
9587 2009-03-23 Chris Toshok <toshok@ximian.com>
9589 * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
9590 due to vertigo doing some weird stuff that I don't fully
9591 understand :) but in the interest of not requiring every usage to
9592 include a null check, init originalString to g_strdup("") here.
9594 2009-03-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
9596 * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
9599 2009-03-23 Chris Toshok <toshok@ximian.com>
9601 * uri.cpp (Uri::Copy): return immediately if @from == null.
9603 2009-03-21 Chris Toshok <toshok@ximian.com>
9605 * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
9606 to Application:GetResource.
9608 * application.[h,cpp] (Application::GetResource): this takes a Uri
9609 instead of a string now.
9611 2009-03-21 Chris Toshok <toshok@ximian.com>
9613 * uri.[h,cpp]: a few changes:
9614 1. Add "bool isAbsolute" and "char* originalString" fields.
9615 2. Remove Clone and add a static Copy method which Value can use
9616 to copy all the internal fields.
9618 4. make it a struct so we'll only box when explicitly asked to in
9620 5. add an operator== so we can do non-reference comparisons in
9623 * dependencyobject.h,
9624 dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
9627 * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
9629 * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
9631 * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
9634 * media.cpp: source->GetUriSource() returns a Uri*
9636 * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
9638 * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
9641 * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
9642 the Value ctor does that for us.
9644 * xaml.cpp (value_from_str): add Type::URI case, and rework the
9645 Type::BITMAPIMAGE case to use a Uri object.
9647 * validators.[h,cpp]: rename NonNullStringValidator to
9648 NonNullValidator. All uses before didn't depend on the
9649 "string"-ness of the value, and we can make use of it for the Uri
9652 * value.h.in, value.cpp: add Uri support, and remove
9655 * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
9658 * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
9660 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
9662 * textbox.cpp (TextBoxView::UpdateText): Split out from
9663 TextBoxView::Layout(). Sets the text on the layout engine.
9664 (TextBoxView::Layout): Moved most of the logic into UpdateText()
9665 and the rest into Render(). We now just set the MaxWidth and lay
9667 (TextBoxView::Render): If dirty, after calling Layout(), call
9668 UpdateCursor(false) and clear the dirty flag.
9669 (TextBoxView::OnModelChanged): If the text changes, update it
9670 immediately on our layout context by calling UpdateText().
9671 (TextBoxView::SetTextBox): Call UpdateText() here as well and make
9672 it more robust against a NULL textbox argument.
9674 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
9676 * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
9677 context argument since it never actually uses it anyway.
9678 (TextBoxView::MeasureOverride): Don't create a temporary cairo
9679 context since it never gets used.
9680 (TextBoxView::ArrangeOverride): Same.
9682 2009-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
9686 * pipeline-asf.cpp: Re-implement fallback to http when mms
9689 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
9691 * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
9694 2009-03-20 Jackson Harper <jackson@ximian.com>
9696 * xaml.cpp: Make sure we go to managed when using property element
9697 syntax for setting properties of managed kinds.
9699 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
9701 * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
9702 larger than the current ActualWidth (and no wrapping has been
9703 done), then no need to re-layout. This should help improve
9704 performance of many cases of TextBox/Block MeasureOverride() and
9706 (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
9707 set is_wrapped to true.
9708 (TextLayout::LayoutWrap): Same.
9709 (TextLayout::Layout): Reset is_wrapped to false before laying out
9712 2009-03-19 Larry Ewing <lewing@novell.com>
9714 * multiscaleimage.cpp (RenderSingle): move the clipping to the
9715 outer loop here too.
9717 2009-03-19 Larry Ewing <lewing@novell.com>
9719 * multiscaleimage.cpp (RenderCollection): rework the collection
9720 rendering slightly by moving the subimages out of the loop.
9722 2009-03-18 Chris Toshok <toshok@ximian.com>
9724 * dependencyobject.cpp (unregister_depobj_names): another side of
9725 the TagProperty coin. don't unregister names from it, since we
9726 aren't registering names from it.
9727 (DependencyObject::SetParent): remove the USERCONTROL extra
9728 registration from here. it's not necessary now that jackson has
9729 fixed where we register the names.
9731 * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
9732 freeze the default value if the property is not custom.
9734 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
9736 Fixes a crash in the Microsoft.SilverlightControls
9737 ControlsExtended unit tests (specifically the DatePickerTest).
9739 * control.h (class Control): Set a DefaultValue for the Foreground
9742 * textblock.h (class TextBlock): Same.
9744 2009-03-18 Jackson Harper <jackson@ximian.com>
9746 * xaml.cpp: When we use x:Name to set an elements name, make sure
9747 that it gets set in the namescope of it's containing element.
9748 * dependencyobject.cpp|h: New method that allows setting objects
9749 name in a different namescope, this will also result in the name
9750 being set in the objects namescope.
9751 - Allow duplicate objects if they are the same object
9752 * namescope.cpp: Allow duplicates if they are the same object.
9754 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
9756 * textbox.cpp (TextBox::Initialize): Don't bother connecting to
9757 MouseEnter/Leave, we don't care.
9758 (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
9759 (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
9760 parent TextBox control.
9761 (TextBoxView::OnMouseLeftButtonUp): Same.
9763 * runtime.cpp (Surface::FocusElement): Don't do all the checks
9764 here, they are now done in Control::Focus().
9765 (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
9766 now expect this to be done in the MouseLeftButtonDown event
9769 * control.cpp (Control::Focus): New method to focus a control.
9771 2009-03-18 Jb Evain <jbevain@novell.com>
9773 * deployment.cpp: add a MOON_PROFILER environment variable
9774 to control profiling of the embedded mono.
9776 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9779 * pipeline.cpp: Remove unused field.
9781 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9783 * pipeline-asf.cpp: Fix visitmix.
9785 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9789 * deployment.cpp: Add signal handlers for crash detection in
9790 libmoon instead of libshocker, this way there's not a race
9791 condition between loading mono and installing a signal
9792 handler in libshocker (the signal handler has to get
9793 installed before loading mono, otherwise we'll crash for
9794 real due to managed exceptions getting caught by the signal
9797 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
9799 * pipeline.cpp: More asserts.
9801 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
9803 * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
9806 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
9808 * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
9809 shadow the fname method argument, and don't leak if
9810 finfo.external_fa has the 4th bit set.
9812 2009-03-17 Chris Toshok <toshok@ximian.com>
9814 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9815 don't do the SetParent stuff (even when the value is a
9816 DependencyObject) if the property is UIElement::TagProperty. This
9817 fixes the cyclic tree warning in RichTextBox. Right now it's
9818 hardcoded to check for that property, but we need to move it to
9819 the DP metadata, and do an audit of other "typeof(object)" DP's to
9820 make sure we aren't setting parent where we shouldn't be.
9822 2009-03-17 Stephane Delcroix <sdelcroix@novell.com>
9824 * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
9826 2009-03-16 Jackson Harper <jackson@ximian.com>
9828 * template.cpp: It doesn't really change anything because
9829 templates are never parented, but technically they should be in non
9830 temporary namescopes.
9832 2009-03-16 Jeffrey Stedfast <fejj@novell.com>
9834 * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
9835 go up/down 'n' lines instead of always 1 if n wouldn't overflow.
9837 2009-03-16 Stephane Delcroix <sdelcroix@novell.com>
9839 * multiscaleimage.cpp:
9840 * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
9841 it on VP origin or width changed.
9843 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9845 * multiscaleimage.cpp: fix the clipping issue for collections
9847 2009-03-13 Chris Toshok <toshok@ximian.com>
9849 * type.h, type-generated.cpp: regen.
9851 2009-03-13 Chris Toshok <toshok@ximian.com>
9853 * xaml.cpp (value_from_str): in the int32 and int64 case, we need
9854 to parse until we get an invalid character, and return the value
9855 parsed up to that point. it's only an error if there's no valid
9858 2009-03-13 Chris Toshok <toshok@ximian.com>
9860 * textblock.h (class Inline): inlines don't permit multiple
9861 parents (Fixes RunTest.RunMultipleParents).
9863 2009-03-13 Geoff Norton <gnorton@novell.com>
9865 * xap.cpp: Zip files can contain directory entires, we shouldn't
9866 try to open them as files.
9868 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9871 * control.cpp: Added a null check to prevent crashes.
9873 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9876 * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
9877 and clean up upon shutdown.
9880 * pipeline.cpp: Remove a broken attempt to ensure that we
9881 don't leave Media threads running after having shut down.
9883 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9885 * playlist.cpp: Dispose: fix a typo - dispose the media not
9888 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9890 * playlist.cpp: DownloadProgressChangedHandler: Don't do
9891 anything if we've been disposed. Fixes a warning.
9893 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9895 * mediaelement.cpp: Dispose: We need to dispose the media
9898 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9900 * downloader.h: DownloaderResponse: Add virtual ref/unref
9903 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9905 * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
9906 crashes when we can't find a time manager. Also if we can't
9907 remove a timeout, we have to leak ourselves, otherwise the
9908 timeout might get called after we're destroyed.
9910 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9914 * type-generated.cpp: Added Deployment::ShuttingDownEvent.
9915 This will be used by MediaElement to ensure that all media
9916 threads are cleaned up even if the MediaElement itself is
9919 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9921 * multiscaleimage.cpp: no longer use precompiled table for morton
9922 layout, but use short and fast function in place.
9924 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9926 * multiscaleimage.cpp: check for null tiles uri returned by
9929 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
9931 * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
9932 having to loop over all the tiles on every tick.
9934 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9936 * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
9937 toplevel element before disposing it, since the SetSurface
9938 will be propagated to all descendants, while Dispose will
9939 detach descendants (preventing subsequent SetSurface calls
9942 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
9944 * mediaplayer.cpp: Open: when we add an event handler to the
9945 video stream's FirstFrameEnqueued event, the first frame
9946 might already be in the queue, so just call LoadVideoFrame
9947 once always. Fixes test-canvas-no-size.html.
9949 2009-03-12 Geoff Norton <gnorton@novell.com>
9951 * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
9953 2009-03-12 Geoff Norton <gnorton@novell.com>
9955 * deepzoomimagetilesource.cpp: Ensure we dont override default values
9956 if nothing has been provided in the XML
9958 2009-03-12 Geoff Norton <gnorton@novell.com>
9961 * animation.h: Implement SkipToFill
9963 2009-03-12 Larry Ewing <lewing@novell.com>
9965 * canvas.cpp: don't chain up the FE in the overides that is very
9968 2009-03-12 Chris Toshok <toshok@ximian.com>
9970 * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
9971 text demo when you click on the buttons. we need to be creating
9972 RoutedEventArgs, not EventArgs.
9974 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9976 * codec-version.h.in: Bump.
9978 2009-03-12 Alan McGovern <amcgovern@novell.com>
9980 * dependencyproperty.cpp: 1) Refactor the code so that
9981 open/closing parens are parsed in a separate step to
9982 typename/property name. Then merge the codepaths for the
9983 default and '(' case.
9984 2) Attached properties can only be specified inside parens. So
9985 "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
9986 3) For non-attached properties both "Rectangle.RadiusX" and
9987 "(Rectangle.RadiusX)" are acceptable.
9989 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9991 * pipeline.cpp: Add a null check.
9993 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
9995 * audio.cpp: Use media's thread-safe event handling.
9998 * playlist.cpp: PlaylistRoot: keep a reference to our media
9999 player (i.e. don't use MediaElement's media player, it may
10000 change). Use the thread-safe event support in media.
10003 * mediaplayer.cpp: Use media's thread-safe event handling.
10004 Don't tick while waiting for the media to get the first
10005 frame, just attach an event handler to
10006 FirstFrameEnqueuedEvent.
10009 * pipeline.cpp: IMediaObject: Add thread-safe event support.
10010 Media: inherit from IMediaObject to get the thread-safe
10013 * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
10014 ignore ASFReader::Seek's result, handle it correctly.
10015 EnqueueGetFrame: requeue a get frame request if we don't
10016 have enough data yet.
10018 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
10020 * pipeline.h: Move IMediaObject above Media so that Media can
10021 inherit from IMediaObject.
10023 2009-03-12 Andreia Gaita <avdigal@novell.com>
10025 * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
10026 started during the tick event; in some cases the time between these
10027 two calls was enough to have an extra tick on the time manager, and
10028 the DispatcherTimer would be advanced again even though it was
10029 stopped, and this would happen after the Completed handler was
10030 removed and before it was added again.
10031 Fixes the RestartTimer2 test and SilverlightChess.
10033 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10035 * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
10036 brushes here anymore.
10037 (class TextBoxDynamicPropertyValueProvider): Return default
10038 selection brushes if they've been initialized (happens in
10039 TextBoxView::Render).
10040 (TextBoxView::Render): Initialize the selection brushes if they
10041 haven't already been.
10043 2009-03-11 Alan McGovern <amcgovern@novell.com>
10045 * dependencyproperty.cpp: Fix issues in resolve_property_path
10046 with some complex paths. Add two new NUnit tests which
10047 verify the correct properties are animated.
10049 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10051 * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
10053 * downloader.cpp (downloader_deobfuscate_font): Moved here from
10054 text.cpp and made public.
10056 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10058 * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
10061 2009-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
10063 * brush.cpp: ImageBrush::image_failed: we need to ref the
10064 eventargs when we do emit chaining.
10066 2009-03-11 Chris Toshok <toshok@ximian.com>
10068 * border.cpp (Border::OnPropertyChanged): Border is ever the red
10069 headed stepchild. It has its own validation wrt SetLogicalParent,
10070 that behaves like the InvalidOperationException case in
10071 FrameworkElement, but throws ArgumentException instead of IOE.
10073 2009-03-11 Chris Toshok <toshok@ximian.com>
10075 * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
10076 Top/Left property changed handling from OnSubPropertyChanged to
10077 here, and remove OnSubPropertyChanged. Basically property changes
10078 on items in collections are never communicated back using
10079 OnSubPropertyChanged. That is reserved for direct children of the
10080 object (fill/stroke brushes, etc.)
10082 * grid.h, grid.cpp: same.
10084 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
10085 remove this use of GetParent (yay!) since we don't implicitly
10086 notify our logical parent if an attached property was changed. we
10087 just notify all listeners.
10089 * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
10090 rename GetParent/SetParent to GetParentClock/SetParentClock.
10092 2009-03-10 Chris Toshok <toshok@ximian.com>
10094 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10095 hook up (and unhook) the collection events if the dob is a
10096 Type::COLLECTION. Remove the stupid parent check that was
10097 breaking everything. Pass in our MoonError parameter to
10098 OnPropertyChanged so we can communicate it back.
10099 (DependencyObject::ClearValue): unhook from the collection events.
10101 * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
10102 these methods are now in FrameworkElement.
10103 (SetParent, GetParent): their replacements. Hopefully these are
10104 not long for this world, and I'm working on getting rid of them.
10105 they are used in very few places now (basically collection.cpp and
10107 (collection_changed, collection_item_changed): two new
10108 EventHandlers so we can make collection stop calling directly into
10110 (OnPropertyChanged): add a MoonError* arg here so we can transmit
10111 errors back from the various OnPropertyChanged overrides.
10114 validators.cpp (Validators::ContentControlContentValidator): add
10115 half of the "multiple parents for .Content" checks here. This
10116 runs before the value is actually set and checks to see if the
10117 logical parent is a Panel subclass. If it is it throws an
10118 ArgumentException instead of an InvalidOperationException (don't
10121 * collection.cpp, collection.h: remove the assumption that we can
10122 just call into our parent to notify of collection/collection item
10123 changes. instead just emit an event.
10125 * eventargs.h: define CollectionItemChangedEventArgs for the new
10126 Collection::ItemChangedEvent.
10128 * contentcontrol.h,
10129 contentcontrol.cpp (ContentControl::OnPropertyChanged): call
10130 SetLogicalParent on the old/new contents if they're
10131 FrameworkElements, and if either returns an error, return
10134 * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
10138 * frameworkelement.cpp, frameworkelement.h: move
10139 Set/GetLogicalParent here, and make the InvalidOperationException
10140 on multiple parents unconditional.
10142 * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
10143 a FrameworkElement, set its logical parent.
10145 * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
10146 control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
10147 mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
10148 textbox.*, text.*, transform.*, uielement.*: change all the
10149 OnPropertyChanged signatures to include MoonError*
10151 * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
10152 type.h, value.h: regen.
10154 * resources.cpp: s/LogicaParent/Parent.
10156 * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
10157 not really part of this larger change, but needed for the
10158 toggleref stuff. we need to call SetParent on all the
10159 DO-subclassed converted values so they never reference a trashed
10161 (get_parent): add more cases here, none of which I'm sure are
10164 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10166 * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
10167 (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
10169 (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
10170 so that we don't register event callbacks twice. Doh.
10172 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10174 * validators.cpp (Validators::PasswordValidator):
10175 Removed. PasswordBox::PasswordProperty is internal, so we map it
10176 to TextBox::TextProperty and manually implement the
10177 getter/setter (which si where we manually throw an
10178 ArgumentNullException if set to null).
10180 * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
10181 Password and Text properties sucks, let's not do it. Instead,
10182 we'll map PasswordProperty to TextProperty on the managed
10183 side. Also need to Invalidate() if PasswordChar changes.
10184 (TextBoxView::Layout): Mask the text with PasswordChars if we are
10185 rendering a PasswordBox's content.
10187 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10189 * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
10190 Password properties in sync. Don't emit a PasswordChanged event,
10191 that's mapped to TextChanged on the managed side.
10192 (TextBox::OnApplyTemplate): Handle Border and Panel
10193 ContentElements as well.
10195 * textbox.h (class PasswordBox): Get rid of the
10196 PasswordChangedEvent and also some of the properties that it
10197 shares with TextBox.
10199 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10201 * contentcontrol.cpp (ContentControl::ContentControl): Use the
10202 nice new ManagedTypeInfo ctor.
10204 * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
10206 * textbox.cpp (TextBox::Initialize): New protected method; all of
10207 the old ctor logic was moved here so that PasswordBox could reuse
10209 (TextBox::TextBox): Call Initialize() with out type info.
10210 (PasswordBox::PasswordBox): Call Initialize() with out type info.
10211 (PasswordBox::Cursor*): Override some of TextBox's cursor
10212 navigation because we don't "see" whitespace or lines.
10214 2009-03-10 Larry Ewing <lewing@novell.com>
10216 * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
10217 isn't found in the template.
10219 2009-03-10 Jackson Harper <jackson@ximian.com>
10221 * xaml.cpp: Don't use GetLogicalParent here because the parenting
10222 hasn't been setup yet. Wse the XamlElementInstance tree for
10223 figuring out who our parent is.
10225 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10227 * brush.cpp: ImageBrush::image_failed: propagate event args.
10229 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10231 * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
10232 loops into do-while loops so that the line->height and
10233 line->descent get set properly. Needed to fix
10234 TextLayout::GetCursor().
10236 2009-03-10 Jackson Harper <jackson@ximian.com>
10238 * xaml.cpp: Do some basic type conversion for resources, this
10239 allows you to do things like store a font family as
10240 <clr:String>Arial</clr:String>.
10242 2009-03-10 Jackson Harper <jackson@ximian.com>
10245 * value.h.in: Consistentify method name.
10247 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10249 * uielement.cpp: GetTimeManager: if we don't have a surface,
10250 try to get it from the deployment.
10252 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10255 * pipeline-nocodec-ui.cpp: Set current deployment in
10258 2009-03-09 Larry Ewing <lewing@novell.com>
10260 * border.cpp (Render): set the fill rule after drawing the clip
10261 geometry since it will set the fill rule for itself.
10263 2009-03-09 Chris Toshok <toshok@ximian.com>
10265 * enums.cpp (cursors_map): add the missing Size* members here.
10267 http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
10268 gallery site to the point where it's displaying a UI.
10270 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10272 * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
10275 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10277 * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
10278 and cursor_offset to 0.0. Silverlight doesn't use character column
10279 when moving the cursor up/down, it uses the cursor's x-offset.
10280 (TextBox::CursorDown): Implement using TextLayoutLines.
10281 (TextBox::CursorUp): Same.
10282 (TextBoxView::GetLineFromY): New convenience method.
10283 (TextBoxView::GetLineFromIndex): Another new method.
10285 * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
10287 (TextLayout::GetCursorFromXY): Moved the remaining logic into
10288 TextLayoutLine::GetCursorFromX().
10289 (TextLayout::GetLineFromY): Provide the line index to our caller,
10291 (TextLayout::GetLineFromIndex): New convenience method.
10293 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10295 * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
10296 cursor == 0 hack anymore.
10298 2009-03-09 Andreia Gaita <avidigal@novell.com>
10300 * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
10303 2009-03-09 Andreia Gaita <avidigal@novell.com>
10305 * dependencyobject.cpp: do the toggleref callbacks so the managed
10306 side can dispose of things properly
10308 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10310 * layout.cpp (unichar_combining_class): New function to protect
10311 against using Glib's g_unichar_combining_class() if the API isn't
10314 2009-03-09 Jackson Harper <jackson@ximian.com>
10316 * xaml.cpp: Store the top element in the xaml context so we can
10317 still lookup handlers when parsing templates.
10319 2009-03-09 Stephane Delcroix <sdelcroix@novell.com>
10321 * multiscaleimage.cpp: fix the loop ending conditions for images
10322 with extreme aspect ratios.
10324 2009-03-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
10326 * deployment.cpp: Add support for setting the root directory
10329 2009-03-06 Larry Ewing <lewing@novell.com>
10331 * multiscaleimage.cpp (Render): cache the surface type as a
10332 similar surface to the rendering target to speed up rendering a
10335 2009-03-06 Larry Ewing <lewing@novell.com>
10337 * layout.cpp (SetText): handle null text here.
10339 2009-03-06 Geoff Norton <gnorton@novell.com>
10341 * codec-version.h.in: When we change the layout of
10342 dependencyobject, we need to bump the ABI
10344 2009-03-06 Alan McGovern <amcgovern@novell.com>
10350 * animation.cpp: If the PropertyPath supplied to the
10351 TargetPropertyProperty is a DependencyProperty, we need a
10352 special method to retrieve it. Normally PropertyPaths which
10353 are instantiated with a DependencyProperty are returned as
10354 'null' from native. Also add method for getting the manual
10357 2009-03-06 Alan McGovern <amcgovern@novell.com>
10364 * animation.cpp: Revert - I didn't mean to commit that yet.
10367 2009-03-06 Alan McGovern <amcgovern@novell.com>
10369 * propertypath.h: Need to null check the path before passing
10370 to strcmp - It is possible for the path to be null now.
10372 2009-03-06 Andreia Gaita <avidigal@novell.com>
10374 * dependencyobject.[h|cpp]: Add toggleref event registration
10377 * cbinding.[h|cpp]: regen
10379 2009-03-05 Jeffrey Stedfast <fejj@novell.com>
10381 * layout.cpp (FindLastWord): We need to walk backwards, not
10384 2009-03-05 Alan McGovern <amcgovern@novell.com>
10386 * propertypath.h: If we set a propertypath with a
10387 DependencyProperty, set the 'path' string to null. This
10388 avoids extra marshalling when it's not needed.
10390 2009-03-04 Geoff Norton <gnorton@novell.com>
10392 * deployment.cpp: Finalizing the domain destroys all objects
10393 immediately. Its possible that we might end up invoking more
10394 finalizers in the unref drain thta begins after dispose, so
10395 we're going to force a full gc and finalizer run of the collected
10396 objects here and allow ~Deployment to finalize the entire domain.
10398 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
10400 * pipeline.cpp (Media::DisposeObjectInternal): Return
10401 MEDIA_SUCCESS so that control doesn't reach the end of a non-void
10404 * layout.cpp (TextLayout::GetCursorFromXY): Don't use
10405 g_unichar_iszerowidth().
10406 (TextLayout::GetCursor): Same.
10408 2009-03-04 Larry Ewing <lewing@novell.com>
10410 * border.cpp, border.h: clean up the path_only drawing a
10411 little. set CanFindElement more appropriately.
10413 * panel.cpp: undo the path_only logic a bit.
10415 * frameworkelement.cpp: make FindElementInHostCoordinates a little
10418 * uielement.cpp, uielement.h: Make the CanFindElement default be
10419 false, and remove the broken in_stroke check.
10421 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
10423 * multiscaleimage.h|cpp: generate PInvoke for Setters so the
10424 animations are used from managed Set() too
10426 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
10428 * multiscaleimage.h|cpp: pan and zoom animation in
10429 Viewport[Origin|Width] properties Setters
10431 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
10433 * layout.cpp: Disable debug printfs unless layout debugging is
10436 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
10438 Fixes the last failing case in LineBreakBasic1.htm
10440 * layout.cpp (layout_word_wrap): When checking for last_word, use
10441 <= instead of < because inptr, at this point, is at the first byte
10442 *after* the character just gobbled up.
10444 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
10446 Fixes ActualWidth/Height extents for LineBreakBasic1.htm
10448 * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
10449 extents include trailing LWSP if-and-only-if that trailing LWSP is
10451 (TextLayout::LayoutNoWrap): Same.
10452 (TextLayout::LayoutWrap): Same.
10454 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10456 * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
10459 * font.cpp (TextFont::GetGlyphInfo): If unichar is
10460 0xFEFF (zero-width no-break space), then return a global
10461 GlyphInfo. We do this because at least some fonts won't have this
10462 glyph and we don't want to render an empty box (the default
10465 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10467 * layout.cpp (layout_word_wrap): Silverlight ignores breaking
10468 rules for glyphs that the font doesn't contain.
10470 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10472 * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
10473 op.prev up-to-date if we combine chars.
10475 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10477 Fixes a few more cases in LineBreakClasses.htm
10479 * layout.cpp (utf8_find_last_word): If a zero-width space follows
10480 a combining mark, treat the zws as part of a word and not lwsp.
10481 (layout_word_lwsp): Do NOT ignore zero-width characters, let the
10482 font metrics do the talking.
10483 (TextLayout::LayoutNoWrap): Same.
10484 (layout_word_overflow): Same combining-mark fix as above.
10485 (layout_word_wrap): Same. Also changed the way we keep track of
10486 break opportunities. After discoverign that we need to wrap, get
10487 the break-type for the follwoing character before working
10488 backwards. Try to return false if we manage to squeeze the entire
10489 word onto the line anyway.
10491 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10493 Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
10495 * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
10496 (utf8_find_last_word): Use BreakSpace() instead of
10497 g_unichar_isspace() since that's how the rest of our breaking
10499 (FindLastWord): Same.
10500 (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
10502 (LayoutNoWrap): Same.
10504 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
10506 * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
10507 to Wrap here so that we can avoid a re-layout if the old wrapping
10510 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
10512 Fixes some wrapping issues in LineBreakBasic1.htm
10514 * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
10515 variable to keep track of whether or not the layout_word_wrap()
10516 function returned. We want to keep 'linebreak' as a separate
10517 state. If we were told to wrap, but we've reached the end of the
10518 run, postpone wrapping until the next run (which might start with
10521 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
10523 Fixes for AdobeFonts.htm
10525 * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
10526 its own Fill() so that if any glyphs have a tail that descends
10527 below the baseline into the underline, the fill doesn't negate
10528 itself where the paths overlap.
10529 (GenerateGlyphCluster): Use the font->Ascender() to get the
10530 baseline offset from the top. Height() + Descender() isn't quite
10531 right. Should probably fix other places that use that strategy as
10532 well, but one step at a time.
10534 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
10536 * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
10538 (TextBoxView::Render): If the selection has changed, update the
10539 selection on the layout engine.
10540 (append_runs): Removed; no longer needed.
10541 (TextBoxView::Layout): Updated to use the new layout APIs.
10542 (TextBoxView::OnModelChanged): When the selection changes, don't
10543 set dirty to true. Instead, set selection_changed to true.
10544 (TextBoxView::SetTextBox): Set the default text attributes on our
10545 layout with the textbox as the source.
10547 * text.cpp (TextBlock::Layout): Updated to use the new text layout
10550 * layout.cpp: All new layout/rendering engine.
10552 2009-03-04 Geoff Norton <gnorton@novell.com>
10554 * deployment.cpp: When we dispose the domain, we force a full GC
10555 run to happen, otherwise objects could retain a ref to the deployment
10556 causing ~Deployment to never be called.
10558 2009-03-04 Jackson Harper <jackson@ximian.com>
10560 * xaml.cpp|h: Add a new method for grabbing the element_name of a
10561 xaml element instance from managed.
10563 2009-03-04 Alan McGovern <amcgovern@novell.com>
10565 * src.mdp: Add missing files to the MD solution
10567 2009-03-03 Chris Toshok <toshok@ximian.com>
10569 * collection.cpp (DependencyObjectCollection::AddedToCollection):
10570 add a check for PermitsMultipleParents here.
10572 * collection.h (UIElementCollection::AddWithError): remove.
10574 * dependencyobject.h (DependencyObject::PermitsMultipleParents):
10575 return true by default.
10577 * style.h (class Setter): setters don't permit multiple parents.
10579 * uielement.h (class UIElement): neither do uielements.
10581 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10582 change the UIElement test to a PermitsMultipleParents test.
10584 2009-03-03 Chris Toshok <toshok@ximian.com>
10586 * cbinding.h, cbinding.cpp: regen.
10588 * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
10589 the parent of the DO is a collection, throw an exception.
10590 (UIElementCollection::CanAdd): remove.
10591 (DependencyObjectCollection::CanAdd): remove.
10592 (HitTestCollection::CanAdd): remove.
10594 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10595 reinstate the multiple parents warning, but make it a MoonError,
10596 and make it only apply to visual elements (UIElement subclasses,
10599 * dependencyobject.h (GetLogicalParentIncludingCollections): add a
10600 new getter for just the logical_parent field, which is horribly
10602 (GetLogicalParent): add a pinvoke for this.
10604 2009-03-03 Jackson Harper <jackson@ximian.com>
10606 * xaml.cpp|h: SetProperty now takes a Value instead of a
10607 DependencyObject, this allows us to set properties on things like
10610 2009-03-03 Geoff Norton <gnorton@novell.com>
10613 * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
10616 2009-03-03 Alan McGovern <amcgovern@novell.com>
10619 * propertypath.h: Complete the implementation of PropertyPath.
10620 If it is constructed with a DependencyProperty in managed,
10621 propagate this to native.
10623 * dependencyproperty.cpp: If the property path instance was
10624 constructed with a DependencyProperty *, immediately return
10627 2009-03-03 Alan McGovern <amcgovern@novell.com>
10630 * animation.cpp: Implement the required exceptions for managed
10631 code when starting storyboards which are missing properties
10632 or can't find the target element/property.
10634 2009-03-03 Alan McGovern <amcgovern@novell.com>
10636 * src.mdp: Add propertypath.h to the MD solution
10638 2009-03-03 Alan McGovern <amcgovern@novell.com>
10641 * animation.cpp: Storyboards should always use the surface in
10642 the current deployment when starting. They don't have to be
10643 explicitly attached to a surface - SL2 has different
10644 semantics as compared to SL1 which caused some of the 1.0
10645 tests to flag this as a regression.
10647 2009-03-03 Alan McGovern <amcgovern@novell.com>
10651 * animation.cpp: Revert last change. I have the test failing
10654 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
10656 * pipeline-asf.cpp: Add a null check.
10658 2009-03-03 Alan McGovern <amcgovern@novell.com>
10661 * animation.cpp: Storyboards should always use the surface in
10662 the current deployment when starting. They don't have to be
10663 explicitly attached to a surface.
10665 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
10667 * dependencyobject.cpp: EventObject::SetSurface: only warn
10668 about wrong thread if we're actually change something.
10670 * mediaplayer.cpp: Call DisposeObject on the media to dispose
10674 * pipeline.cpp: Add Media::DisposeObject to have objects
10675 disposed on the media thread.
10677 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
10679 * pipeline.cpp: Add a missing base call to Dispose.
10681 2009-03-02 Geoff Norton <gnorton@novell.com>
10683 * pipeline.cpp: SetSource (uri) is not required to be called before
10684 SetSource (Downloader, PartName) from the javascript API.
10686 2009-03-02 Geoff Norton <gnorton@novell.com>
10688 * deployment.cpp: Enable signal chaning
10690 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
10692 * textbox.cpp (TextBox::Paste): New method to paste the
10693 contents. Since pasting text is asyncronous, we have to emit our
10694 own events and can't rely on them happening inside OnKeyDown().
10695 (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
10696 false if updating the layout returns false.
10698 2009-03-01 Andrés G. Aragoneses <aaragoneses@novell.com>
10700 * runtime.cpp: Add an EOL at the end of a printf.
10702 2009-03-01 Jeffrey Stedfast <fejj@novell.com>
10704 * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
10705 don't want to be exporting these symbols.
10707 2009-02-27 Stephane Delcroix <sdelcroix@novell.com>
10709 * multiscaleimage.cpp: use the tiles containing the shared thumbs for
10710 the highest levels of DZ collections. Saves a lot of network traffic.
10712 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
10714 * resources.cpp: Simplify (old glib) Clear and use the "right" macro
10716 2009-02-26 Chris Toshok <toshok@ximian.com>
10718 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10719 more tweaking of inheritance behavior. if the parentProperty
10720 exists, check the local value, and if it exists, return that.
10721 otherwise return return GetValue.
10723 2009-02-26 Chris Toshok <toshok@ximian.com>
10725 * border.cpp (Border::OnPropertyChanged): robustificate this a
10728 2009-02-26 Chris Toshok <toshok@ximian.com>
10730 * cbinding.h, cbinding.cpp: regen.
10732 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
10733 initialize default_style_appled to false.
10734 (FrameworkElement::SetDefaultStyle): new method, so that the
10735 managed code can set the default style without going through the
10736 CLR property wrapper (and the DP system), since (stupidly, imo)
10737 the default style isn't exposed by the Style property.
10738 (FrameworkElement::Measure): I don't like doing this hear, but
10739 according to dave relyea's blog, templates are applied when
10740 Measure is called. we could add an internal measure hook so that
10741 this code could live in control.cpp, but for now this hack will
10744 * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
10745 and add the default_style_applied field.
10747 * control.cpp (Control::OnLoaded): only apply the default style
10748 here if we haven't already (to handle the case where the object is
10749 created programmatically).
10751 * xaml.cpp (end_element_handler): according to the blog post in
10752 the added comment, controls defined in XAML get their default
10753 style applied when the end tag is seen.
10755 2009-02-26 Jeffrey Stedfast <fejj@novell.com>
10757 * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
10759 (TextBuffer::Replace): Don't call Resize() if the replacement text
10760 is shorter than the old subtext because the realloc() would lose
10761 data before we had a chance to shift things into place.
10763 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
10765 * resources.cpp: Fix crash on SLED (old glib) when clearing the
10766 hashtable (somehow this did not crash before)
10768 2009-02-25 Jackson Harper <jackson@ximian.com>
10770 * xaml.cpp: Remove some old code that was preventing non-dob
10771 values from being set to native properties.
10773 2009-02-25 Jeffrey Stedfast <fejj@novell.com>
10775 * textbox.cpp (TextBuffer::Substring): New method to get a
10777 (class TextBoxUndoAction*): New classes to represent different
10778 types of Undo/Redo actions.
10779 (class TextBoxUndoStack): New Undo/Redo stack class.
10780 (TextBox::TextBox): Initialize undo/redo stacks.
10781 (TextBox): Destroy undo/redo stacks.
10782 (TextBox::KeyPressBackSpace): Record an undo action.
10783 (TextBox::KeyPressDelete): Same.
10784 (TextBox::KeyPressUnichar): Here too.
10785 (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
10786 (TextBox::OnPropertyChanged): Record undo actions for setting
10787 SelectedText and Text properties.
10788 (TextBox::Undo): Undo the most recent action.
10789 (TextBox::Redo): Redo the most recent action.
10791 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
10793 * multiscaleimage.h|cpp: return the next tile to download
10794 in RenderSingle, RenderCollection. so the download is triggered
10795 from a single place.
10797 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
10799 * multiscaleimage.h|cpp: split Render in RenderSingle,
10802 2009-02-24 Chris Toshok <toshok@ximian.com>
10804 * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
10805 added to the list during emission, we can end up doing the Finish
10806 decrements when we didn't do the Start increments, leading to a
10807 negative events->emitting count. This causes us to spin in
10808 unref_delayed on shutdown. Fixes bug #479364.
10812 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10814 * codec-version.h.in: Bump abi version.
10817 * mediaplayer.cpp: Handle frames with width/height set, and
10818 change our cairo surface accordingly.
10821 * pipeline.cpp: Add width/height to MediaFrame, to support
10822 frames with different sizes than the initial size specified
10825 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10827 * dependencyobject.cpp: Emit: Add a null check.
10829 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10831 * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
10832 1-pixel-wide line for the cursor... apparently cairo has forsaken
10833 1-pixel-wide lines.
10835 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10837 * layout.cpp (TextLayout::GetCursor): Revert previous round()
10838 change, this isn't the right way to do it.
10840 * textbox.cpp (TextBoxView::BeginCursorBlink): Call
10842 (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
10845 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10847 * multiscaleimage.cpp: remove some debugs, clean the render loops,
10848 cleanly dispose the hashtable and its components
10850 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
10852 * layout.cpp (TextLayout::GetCursor): Round the cursor's x
10853 position to the nearest whole number (makes the cursor look
10856 * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
10858 2009-02-23 Chris Toshok <toshok@ximian.com>
10860 * xaml.cpp (value_from_str): handle Type::OBJECT here by just
10861 assuming the value is a string. Fixes Tag.htm.
10863 2009-02-23 Geoff Norton <gnorton@novell.com>
10865 * debug.cpp: Don't go poking around in managed land if we don't have
10868 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10870 * multiscaleimage.cpp: Render () in relative coordinates
10872 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
10874 * multiscaleimage.h|cpp: use filename as cache keys
10876 2009-02-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
10879 * pipeline.cpp: Only decode on the media thread.
10881 2009-02-23 Alan McGovern <amcgovern@novell.com>
10884 * dependencyproperty.g.cpp: Tag is a System.Object, not a
10887 2009-02-22 Geoff Norton <gnorton@novell.com>
10889 * pipeline.cpp|h: Add extra_data from managed for AudioStream too
10891 2009-02-22 Geoff Norton <gnorton@novell.com>
10893 * cbinding.cpp|h: Regen
10894 * pipeline.cpp|h: When constructing a new VideoStream pass the
10895 extra_data from managed.
10897 2009-02-22 Geoff Norton <gnorton@novell.com>
10899 * pipeline-asf.cpp:
10900 * pipeline.cpp|h: Add some missing codecs.
10902 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
10904 * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
10905 actual_width, segment->end, etc - even if all we had was
10906 whitespace. Try to keep better track of this state as well.
10907 (TextLayout::GetCursor): The cursor height is actually the same as
10910 * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
10911 (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
10913 (TextBox::OnPropertyChanged): Check for inkeypress so we don't
10914 syncronize things too early (we want to do it in SyncAndEmit() at
10915 the end of OnKeyDown()). Also updated to keep proper emit state.
10916 (TextBox::ClearSelection): Only sync selected text if we aren't in
10918 (TextBox::Select): Same.
10920 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
10922 * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
10923 able to resize or false if we failed.
10924 (TextBuffer::*): If Resize fails, return.
10925 (TextBox::CursorPrevWord): Only nagivate back so long as i >
10926 begin. Prevents us from returning -1 when begin is 0.
10927 (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
10928 total number of bytes left after cutting, we only want to memmove
10929 the bytes after the cut point.
10931 * moon-path.c (moon_path_ensure_space): New function to replace
10932 the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
10933 that callers can tell if they have enough space to add the data
10934 they want. Fixed callers to check the return value and return w/o
10935 adding curves, lines, whatever. While this will mean that
10936 Moonlight won't render the path correctly, at least we won't
10939 2009-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
10941 * mediaplayer.cpp: Open: Show the first frame upon opening a
10944 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
10946 * size.cpp|h: Add FromStr (copied from Point)
10947 * xaml.cpp: Parse Type::SIZE
10949 2009-02-19 Jeffrey Stedfast <fejj@novell.com>
10951 * stylus.h (class StylusPoint): In managed-land, this class is
10952 actually a struct, so until we find a better way, mark property
10953 accessors for pinvoking.
10954 (class StylusPointCollection): Add AddStylusPoints to the list of
10955 methods to create pinvoke stubs for.
10956 (class StylusInfo): Fixed to have a managed class
10957 autogenerated (internal).
10959 * brush.cpp (VideoBrush::SetSource): Implemented.
10961 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
10963 * dependencyobject.cpp|h: The parameter is not needed anymore
10964 since the xaml code was updated to work without using the
10967 2009-02-19 Jackson Harper <jackson@ximian.com>
10969 * xaml.cpp: Implement StaticResource element syntax.
10971 2009-02-18 Jeffrey Stedfast <fejj@novell.com>
10973 * geometry.h (class PathGeometry): Don't autocreate the
10974 FiguresProperty until we can figure out why it breaks the PDC
10977 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10979 * mediaelement.h: We always want OnPropertyChanged for
10980 PositionProperty. Fixes seeking to start/0.
10982 * dependencyproperty.g.cpp: Regenerated.
10984 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10986 * mediaelement.cpp: ctor: Initialize flags correctly.
10988 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10992 * pipeline-asf.cpp:
10993 * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
10994 make sled (glib 2.10) happy.
10996 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
11002 * mediaelement.cpp: Initial implementation of
11006 * cbinding.cpp: Regenerated.
11008 2009-02-18 Alan McGovern <amcgovern@novell.com>
11013 * animation.cpp: Storyboards are considered 'children' if they
11014 ever were attached as a child of another timeline. The
11015 current status doesn't appear to matter.
11016 (StoryboardTest.RemoveChildThenStart).
11018 2009-02-18 Stephane Delcroix <sdelcroix@novell.com>
11020 * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
11023 2009-02-17 Chris Toshok <toshok@ximian.com>
11025 * text.cpp (TextBlock::TextBlock): remove this hack.
11027 2009-02-17 Chris Toshok <toshok@ximian.com>
11029 * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
11030 to the SelectedText case, and also don't perform the remaining
11031 operations if g_utf8_to_ucs4_fast fails.
11033 2009-02-17 Jeffrey Stedfast <fejj@novell.com>
11035 * dependencyobject.cpp: Now takes an only_changed argument; if
11036 true, then only return the properties which have been
11037 changed (plus any values which have been auto-created).
11039 * mediaelement.cpp (MediaElement::MediaElement): Set
11040 BufferingTimeProperty and PositionProperty in the ctor, we can't
11041 use DefaultValue nor AutoCreateValue for these since they need to
11042 be returned by ReadLocalValue() immediately after instantiating a
11043 new MediaElement object.
11045 * media.h (class MediaAttribute): Set managed namespaces for
11046 MediaAttribute and MediaAttributeCollection, we have internal
11047 managed implementations of these now.
11049 * text.h (class TextBlock): Changed default LineHeightProperty
11050 value from NaN to 0.0 (docs say NaN is the default, but not
11051 according to the unit tests).
11053 * textbox.h (class TextBox): Changed default TextProperty value
11054 from "" to null (docs say "" is the default, but not according to
11057 * media.cpp (Image::Image): Fix the SourceProperty to be
11060 * shape.cpp (Polygon::Polygon): Don't set a point
11061 collection. We'll make it autocreated instead.
11062 (Polyline::Polyline): Same.
11064 * geometry.h (class PathFigure): Set the default value of
11065 IsFilledProperty to true.
11066 (class PathGeometry): AutoCreate the FiguresProperty.
11067 (class PolyBezierSegment): AutoCreate the PointsProperty.
11068 (class PolyLineSegment): AutoCreate the PointsProperty.
11069 (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
11071 * deployment.h (class AssemblyPart): Set the default value of
11072 AssemblyPart::SourceProperty to "".
11074 * mediaelement.h: Set the default value of CurrentState to Closed.
11076 * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
11077 Markers or Attributes properties, these are autocreated.
11079 2009-02-17 Alan McGovern <amcgovern@novell.com>
11081 * animation.cpp: Missed out on a "!" when changing from
11082 GetIsChild to GetIsRootStoryboard
11084 2009-02-17 Alan McGovern <amcgovern@novell.com>
11087 * cbinding.cpp: Regenerated
11090 * animation.cpp: Add *WithError functions so that storyboards
11091 can throw the right exceptions when they are not the root
11094 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11096 * mediaelement.cpp: Add some null checks.
11098 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11101 * mediaelement.cpp: Move bitfields into our flags field.
11102 Remove allow_downloads and related methods, no longer used.
11104 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11107 * mediaelement.cpp: Remove GetDownloaderPolicy, not used
11110 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11116 * mediaelement.cpp: Make SetSource (Stream) work again.
11118 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11125 * pipeline-ffmpeg.h:
11126 * yuv-converter.cpp:
11127 * pipeline-ffmpeg.cpp: Update according to new pipeline api.
11137 * pipeline-asf.cpp:
11138 * mediaelement.cpp:
11139 * mms-downloader.h:
11140 * mms-downloader.cpp: Rework pipeline to be async to support
11147 * type-generated.cpp:
11148 * dependencyproperty.g.cpp: Regenerated.
11150 * codec-version.h.in: Bump codec abi.
11152 * downloader.cpp: Include uri.h.
11154 * downloader.h: Add accessor for failed_msg.
11157 * enums.cpp: Rename MediaElementState to MediaState.
11159 * mutex.h: Added, a pthread implementation of a mutex allowing
11162 * template.h: Inlcude xaml.h and add a forward declaration of
11165 * window.h: Add a forward declaration of MoonWindow.
11167 * src.mdp: Updated.
11169 * dependencyobject.h:
11170 * dependencyobject.cpp: Added EVENTHANDLER macro. Added
11171 support for emititng events from other than the main thread
11172 (by marshalling the event emission to the main thread).
11174 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11176 * deployment.cpp: Use printf instead of g_warning for a
11177 message which is always printed. Makes it less annoying to
11178 break on g_log while debugging.
11180 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11184 * type-generated.cpp: Regenerate.
11186 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11191 * mediaelement.cpp: Remove MediaErrorEventArgs.
11193 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11195 * debug.h: Added LOG_MP3.
11197 * runtime.cpp: Surface ctor: set the surface of the current
11198 deployment to the ourself.
11200 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11202 * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
11204 * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
11206 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11209 * runtime.cpp: CreateDownloader: take an EventObject instead
11212 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11215 * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
11217 2009-02-17 Atsushi Enomoto <atsushi@ximian.com>
11219 * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
11220 Fixed type of ArcSegment::Size from Point to Size.
11222 2009-02-16 Jeffrey Stedfast <fejj@novell.com>
11224 * text.h: Default TextBlock font size seems to be 11px in SL2 as
11225 opposed to 14.667 in SL1.
11227 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11231 * mediaelement.cpp: Move image_brush_compute_pattern_matrix
11232 from media.cpp/mediaelement.cpp to brush.h to avoid having
11233 two declarations of the same method.
11235 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11237 * brush.cpp: Include mediaplayer.h here.
11239 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11241 * dependencyobject.cpp: Change our g_error into a g_warning.
11242 Reffing an object with refcount = 0 can actually happen now.
11244 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11246 * dependencyobject.cpp: AddTickCallInternal: if we don't have
11247 a surface, get it from the deployment.
11249 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11251 * dependencyobject.cpp: EventObject. unref and null out the
11252 deployment in the dtor instead of in Dispose.
11254 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11256 * dependencyobject.h:
11257 * dependencyobject.cpp: Add
11258 DependencyObject::RemoveAllHandlers.
11260 2009-02-16 Alan McGovern <amcgovern@novell.com>
11262 * animation.cpp: Remove the calls to ref/unref as they are
11265 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11267 * libmoon.h: Don't include playlist.h here. Fixes issues with
11268 the plugin when playlist.h includes expat.
11270 2009-02-16 Alan McGovern <amcgovern@novell.com>
11275 * animation.cpp: Implement the managed side of
11276 Storyboard.GetCurrentState ().
11278 2009-02-16 Alan McGovern <amcgovern@novell.com>
11281 * type.h.in: The renaming changes in r126921 break the build
11282 if the generator is run because type.h.in didn't contain the
11283 CopyProperties prototype.
11285 2009-02-16 Geoff Norton <gnorton@novell.com>
11288 * downloader.h: Downloaders created in javascript can suffer the
11289 same shared-cache firefox bug, so we need to expose the buffer
11290 to the image layer in case this is the place.
11292 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
11294 * dependencyobject.cpp (DependencyObject::GetProperties): New
11295 method to get an array of all properties on the object (including
11296 currently attached properties).
11298 * type.cpp (Type::CopyProperties): Renamed from GetProperties()
11299 and changed what it does a bit. Now takes an 'inherited' argument
11300 and returns a GHashTable of properties keyed by GetHashKey().
11302 2009-02-14 Chris Toshok <toshok@ximian.com>
11304 * dependencyobject.h, dependencyobject.cpp: rename
11305 "current_values" as "local_values". current_values now means
11306 "local values + autocreated values". At this point, add
11307 GetCurrentValues which returns a new hashtable containing a union
11308 of both sets, and add FreeCurrentValues to destroy it.
11310 * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
11311 DependencyObject::GetLocalValues instead of GetCurrentValues.
11313 2009-02-13 Chris Toshok <toshok@ximian.com>
11315 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11316 fix a number of logical errors. gets inlines properly inheriting
11319 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
11321 * type.cpp (Type::GetProperties): New method to get an array of
11322 DependencyProperties for a Type.
11324 2009-02-13 Geoff Norton <gnorton@novell.com>
11326 * playlist.cpp: Check these string with g_ascii_str* as well.
11327 Also these should be case-insensitive checks.
11329 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
11331 * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
11332 should be ints, not doubles.
11334 * text.h (class Glyphs): Set the DefaultValues for
11335 UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
11337 * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
11338 SetUriSource("") (it's already the DefaultValue).
11340 2009-02-13 Geoff Norton <gnorton@novell.com>
11342 * media.cpp|h: Ensure we're comparing magics with unsigned values, and
11343 fix a logic bug that prevented us from proplery writing progressive pixbuf
11346 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
11348 * multiscaleimage.h (class MultiScaleImage): Rename the
11349 SubImageCollectionProperty to SubImagesProperty to match
11352 2009-02-13 Geoff Norton <gnorton@novell.com>
11354 * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
11356 * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
11357 does when running in the browser profile.
11359 2009-02-13 Alan McGovern <amcgovern@novell.com>
11361 * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
11362 than casting to a 64bit then 32bit value.
11364 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11366 * multiscaleimage.h|cpp: drop the friend here too
11368 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11370 * tilesource.h: drop the friends
11372 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11374 * Makefile.am: remove deepzoomimagetilesource.h from the
11375 include_headers. no one should code against it.
11377 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11379 * multiscaleimage.cpp:
11380 * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
11382 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11384 * multiscaleimage.cpp: timing macros
11386 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
11388 * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
11389 paint at once to avoid flickering.
11391 2009-02-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
11393 * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
11394 a crash when downloading mms streams (due to not having
11397 2009-02-12 Geoff Norton <gnorton@novell.com>
11399 * playlist.cpp: Ensure that we don't poke around in random memory
11400 if we have an invalid entry in our parser.
11402 2009-02-12 Alan McGovern <amcgovern@novell.com>
11404 * value.cpp: Add an assert in case the gchandle value is out
11407 2009-02-12 Alan McGovern <amcgovern@novell.com>
11409 * value.cpp: Fix compile error on x64 when casting a void* to
11412 2009-02-12 Alan McGovern <amcgovern@novell.com>
11414 * value.cpp: Managed objects are stored in native as
11415 GCHandles. Use the mono api to get the target of that
11416 GCHandle so that they can be compared correctly in
11417 value.cpp. Remove hack in ItemCollection.cs which worked
11420 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
11422 * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
11423 public, drop a friend.
11424 * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
11427 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
11429 * deepzoomtilesource.cpp: some g_ascii love
11431 2009-02-11 Chris Toshok <toshok@ximian.com>
11433 * text.h: Inline's fontsize default value is 11. looks like
11434 textblock is the only case where it differs.
11436 2009-02-11 Jeffrey Stedfast <fejj@novell.com>
11438 * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
11440 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
11441 blink timeout from the GtkSettings.
11442 (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
11443 things seem to have been debugged enough now.
11444 (TextBox::CursorLineBegin): New convenience method.
11445 (TextBox::CursorLineEnd): Same.
11446 (TextBox::OnMouseLeftButtonDown): Implemented double and
11447 triple-click. Capture mouse if single-click.
11448 (TextBox::OnMouseLeftButtonUp): Release mouse capture.
11449 (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
11450 beginning of the line.
11452 2009-02-11 Alan McGovern <amcgovern@novell.com>
11469 * mediaelement.cpp:
11470 * multiscaleimage.h:
11471 * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
11472 use the ::Render codepaths instead of it's own custom
11473 codepath. Added an extra parameter to ::Render () to specify
11474 whether or not the paths appended to the cairo_t should be
11475 filled/stroked/clipped. This allows a whole bunch of NUnit
11479 * frameworkelement.cpp: Add an extra parameter to ::Render ()
11480 to specify whether or not the paths appended to the cairo_t
11481 should be filled/stroked/clipped so it can be shared with
11482 the managed hittesting.
11483 Switch FindElementsInHostCoordinates to use the ::Render
11484 codepaths instead of it's own custom codepath. This allows a
11485 whole bunch of NUnit tests to pass.
11487 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
11518 * contentcontrol.h:
11519 * multiscaleimage.h:
11520 * frameworkelement.h:
11521 * dependencyobject.h:
11522 * multiscalesubimage.h:
11523 * dependencyproperty.g.cpp:
11524 * deepzoomimagetilesource.h: Make DP backing fields const.
11526 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
11545 * mediaelement.cpp:
11546 * contentcontrol.cpp:
11547 * dependencyobject.h:
11548 * multiscaleimage.cpp:
11549 * dependencyobject.cpp:
11550 * frameworkelement.cpp:
11551 * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
11552 dp and id fields private and add accessors.
11554 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
11606 * mediaelement.cpp:
11607 * contentcontrol.h:
11608 * multiscaleimage.h:
11609 * contentcontrol.cpp:
11610 * frameworkelement.h:
11611 * dependencyobject.h:
11612 * multiscaleimage.cpp:
11613 * dependencyproperty.h:
11614 * multiscalesubimage.h:
11615 * frameworkelement.cpp:
11616 * dependencyobject.cpp:
11617 * dependencyproperty.cpp:
11618 * dependencyproperty.g.cpp:
11619 * deepzoomimagetilesource.h:
11620 * deepzoomimagetilesource.cpp: Change our static
11621 DependencyProperty backing fields to store an integer id
11622 instead of an instance to a DependencyProperty. This way we
11623 can have true per-deployment dependency properties.
11625 2009-02-11 Alan McGovern <amcgovern@novell.com>
11632 * frameworkelement.cpp: Commit some more updates to the
11633 managed hittesting.
11635 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
11637 * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
11638 xchatitis in TextBox.
11640 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
11642 * fontfamily.h (struct FontFamily): Implemented != operator.
11644 * text.cpp (Inline::Equals): Fixed the fontfamily check.
11646 * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
11648 * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
11649 dispose autocreated values too.
11650 (DependencyObject::RemoveAllListeners): Same here.
11651 (DependencyObject::RegisterAllNamesRootedAt): And here.
11652 (DependencyObject::UnregisterAllNamesRootedAt): Here too.
11654 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
11656 * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
11657 GetSubtreeObject so that we can auto-create our Children property
11658 and set it if it hasn't already been set.
11660 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
11661 We need to clear the LocalProvider value as well, if there is
11662 one. Also, don't allow setting a Value* with a null
11663 DependencyObject if it is an autocreate property.
11664 (DependencyObject::ClearValue): Clear the LocalProvider value too.
11665 (DependencyObject::SetSurface): SetSurface on autocreated values too.
11667 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
11668 Now takes another bool arg to specify whether it is allowed to
11669 autocreate new DP values.
11670 (DependencyProperty::Register): Updated.
11671 (DependencyProperty::RegisterFull): Updated, now also takes an
11674 * provider.cpp (AutoCreatePropertyValueProvider): A new provider
11675 which sits below DefaultValue.
11677 * *.cpp (*::ctor): Remove calls to SetValue()
11679 * *.h: Added AutoCreateValue where appropriate.
11681 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
11683 * color.h: fabs is in math.h.
11685 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
11688 * list.cpp: Add a simple ArrayList implementation.
11693 * type-generated.cpp:
11694 * dependencyproperty.g.cpp: Regenerated.
11696 * dependencyproperty.h:
11697 * dependencyproperty.cpp: RegisterCustom: removed, no longer
11698 used anywhere. RegisterNull: incorporated into
11699 RegisterFull. Register[Full]: take another Types* argument
11700 so that the registration doesn't have to look it up in the
11701 deployment for every call (this way we can later register
11702 dependency properties in the Types ctor). Also move any
11703 logic from the individial Register overloads to
11704 RegisterFull, this way we don't have different logic
11705 depending on the overload.
11708 * type.h.in: Keep a list of all properties for all types on
11709 the Types* instance, and remove the custom properties (hash
11710 and list) on the Type* instance, keeping only one hash
11711 table for both native and custom properties.
11713 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
11720 * file-downloader.h: Only use G_BEGIN/END_DECLS around c
11721 methods (and in files with no c methods remove completely).
11723 2009-02-10 Jackson Harper <jackson@ximian.com>
11725 * xaml.h|cpp: New method for getting the key of an element
11727 - Pass the element instance data for the values to set property
11728 when we have one, otherwise pass NULL.
11730 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
11732 * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
11733 process: don't check if DPs have been created before
11736 2009-02-10 Alan McGovern <amcgovern@novell.com>
11738 * border.cpp: Corner rounding is now taken into account when
11739 hittesting a Border
11741 2009-02-10 Fernando Herrera <fherrera@novell.com>
11743 * value.cpp: Fix GetIsNull call casting in the copy
11746 2009-02-09 Chris Toshok <toshok@ximian.com>
11748 * value.cpp: call SetIsNull everywhere so we can always check
11751 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
11756 * frameworkelement.cpp: Three more of the NUnit tests are now
11757 passing for FindElementsInHostCoordinates
11759 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
11766 * frameworkelement.cpp: Commit some more of the hittest code.
11768 2009-02-09 Jeffrey Stedfast <fejj@novell.com>
11770 * type.h.in (class Types): Added a private static field to record
11771 whether or not the static DP's have already been registered.
11773 2009-02-09 Geoff Norton <gnorton@novell.com>
11775 * deployment.cpp: Support enabling coreclr for moonlight so we
11776 can start dogfooding this.
11778 2009-02-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
11780 * deployment.cpp: Remove redundant call to SetObjectType.
11782 2009-02-08 Chris Toshok <toshok@ximian.com>
11784 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11785 add inheritance of FrameworkElement::DataContextProperty.
11787 * frameworkelement.[cpp,h]: remove all the databinding stuff from
11788 here - it's all handled in managed code now.
11790 * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
11792 * cbinding.[cpp,h]: regen.
11794 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
11796 * xaml.cpp: Adjust lookup to find StaticResources defined in
11797 a ResourceDictionary. re-fix parsing of generic.xaml for the
11798 SL toolkit (unit tests)
11800 2009-02-07 Larry Ewing <lewing@novell.com>
11802 * border.cpp (Border::ArrangeOverride):
11803 * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
11806 * grid.cpp (Grid::MeasureOverride): distribute the allocation
11807 across auto dimensions when it makes sense.
11809 2009-02-07 Larry Ewing <lewing@novell.com>
11811 * grid.cpp (Grid::MeasureOverride): don't give our whole
11812 allocation to the first column.
11814 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
11816 * stylus.cpp: Committed a variation of Geoff patch to fix
11817 the crash when running moon-unit
11819 2009-02-07 Geoff Norton <gnorton@novell.com>
11821 * cbinding.cpp|h: Regenerate
11822 * deployment.cpp|h: API cleanup
11823 * downloader.cpp|h: Generate some code that doesn't need to be
11824 hand maintained. Clean up some API to prevent a crash when
11825 unregistering downloaders.
11827 2009-02-07 Geoff Norton <gnorton@novell.com>
11833 * size.h: Account for an epsilon when comparing these structures
11834 to avoid erroneously emitting false results.
11836 2009-02-07 Jeffrey Stedfast <fejj@novell.com>
11838 * text.cpp (TextBlock::GetTextInternal): Now takes an
11839 InlineCollection argument.
11840 (TextBlock::OnPropertyChanged): Pass args->new_value to
11841 GetTextInternal() so that we avoid unnecesary recursion in the
11842 case that we're being called as a result of a GetValue() of the
11844 (TextBlock::OnCollectionChanged): Updated.
11845 (TextBlock::OnCollectionItemChanged): Updated.
11847 2009-02-06 Larry Ewing <lewing@novell.com>
11849 * shape.cpp (Shape::ArrangeOverride): take alignment into account
11850 when Stretch == None.
11852 * media.cpp (Image::ArrangeOverride):
11853 * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
11854 into account when Stretch == None.
11856 * grid.cpp, grid.h: keep track of the automagical w/h make handle
11857 it properly when alignment is not stretch. Fixes leaf control
11858 placement on "the moment".
11860 2009-02-06 Larry Ewing <lewing@novell.com>
11864 * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
11866 * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
11868 * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
11871 2009-02-06 Larry Ewing <lewing@novell.com>
11873 * control.cpp (Control::Control): remove bad setting of
11876 2009-02-06 Jackson Harper <jackson@ximian.com>
11878 * xaml.cpp|h: Add a new method for retrieving the control template
11879 parent of a xaml element instance (called from unmanaged).
11880 - quick hack to force binding expressions to be parsed in managed.
11882 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11884 * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
11885 for *+/- and . to our Key enum needed for the DLR Console app.
11887 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11889 * Reverted previous commit as I goofed the unit test on
11890 Windows. Once I fixed it, the logic I worked so hard to achieve
11893 2009-02-06 Larry Ewing <lewing@novell.com>
11895 * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
11896 we are the toplevel.
11898 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
11900 See InkPresenter's ClearValue unit test
11902 1. Calling SetValue() in ctors was gross.
11903 2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
11904 3. it broke things if ClearValue was used and/or if the properties
11907 * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
11908 method to query for a default property value as used by the
11909 PropertyValueProviders.
11910 (DependencyObject::ReadLocalValue): Read the value directly from
11913 * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
11914 Call DependencyObject::GetDefaultValue() to try and get a default
11915 value. If successful, set it on the current_values hash table.
11917 * *.cpp: Fixed all classes that had ctors that called SetValue()
11918 to instead override GetDefaultValue().
11920 2009-02-06 Chris Toshok <toshok@ximian.com>
11922 * uielement.cpp (UIElement::SetSurface): if we have a subtree
11923 object (which is a UIElement), set its surface too. Fixes the
11924 ContentPresenter textblocks in ItemsControl.
11926 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11928 * deepzoomimagetilesource.cpp: set subimage width/height
11929 * multiscaleimage.cpp: do not download subimages .xml, we can work
11932 2009-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
11935 * cbinding.cpp: Regenerated.
11937 * dependencyobject.h:
11938 * dependencyobject.cpp:
11939 DependencyObject::ProviderValueChanged: Add a MoonError
11940 argument to be able to marshal managed exceptions through
11941 native code. ClearValue: Add a MoonError argument to match
11942 the signature of ProviderValueChanged.
11944 * dependencyproperty.h: Make NativePropertyChangedHandler
11945 take a MoonError argument to be able to marshal managed
11946 exceptions through native code.
11949 * error.cpp: Add a gchandle_ptr field to hold managed
11952 * frameworkelement.h:
11953 * frameworkelement.cpp: Update according to ClearValue
11956 * provider.cpp: Update according to ProviderValueChanged
11959 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11961 * morton-layout-table.inc: pre-computed table for Morton Layout
11964 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
11966 * multiscaleimage.cpp: fix the most annoying rendering issue for
11969 2009-02-06 Jackson Harper <jackson@ximian.com>
11971 * xaml.cpp: Store a list of resource dictionaries on the xaml
11972 context, so control templates can use these to lookup resources.
11973 Also go back to using the XamlElementInstance's for walking up the
11974 tree, this allows us to parse before parenting items.
11976 2009-02-05 Geoff Norton <gnorton@novell.com>
11978 * deepzoomimagetilesource.cpp|h: We don't want to download all of
11979 the sub images at creation time, so allow them to defer, otherwise
11980 we might fire off hundreds of downloaders at once.
11982 2009-02-05 Jackson Harper <jackson@ximian.com>
11984 * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
11987 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
11989 * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
11990 to be more consistent with the managed API.
11992 * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
11994 2009-02-05 Geoff Norton <gnorton@novell.com>
11996 * multiscaleimage.cpp|h: We must emit this event on the main thread
11998 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
12007 * frameworkelement.h:
12008 * frameworkelement.cpp: Create an unmanaged version of
12009 FindElementsInHostCoordinates
12011 2009-02-05 Geoff Norton <gnorton@novell.com>
12014 * dependencyproperty.g.cpp:
12015 * type-generated.cpp: Regenerate
12016 * collection.h: Generate bindings for the multiscalesubimage collection.
12017 * deepzoomimagetilesource.cpp: Trigger a download when we get our URI
12018 * multiscaleimage.cpp|h: Hide SubImages in a internal property until
12019 we can marshal collections as ReadOnly into managed automatically.
12020 Also emit the ImageOpenSucceeded event when we're done parsing.
12022 2009-02-05 Jackson Harper <jackson@ximian.com>
12024 * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
12025 So I've added an ignore_case flag that the parser can use.
12027 2009-02-05 Jackson Harper <jackson@ximian.com>
12029 * type.cpp: As far as I can tell, Type::Find does not need to be
12030 case sensitive. This fixes "Double" being found when we register
12033 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12035 Save some additional state for an optimization I'd like to do.
12037 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
12038 character offset for each TextLine.
12039 (TextLayout::LayoutNoWrap): Same.
12040 (TextLayout::LayoutWrap): Here too.
12042 2009-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
12044 * deployment.cpp: Fix typo.
12046 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
12048 * frameworkelement.cpp: Reverting r125649 as it's incorrect.
12050 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12052 * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
12053 ClearSelection() because we'll be syncing the SelectedText in
12054 SyncAndEmit() anyway.
12056 * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
12057 exit when inptr >= inend rather than when *inptr == 0.
12058 (TextLayout::GetCursorFromXY): Slightly improved.
12060 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
12062 * dependencyobject.cpp|h: Let GetLogicalParent optionally report
12063 a collection for it's parent. This is needed in some cases like
12064 a Style inside a ResourceDictionary that defines "{StaticResource..."
12065 that other Style needs (e.g. SL toolkit unit tests)
12066 * xaml.cpp: Adjust lookup to find StaticResources defined in
12067 a ResourceDictionary
12069 2009-02-05 Stephane Delcroix <sdelcroix@novell.com>
12071 * multiscaleimage.cpp: Renders subimages
12073 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12075 Memory Optimization:
12077 * textbox.cpp (append_runs): Updated. Also fixed a bug which would
12078 sometimes append empty TextRuns to the list.
12080 * text.cpp (TextBlock::Layout): Updated. No longer need to use the
12081 retarded TextRun linebreak ctor.
12083 * layout.cpp (TextRun): Changed TextRuns a bit, all members are
12084 now private but accessors have been added to get the values. Get
12085 rid of the crlf field and ctor params. We also no longer "strdup"
12086 for the ucs4 ctor since TextBox is the only consumer of that API
12087 and it is not constructed using a temp buffer.
12088 (TextSegment): Updated a bit for TextRun changes.
12089 (TextLayout): Updated for TextRun changes.
12091 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
12093 * style.cpp|h: Remove "style-hack" from SetterBaseCollection
12094 since that collection has no need to know about the style itself.
12095 Simplify the API a bit.
12096 * xaml.cpp: Introduce an hack for SetterBase tp workaround the
12097 fact that the current parser adds elements to the collections
12098 before setting their properties (and a SetterBase would seal
12099 itself when added to a collection).
12101 2009-02-05 Jb Evain <jbevain@novell.com>
12103 * propertypath.h: new type.
12104 * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
12105 * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
12106 * animation.h: change type of Storyboard.TargetPropertyProperty
12107 from string to PropertyPath.
12108 * animation.cpp: update accordingly.
12109 * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
12110 * dependecyproperty.cpp: update accordingly.
12111 * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
12113 2009-02-05 Jackson Harper <jackson@ximian.com>
12115 * xaml.cpp|h: Use the kind for getting content property names.
12117 2009-02-04 Chris Toshok <toshok@ximian.com>
12119 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12120 fix property inheritance to walk back up the tree (instead of just
12121 looking at the direct parent.) Also, we can't use the parent's
12122 kind directly, we have to use parent->Is().
12124 2009-02-04 Larry Ewing <lewing@novell.com>
12126 * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
12127 apply when the final value is not equal to the measured value.
12129 2009-02-04 Jackson Harper <jackson@ximian.com>
12131 * xaml.cpp|h: When setting properties pass in the
12132 XamlElementInstance.
12133 - Function so named items can be looked up from managed.
12134 * cbinding.cpp|h: regen.
12136 2009-02-04 Aaron Bockover <abockover@novell.com>
12138 * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
12139 bug where the blue channel was dropped in sc#r,g,b
12141 2009-02-04 Sebastien Pouliot <sebastien@ximian.com>
12143 * collection.cpp|h: Override AddWithError on UIElementCollection
12144 to return an error on duplicate elements
12146 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12148 * color.cpp (read_next_double): Use g_ascii_strtod().
12149 (color_from_str): Use g_ascii_strcasecmp().
12151 * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
12153 2009-02-04 Larry Ewing <lewing@novell.com>
12155 * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
12156 case we implement star columns in a matching manor.
12158 * mediaelement.cpp (MediaElement::Render): disable mediaelement
12159 pixel snapping for now, we'll deal with this at a higher level.
12161 2009-02-04 Chris Toshok <toshok@ximian.com>
12163 * type.cpp (type_is_dependency_object): no need to c&p the entire
12164 method, just call Type::IsSubclassOf with the kinds.
12166 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12168 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
12169 TimeManager's timeout functions instead of calling g_timeout_add()
12172 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12174 * multiscaleimage.cpp: prepare the rendering for subimages.
12176 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12178 * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
12180 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12182 * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
12185 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12187 * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
12188 to false. Get rid of maxlen state, it's not needed.
12189 (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
12190 class member variable.
12191 (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
12192 useful for mouse events too.
12193 (TextBox::KeyPressFreeze): Removed.
12194 (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
12195 true, get the cursor from the x,y coordinates and update the
12196 selection to be zero-length starting at the cursor position.
12197 (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
12198 (TextBox::OnMouseMove): If we are in the 'selecting' state,
12199 translate current mouse coordinates into a new cursor position and
12200 update selection start/length.
12201 (TextBoxView::GetCursorFromXY): New helper method.
12202 (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
12204 * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
12206 2009-02-04 Jackson Harper <jackson@ximian.com>
12208 * template.cpp|h: Add a function for creating xaml template
12211 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
12214 * audio-pulse.cpp: More SetCurrentDeployments.
12216 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
12218 * audio.cpp: One more SetCurrentDeployment.
12220 2009-02-04 Alan McGovern <amcgovern@novell.com>
12222 * frameworkelement.cpp: Fixed hit tests which didn't do what
12223 i meant them to do and added new tests. Panels should not
12224 swallow a click when hit testing, so we should never abort
12227 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12229 * multiscalesubimage.cpp: fix the source uri in the subimage
12230 ctor. the source for the subimage is now parsed.
12232 2009-02-04 Alan McGovern <amcgovern@novell.com>
12242 * type-generated.cpp: Hook up the managed hittesting code to
12243 the native hit testing code.
12245 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12247 * multiscaleimage.cpp: iterate the collection and not the GList
12250 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12252 * multiscalesubimage.h|cpp:
12253 * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
12254 so we can compute the UriSource based on parent's one
12256 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12258 * collection.cpp: MultiScaleSubImageCollection ctor
12260 2009-02-03 Larry Ewing <lewing@novell.com>
12262 * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
12263 the toplevel logic.
12265 * usercontrol.cpp: fix missing modification.
12267 2009-02-03 Larry Ewing <lewing@novell.com>
12269 * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
12270 clip by the margin.
12272 2009-02-03 Geoff Norton <gnorton@novell.com>
12274 * frameworkelement.cpp (Arrange): If we have a negative margin,
12275 it moves our layout slot, instead of clipping it, as such we need
12276 to adjust the clipping path accordingly in these cases to accomodate
12279 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12281 * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
12282 ReadOnly status afterall.
12283 (TextBoxView::OnModelChanged): Same.
12284 (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
12287 * control.h: Control's default FontSize is 11, not 14.666 like
12290 2009-02-03 Larry Ewing <lewing@novell.com>
12292 * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
12293 when we arrange. Fixes the rectangle bg on pdc.
12295 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12297 * textbox.cpp (TextBox::OnPropertyChanged): Set the default
12298 SelectionBackground and SelectionForeground brushes if
12299 SelectionLength gets to be >0.
12300 (TextBox::TextBox): Don't set them here. Initialize a new state
12301 variable, cursor_column to 0.
12302 (TextBox::CursorDown): Update cursor_column and fix some
12303 inconsistencies with Microsoft's logic. Renamed and c++'ified from
12305 (TextBox::CursorUp): Same idea here.
12306 (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
12307 (TextBox::CursorPrevWord): Same idea.
12308 (TextBox::KeyPress*Down): Save/Restore cursor_column state after
12309 updating SelectionStart/Length properties.
12310 (TextBox::KeyPress*Up): Same.
12311 (TextBox::KeyPressHome): We can set cursor_column to 0 here.
12312 (TextBox::OnPropertyChanged): If Text, SelectedText,
12313 SelectionStart or SelectionLength chanegs, we need to reset
12314 cursor_column to -1 (aka "unknown").
12316 2009-02-03 Larry Ewing <lewing@novell.com>
12318 * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
12319 and apply the finalsize adjustments to the existing values.
12320 Handle the empty row/col case specially.
12322 * usercontrol.cpp: revert accicdental diabling (for now).
12324 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12326 * textbox.cpp (TextBuffer::Replace): Do the right thing if length
12327 goes beyond the end of the buffer.
12328 (TextBuffer::Cut): Same.
12330 * layout.cpp (RenderSegment): Extend the selection line
12331 Silverlight's TextBox does if the selection crosses over the CRLF
12332 sequence at the end of a line.
12334 2009-02-03 Larry Ewing <lewing@novell.com>
12338 * frameworkelement.cpp: handle the specified size case as well.
12340 2009-02-03 Jb Evain <jbevain@novell.com>
12342 * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
12345 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12347 * textbox.cpp: Rewrote selection logic and vastly simplified
12348 cursor movement along the way.
12350 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12355 * dependencyproperty.h:
12356 * dependencyproperty.cpp: Remove the need for
12357 DependencyProperty to be a friend class of Type.
12359 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12361 * multiscalesubimage.h: DefaultValues for DPs.
12363 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12365 * deepzoomimagetilesource.h|cpp:
12366 * multiscaleimage.h|cpp:
12367 * multiscalesubimage.h|cpp: fill the subimages on MSI
12369 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
12371 * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
12372 because that was not part of the API before then (and it breaks
12375 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12379 * type.h.in: Type: don't make Types a friend class of Type.
12381 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12384 * animation.cpp: Remove animation_init, it's empty.
12386 * audio.cpp: We need to set the current deployment on the
12387 audio thread (but without touching mono at all).
12391 * type-generated.cpp:
12392 * dependencyproperty.g.cpp: Regenerated.
12394 * dependencyobject.h:
12395 * dependencyobject.cpp: Move object accounting and delayed
12396 unref handling to Deployment.
12398 * dependencyproperty.h: Remove DependencyProperty::Shutdown,
12401 * deployment.cpp: Add a SetCurrent overload which allows us
12402 to specify whether the current appdomain should be updated
12403 too. GetCurrent: Never access mono if the current domain is
12404 NULL. Move object tracking and delayed unrefs here.
12406 * deployment.h: Add a SetCurrent overload which allows us to
12407 specify whether the current appdomain should be updated
12408 too. Move object tracking and delayed unrefs here.
12410 * runtime.cpp: Move object tracking reports to Deployment.
12411 Remove unnecessary static init and shutdown methods.
12415 * type.h.in: Completely remove all static Type
12416 initialization, we now rely on the Types* on the current
12419 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
12421 * style.cpp: Remove extra logic and comment the main "bad" hack
12422 still required not to cause regressions. Affected test cases
12423 will marked as known issues until the XAML parser issue (which
12424 is adding elements to collections before setting their properties)
12427 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12429 * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
12431 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12433 * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
12434 destruction the name might not be available anymore, so
12435 loop over the entire hash tables looking for the object to
12436 remove instead of trying to lookup with a null key. Fixes a
12437 crash while running moon-unit.
12439 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12441 * xaml.cpp: Use property accessors on Type instead of
12442 accessing the fields.
12444 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12447 * runtime.h|runtime.cpp: new LOG_MSI macro.
12449 2009-02-03 Fernando Herrera <fherrera@novell.com>
12452 * runtime.h: Move moonlight_flags and runtime_flags to 64bits
12453 as we reached the 32bits limit for debug.
12455 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12457 * deepzoomimagetilesource.h|cpp: Parse Collections.
12459 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12461 * deepzoomimagetilesource.h|cpp: data structures to parse
12462 DZ images with subimages. Move the common parts of both ctors
12465 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12468 * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
12469 some methods and fields to the private section.
12471 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
12473 * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
12475 2009-02-02 Chris Toshok <toshok@ximian.com>
12477 * popup.h, popup.cpp: this inherits from FrameworkElement, not
12480 * dependencyobject.cpp (dispose_value): this method is doing *way*
12481 too much. we can't just blindly dispose of our values. they
12482 could be shared across multiple elements. don't even unref them
12483 here, as deleting the value does that.
12485 * type-generated.cpp: regen.
12487 2009-02-02 Larry Ewing <lewing@novell.com>
12489 * mediaelement.cpp:
12490 * media.cpp (Image::UpdateSize): update horrible hacks that are
12491 used when we are part of canvas until they can be removed
12494 2009-02-02 Larry Ewing <lewing@novell.com>
12496 2009-02-02 Chris Toshok <toshok@ximian.com>
12498 * enums.cpp (keyboard_navigation_mode_map): add
12499 (initialize_enums): add TabNavigation property handling, mapping
12500 to keyboard_navigation_mode_map.
12502 2009-02-02 Geoff Norton <gnorton@novell.com>
12505 * xaml.cpp: Inject ImageSource underneath BitmapImage so that
12506 custom xaml that attaches a ImageSource can work. Every
12507 ImageSource is a BitmapImage in SL2
12508 * type-generated.cpp:
12512 2009-02-02 Larry Ewing <lewing@novell.com>
12516 * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
12517 stretch back out to finalsize in the stretch case.
12519 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
12521 * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
12522 int because, duh, the range is -2 to 1, not 0 to 3 and so
12523 TextLine::crlf was being set to -2 instead of 2.
12524 (TextLayout::GetCursor): A minor tweak to get things to work if
12525 the cursor is right after the last char which is a \r.
12527 * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
12529 (move_down): Need to use a loop when advancing back to the
12530 previous column so we don't go beyond EOL.
12531 (move_up): Same, but more fixes as well.
12533 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
12535 * textbox.cpp: Moved all event handling back to TextBox since
12536 that's the focusable element.
12538 * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
12539 first Control subclass that we can focus.
12541 2009-02-02 Sebastien Pouliot <sebastien@ximian.com>
12543 * dependencyproperty.g.cpp:Regenerated
12544 * style.cpp|h: Use validators on Setter instead of overriding
12545 SetValueWithErrorImpl on SetterBase
12546 * validators.cpp|h: Addvalidator for checking sealed Setter
12548 2009-02-02 Larry Ewing <lewing@novell.com>
12550 * border.cpp (Border::Render): don't fill the whole are with the
12551 border brush only fill the BorderThickness.
12553 2009-02-02 Larry Ewing <lewing@novell.com>
12555 * textbox.cpp, textbox.h: first pass at implementing arrange and
12558 * text.cpp: request with padding too.
12560 2009-02-02 Chris Toshok <toshok@ximian.com>
12562 * textbox.h (class TextBox): store the contentElement as an
12563 instance field so we can update it in OnPropertyChanged.
12565 * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
12566 disgusting, and *SHOULD* be handled in the textbox template, but
12567 we can't handle it in ours in case people replace it. if the
12568 ContentElement template child has DP's named
12569 VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
12570 them based on the value of ours.
12571 (TextBox::OnPropertyChanged): handle property changes on our
12572 VerticalScrollBarVisibility/HorizontalScrollBarVisibility
12573 properties by proxying them to our contentElement.
12575 2009-02-02 Alan McGovern <amcgovern@novell.com>
12578 * bitmapimage.cpp: Image.Source defaults to a BitmapImage
12579 with a uri of string.empty.
12581 2009-02-02 Chris Toshok <toshok@ximian.com>
12583 * rect.h (struct Rect): we can be Grown by a negative amount. make
12584 sure we don't drop below 0 on width/height, since everything blows
12587 2009-02-02 Alan McGovern <amcgovern@novell.com>
12590 * dependencyproperty.g.cpp: The default value for
12591 Bitmap.ImageSource is an empty string.
12593 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
12595 * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
12596 events when the selection or text changes. TextBoxView cannot
12597 depend on getting those events if things are changed
12599 (TextBox::KeyPressThaw): Don't ever bother with emitting
12600 ModelChanged events here, they'll be emitted in
12601 OnPropertyChanged(), now.
12602 (TextBoxView): We no longer listen to TextChanged or
12603 SelectionChanged events.
12604 (TextBoxView::ResetCursorBlink): New method to do all of the
12605 proper state checking to see if the cursor should be rendered
12606 which calls the appropriate Begin/Delay/EndCursorBlink() method.
12607 (TextBoxView::OnModelChanged): Updated to handle Text and
12608 Selection changes. Dropped CursorPosition because it is no longer
12610 (TextBoxView::OnFocusIn): Set focused to true before calling
12611 ResetCursorBlink().
12612 (append_runs): Don't forget to append the LineBreak to the Runs
12614 (TextBoxView::SetTextBox): Need to sync some additional state.
12616 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
12618 * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
12619 already be in one, and DrainUnrefs isn't recursive anymore.
12621 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
12623 * src.mdp: Updated to use new MD features (ChangeLog and log
12626 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
12628 * deepzoomimagetilesource.h|cpp: add a parsed_callback.
12629 * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
12632 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
12634 * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
12635 in GetTileLayer for missing tiles.
12637 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
12639 * multiscaleimage.cpp: render lower layer if the current layer
12640 contains NULL tiles.
12642 2009-02-02 Chris Toshok <toshok@ximian.com>
12644 * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
12645 correct apparent c&p error.
12647 2009-02-01 Larry Ewing <lewing@novell.com>
12649 * control.cpp, control.h:
12650 * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
12651 MeasureOverride here from control where they are only used for
12654 2009-02-01 Larry Ewing <lewing@novell.com>
12656 * thickness.cpp (Thickness::FromStr):
12657 * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
12658 that will cause the rest to be filled with 0. Fixes parsing of
12659 single value entries.
12661 * frameworkelement.cpp: arrange based on the adjusted rect.
12663 2009-02-01 Chris Toshok <toshok@ximian.com>
12665 * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
12666 the ApplyTemplate gunk here, as the template doesn't change when
12667 our content does - the ContentPresenter in our control template
12668 will changed based on our content.
12670 * xaml.cpp (dependency_object_set_attributes):
12671 handle_xaml_markup_extension has three possible return states.
12672 "Need SetValue", "Don't SetValue", and "Error". the bool return
12673 value is the first two (true == need_setvalue), and p->error_args
12674 determines the last one.
12675 (handle_xaml_markup_extension): add a comment detailing the
12676 need_setvalue return value, and make the return values consistent.
12677 TemplateBindings are weird in that they don't (for now) set a
12678 value, but require that we don't continue on with the set value
12679 machinery in dependency_object_set_attributes.
12681 Also, the TemplateBinding handling in the case of
12682 Property1={TemplateBinding Property2} was attaching things such
12683 that updates to source.Property1 would update target.Property2.
12684 This is exactly backward - it should have been source.Property2 =>
12685 target.Property1. We got lucky in a vast number of instances
12686 because the property names were the same.
12688 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
12690 * style.cpp: Revert first part (always seal) of last patch due to
12693 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
12695 * style.cpp: Always seal setters when added to collection (unit
12696 tested) and unrelated to style (which may not be assigned, SIGSEGV)
12698 2009-01-31 Geoff Norton <gnorton@novell.com>
12700 * animation.cpp: Its possible for a Storyboard to have TargetName
12701 and TargetProperty set, but be unresolvable, and still use a parent
12702 manual target (See Axelerate3D).
12704 2009-01-31 Chris Toshok <toshok@ximian.com>
12706 * collection.h, collection.cpp (class UIElementCollection):
12707 UIElements can be reparented logical parent-wise, but can't have
12708 more than one *visual* parent.
12710 2009-01-31 Larry Ewing <lewing@novell.com>
12714 * frameworkelement.cpp: rather than trying to fix the rendering
12715 fix the layout_xform to handle margins automatically.
12717 2009-01-31 Larry Ewing <lewing@novell.com>
12719 * border.cpp (Border::Render): try to match the interior
12720 CornerRound behavior a littler closer.
12722 2009-01-31 Larry Ewing <lewing@novell.com>
12724 * rect.cpp (Rect::Draw): fix typo in rect drawing.
12726 2009-01-31 Larry Ewing <lewing@novell.com>
12728 * cornerradius.h: add == and != overloads.
12730 * uielement.cpp: don't include the layout clip if we are
12731 tranforming the bounds. The layout clip only applies to local
12734 * border.cpp: restore the graphics context after clipping.
12736 2009-01-31 Larry Ewing <lewing@novell.com>
12738 * rect.cpp, rect.h: move the rounded drawing here for now until
12739 there is a better place.
12741 * border.cpp: start drawing the borderbrush and using border
12744 2009-01-31 Larry Ewing <lewing@novell.com>
12746 control.cpp: fix arranged size with border thickness or padding.
12748 border.cpp: fix arranged size with border thickness or
12749 padding. fix rendering with margins.
12751 panel.cpp: fix rendering with a margin.
12753 2009-01-31 Larry Ewing <lewing@novell.com>
12755 * border.cpp (Border::Render): add corner radius rendering logic
12758 2009-01-31 Stephane Delcroix <sdelcroix@novell.com>
12760 * multiscaleimage.h|cpp: ensure there's only one downloader running,
12761 fixes the issue where wrong images were cached.
12763 2009-01-31 Sebastien Pouliot <sebastien@ximian.com>
12765 * contentcontrol.h: Add @CallInitialize so the event gets
12766 registred (in the managed side) and we can now track content
12769 2009-01-30 Geoff Norton <gnorton@novell.com>
12771 * textbox.cpp: FontFamily is now a FontFamily not a string.
12773 2009-01-30 Chris Toshok <toshok@ximian.com>
12775 * xaml.cpp: fix ResourceDictionary once and for all.
12777 2009-01-30 Geoff Norton <gnorton@novell.com>
12779 * deployment.cpp|h: Ensure that any downloaders that might
12780 call back into managed land are aborted before we throw out the
12782 * downloader.cpp|h: Add a nice interface to DownloaderRequest
12783 and DownloaderResponse to save some code duplication in deployment
12785 2009-01-30 Geoff Norton <gnorton@novell.com>
12787 * mediaelement.cpp: If we finish downloading before we can
12788 fill the buffer, we still need to emit this event.
12790 2009-01-30 Chris Toshok <toshok@ximian.com>
12792 * usercontrol.h (class UserControl): make managed access to
12793 ContentProperty protected internal, not just protected.
12795 * dependencyobject.h (class DependencyObject): generate a
12796 cbinding/pinvoke for SetLogicalParent.
12798 * cbinding.h, cbinding.cpp: regen.
12800 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12802 * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
12803 SelectionStart/Length.
12805 2009-01-30 Geoff Norton <gnorton@novell.com>
12807 * runtime.cpp: Let managed code change the fullscreen state.
12808 * cbinding.cpp|h: Regenerate
12810 2009-01-30 Chris Toshok <toshok@ximian.com>
12812 * xaml.cpp (dependency_object_set_property): remove the ugly
12813 assumption - we know if the property type is managed now.
12815 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12817 * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
12818 state rather than returning a changed mask. Also modified to treat
12819 selection.start as the cursor position when selection.length is
12820 0. Otherwise refer to the cursor state to figure out which end of
12821 the selection the cursor is at (for growing/shrinking).
12822 (TextBox::KeyPressFreeze): Reset 'emit' state.
12823 (TextBox::KeyPressThaw): Sync and then emit our changed events.
12824 (TextBox::OnPropertyChanged): Updated for ClearSelection() API
12826 (TextBox::ClearSelection): Now takes a 'start' argument to set
12827 SelectionStart to (e.g. cursor position).
12828 (TextBox::Select): Now longer needs to do a freeze/thaw.
12829 (TextBoxView::OnKeyDown): Updated.
12831 2009-01-30 Chris Toshok <toshok@ximian.com>
12833 * control.h, control.cpp: same story with InsideObject.
12835 2009-01-30 Chris Toshok <toshok@ximian.com>
12837 * control.h, control.cpp: remove Control::Render. handling of the
12838 background property is left to a templatebinding in the visual
12839 tree of the applied template.
12841 2009-01-30 Chris Toshok <toshok@ximian.com>
12843 * provider.cpp (StylePropertyValueProvider::SealStyle): call
12844 ProviderValueChanged on all values in the style so the object can
12845 do things with them.
12847 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
12848 a comment about SealStyle calling ProviderValueChanged.
12850 2009-01-30 Chris Toshok <toshok@ximian.com>
12852 * xaml.cpp: when parsing multiple buffers (as we do when hydrating
12853 from a template), we need to keep track of the total offset from
12854 the start of all buffers, since XML_GetCurrentByteIndex returns a
12855 value with that range, it's not the byte index into the current
12856 buffer (unless there's only 1). Fixes templates stored inside of
12859 2009-01-30 Andreia Gaita <avidigal@novell.com>
12861 * clock.cpp: no use stopping if it's already stopped
12863 2009-01-30 Andreia Gaita <avidigal@novell.com>
12865 * clock.cpp: reset the state flags as well
12867 2009-01-30 Larry Ewing <lewing@novell.com>
12869 * text.cpp (TextBlock::Render): Start taking padding into account
12870 and limit the max size to actual not to the arranged value.
12872 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
12874 * textbox.h (TextBox::GetCursor): Cursor position is aka
12877 * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
12878 (TextBox::Thaw): Decrement freeze count and emit events when we
12880 (TextBox::OnPropertyChanged): When SelectionStartProperty or
12881 SelectionLengthProperty change, call SyncSelectedText(). Fixed the
12882 selection.start/cursor positioning logic when TextProperty or
12883 SelectedTextProperty changes.
12884 (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
12887 2009-01-30 Larry Ewing <lewing@novell.com>
12889 * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
12892 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
12894 * frameworkelement.cpp: Make sure bounds_with_children is always
12895 initialized before being used.
12897 2009-01-30 Geoff Norton <gnorton@novell.com>
12899 * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
12900 media. Fixes the thumber moving on PDC player.
12902 2009-01-30 Jackson Harper <jackson@ximian.com>
12904 * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
12905 about them being legal if they are equal.
12907 2009-01-30 Larry Ewing <lewing@novell.com>
12909 * grid.cpp (Grid::ArrangeOverride): hack around spans in
12910 rebuilding the table until we understand them better.
12912 2009-01-30 Larry Ewing <lewing@novell.com>
12914 * frameworkelement.cpp:
12916 * control.cpp (Control::ArrangeOverride): use alignment properly
12917 in these places as well
12919 2009-01-30 Larry Ewing <lewing@novell.com>
12921 * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
12922 the alignment here.
12924 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12926 * multiscaleimage.cpp: load png too
12928 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12930 * multiscaleimage.cpp: change the vporigin to relative coords
12932 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12934 * dependencyobject.cpp: EventObject::unref: don't try to get the
12935 typename if there's no deployment around.
12937 * pipeline.cpp: Media::Shutdown: set the current deployment before
12938 looping over each media.
12940 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12942 * deployment.cpp: Remove dead code.
12944 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12946 * downloader.cpp: Downloader::Write: update current deployment.
12948 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12955 * mediaelement.cpp:
12956 * pipeline-asf.cpp:
12957 * mms-downloader.cpp:
12958 * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
12960 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12962 * deployment.cpp: Comment out log spammer.
12964 * runtime.cpp: Add some sanity checks.
12966 * dependencyobject.cpp: Set current deployment for delayed unrefs too.
12968 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12970 * deepzoomimagetilesource.cpp: normalize ViewportWidth
12972 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
12974 * cbinding.cpp|h: Regenerated
12975 * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
12976 * rect.h: Add new ctor so the generator code can work
12978 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
12980 * tilesource.h|cpp:
12981 * deepzoomimagetilesource.h|cpp:
12982 * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
12983 implement the DZ parser in native code.
12985 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12987 * mediaplayer.cpp: MediaPlayer: Set object type correctly.
12989 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12991 * deployment.cpp: Allow setting the current deployment to NULL.
12993 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
12995 * mediaelement.cpp: Handle MediaElementStateIndividualizing and
12996 AcquiringLicense in all switch statements to fix gcc warnings.
12998 2009-01-30 Geoff Norton <gnorton@novell.com>
13000 * debug.cpp: Use the proper headers here, we need them anyways.
13001 * window.h: Store the deployment we were created in.
13002 * window-gtk.cpp: Ensure we set our deployment before starting
13003 to call into our heirarchy.
13005 2009-01-30 Jb Evain <jbevain@novell.com>
13007 * deployment.h: make Deployment::Surface DP internal.
13009 2009-01-29 Geoff Norton <gnorton@novell.com>
13011 * deployment.h: Surface is now a DP on the deployment so we
13012 can share it with managed.
13013 * dependencyproperty.g.cpp: Regen
13014 * clock.cpp: Get the surface of the Deployment we're in so that
13015 clocks from Dispatcher timer end up on the right surface.
13017 2009-01-29 Geoff Norton <gnorton@novell.com>
13019 * deployment.cpp: Trust the domain over the TLS slot since mono
13020 will switch that on us on any thread really.
13022 2009-01-29 Geoff Norton <gnorton@novell.com>
13024 * clock.cpp|h: Ensure that we set the correct deployment from the
13025 clock ticks before traversing back into our heirarchy.
13027 2009-01-29 Jackson Harper <jackson@ximian.com>
13029 * xaml.cpp: Add support for the primitive types in mscorlib. This
13030 will get properly formed strings, doubles, and int32s working for
13031 now, we don't handle the oddities of the SL parsing properly yet
13034 2009-01-29 Jackson Harper <jackson@ximian.com>
13036 * type-generated.cpp: regen
13038 2009-01-29 Larry Ewing <lewing@novell.com>
13040 * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
13043 * grid.cpp: unref the dummy columns we create here.
13045 2009-01-29 Jeffrey Stedfast <fejj@novell.com>
13047 * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
13049 * textbox.h: Shuffle some internal accessors/events around.
13051 2009-01-29 Larry Ewing <lewing@novell.com>
13053 * text.cpp, text.h: implement basic layout size rules and strip
13054 the custom actual* properties. Still a hack but passable for now.
13058 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13061 * runtime.cpp: Surface: Implement Dispose and call Dispose on the
13062 toplevel object. PaintToDrawable: Update current deployment.
13064 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13066 * uielement.cpp: Dispose: add a null-check, and only walk the visual
13067 tree if we haven't been disposed already.
13069 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13072 * namescope.cpp: Namespace: Implement Dispose and remove all entries
13073 from our names hash table there.
13075 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13077 * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
13078 on upon destruction.
13080 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13082 * dependencyobject.h:
13083 * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
13084 Deployment::Current. Emit DestroyedEvent in Dispose instead of the
13087 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13090 * mediaelement.cpp: Implement Dispose and put most of the cleanup there
13091 instead of in the dtor. media_element_advance_frame: we need to set
13092 the current deployment here.
13094 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13096 * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
13097 pre-chain. Set array's size to 0 after deleting all the values.
13099 * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
13100 one media thread per Media object, there's no need to set the current
13101 deployment for each work node, just set it at thread start.
13102 MediaClosure::SetContext: fix refcounting bug.
13104 * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
13106 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13109 * deployment.cpp: Deployment: Enable support managed stackframes after
13110 initializing mono. Implement Dispose, and upon destruction set
13111 current application to NULL.
13113 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13115 * tilesource.h|cpp: image size is long
13117 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13119 * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
13121 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13123 * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
13124 logical is [0,1],[0,1]
13126 2009-01-28 Larry Ewing <lewing@novell.com>
13128 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
13129 it might help to actually measure things, so do that... *sigh*
13131 2009-01-28 Larry Ewing <lewing@novell.com>
13133 * shape.cpp (Shape::ComputeStretchBounds): remove the old
13134 width/height short circuiting when one or the other of
13135 width/height was not set simply use the lyaout clip when it is
13136 around. Might need a little more work but it is definitely
13139 2009-01-28 Larry Ewing <lewing@novell.com>
13141 * frameworkelement.cpp, frameworkelement.h: layout and arrange
13142 children if there are any. set IsLayoutContainer to true if we
13145 2009-01-28 Larry Ewing <lewing@novell.com>
13147 * frameworkelement.cpp (FrameworkElement::HitTest): move the
13148 majority of the hit test logic here. Now we only walk the
13149 children once and we only call InsideObject when we must.
13150 InsideObject now only checks the local object subtree is handled
13153 * panel.cpp, panel.h:
13154 * control.cpp, control.h:
13155 * border.cpp, border.h:
13156 * text.cpp, text.h: remove the old HitTest and rework InsideObject
13159 * uielement.cpp: make InsideClip potentially a little faster.
13161 2009-01-28 Larry Ewing <lewing@novell.com>
13163 * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
13168 * canvas.cpp: skip invisible elements.
13170 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13172 * textbox.cpp (TextBoxView::Layout): We need to break the text
13173 apart by lines so that the TextLayout engine can handle them
13176 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
13177 over to line->crlf for each LineBreak.
13178 (TextLayout::GetCursor): Need to keep track of the line-ending
13179 character sequences as well.
13181 * layout.h (TextRun::IsLineBreak): New method to check if the run
13182 represents a LineBreak, cleaner than manually checking for text ==
13184 (TextRun::ctor): LineBreak version now takes a crlf argument to
13185 specify which line ending sequence it is.
13187 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13189 * textbox.cpp (move_down): Fixed to handle any line-ending.
13193 (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
13195 (TextBox::KeyPressDelete): Same.
13196 (TextBox::KeyPressHome): Same.
13197 (TextBox::KeyPressEnd): Same.
13198 (TextBox::KeyPressRight): Same.
13199 (TextBox::KeyPressLeft): Same.
13200 (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
13201 inserts a \r character, not a \n, nor a \r\n.
13203 * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
13205 (TextBlock::SetTextInternal): Canonicalize line endings in our
13208 * layout.cpp (TextRun::TextRun): Don't worry about line endings...
13210 2009-01-28 Jackson Harper <jackson@ximian.com>
13212 * xaml.cpp: Fix logic for setting name and key on
13213 storyboards. Rules are:
13214 1. You can set both if you set the name before the key
13215 2. You can set both if both values are equal
13217 2009-01-28 Chris Toshok <toshok@ximian.com>
13219 * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
13220 DependencyObjectCollection::AddedToCollection.
13221 (SetterBaseCollection::RemovedFromCollection): chain up to
13222 DependencyObjectCollection::RemovedFromCollection.
13224 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
13226 * dependencyproperty.g.cpp: Regenerated
13227 * enums.cpp|h: Add MediaElementState
13228 * playlist.cpp: Use new MediaElementState enum
13229 * mediaelement.cpp|h: Use new MediaElementState enum
13231 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13233 * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
13235 2009-01-27 Larry Ewing <lewing@novell.com>
13237 * grid.cpp: limit the reduction in size to zero.
13239 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13242 * dependencyobject.cpp: Fix building with object tracking.
13244 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13246 * debug.h: Surround logging macros with #if LOGGING instead of #if
13249 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13251 * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
13252 header, it's not used anywhere but in this file.
13254 * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
13255 configure time now.
13257 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13259 * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
13261 (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
13263 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13265 * uielement.h: Make Dispose public.
13267 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13269 * codec-version.h.in:
13270 * dependencyobject.h:
13271 * dependencyobject.cpp: EventObject: Make the flags field an gint32
13272 field (to keep size consistent), put the flags at the upper bits and
13273 use the remaining lower bits for the object id. This requires a codec
13276 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13278 * dependencyobject.cpp: Use bitfields correctly.
13280 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
13282 * text.cpp: FontFamily can be NULL so we can't just access its
13283 source field without a check. Fix SIGSEGV when running moon-unit.
13284 * value.cpp: FontFamily is not a (managed) struct so it can have
13285 a NULL value. Fix SIGSEGV when creating a Value out of a NULL
13286 FontFamily in moon-unit.
13288 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13291 * type-generated.cpp: Regenerated.
13293 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13299 * type-generated.cpp: Regenerated.
13301 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13307 * audio-pulse.cpp: Don't register any audio threads, they may interact
13308 badly with the gc and deadlock. Audio threads shouldn't be doing
13309 anything which requires the current deployment to be set anyway.
13311 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13314 * pipeline.cpp: AudioStream: call SetObjectType.
13316 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13318 * dependencyobject.h:
13319 * dependencyobject.cpp: Add an EventObject ctor overload which takes a
13320 Type::Kind. In EventObject::ref don't warn about inexistent
13321 deployments for audio objects.
13323 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13325 * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
13327 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13333 * audio-pulse.cpp: Every AudioSource already has deployment set (since
13334 they inherit from EventObject), use that to set the current
13337 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13339 * src.mdp: Updated.
13341 2009-01-27 Chris Toshok <toshok@ximian.com>
13343 * pipeline.cpp: include codec-version.h
13345 * pipeline-ui.cpp: same.
13347 * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
13350 * codec-version.h.in: new file. update the
13351 MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
13353 2009-01-27 Larry Ewing <lewing@novell.com>
13355 * mediaelement.cpp (MediaElement::MeasureOverride): correct
13358 2009-01-27 Larry Ewing <lewing@novell.com>
13360 * frameworkelement.cpp, frameworkelement.h: move generic
13361 bounds_with_children computation here for now. Make
13362 GetSubtreeBounds return bounds or bounds_with_children based on
13363 having children. Start setting the layout clip in arrange (it will
13364 probably move later). Rework the layout_xform logic slightly.
13366 * uielement.cpp: remove the generic render warning, it is ok not
13367 to override here if there is nothing local you need to draw. When
13368 intersecting bounds with the clip path take the layout clip into
13371 * text.cpp: update for bounds changes. Don't recompute the
13372 natural bounds every pass.
13374 * mediaelement.cpp, mediaelement.h:
13375 * media.cpp, media.h: rework arrange and measure to match shape.
13376 Remove overridden bounds logic since it is no longer needed. Only
13377 use the odd width/height setting logic when we aren're part of a
13378 layout tree. Use the layout clip when drawing.
13380 * shape.cpp: clean up the bounds logic. Use the layout clip when
13383 * control.cpp, control.h:
13384 * border.cpp, border.h: use the layout clip when rendering, remove
13385 overrides for bounds now that fe handles them.
13388 2009-01-27 Chris Toshok <toshok@ximian.com>
13390 * Makefile.am (libmoon_include_headers): add fontfamily.h
13392 * fontfamily.h: add struct.
13394 * control.h, text.h: FontFamilyProperty is of type FontFamily now.
13396 * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
13399 * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
13402 * value.h.in (struct Value): add FontFamily and guint32 cases.
13404 * xaml.cpp (value_from_str): add case for FONTFAMILY.
13406 * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
13408 2009-01-27 Geoff Norton <gnorton@novell.com>
13410 * audio-pulse.cpp|h: Use the Deployment sourced from the player
13411 * dependencyobject.cpp: Fix the warning to not use triple not
13413 * deployment.cpp: If we find the deployment from the domain,
13414 put it in the tls slot to make future lookups use the fast-path.
13416 2009-01-27 Jeffrey Stedfast <fejj@novell.com>
13418 * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
13419 events anymore. Instead of having a bool 'emit' flag, use
13420 something closer to gtk's freeze_count.
13421 (TextBox::OnKeyDown): Moved to TextBoxView.
13422 (TextBox::OnKeyUp): Same.
13423 (TextBox::SelectAll): Now returns bool to specify if the selection
13425 (TextBox::PreKeyPress): Freeze event emission for our state
13427 (TextBox::PostKeyPress): Thaw them and emit the events.
13428 (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
13429 textbox->PreKeyPress() and after processing, call
13430 textbox->PostKeyPress().
13432 2009-01-27 Jackson Harper <jackson@ximian.com>
13434 * value.cpp: unmarshall fonts properly.
13436 2009-01-27 Geoff Norton <gnorton@novell.com>
13438 * dependencyobject.cpp|h:
13439 * mediaplayer.cpp: Remove the stupidity from my last commit.
13440 * audio.cpp: We're in the right thread and Deployment here, use
13441 Deployment::GetCurrent().
13443 2009-01-27 Geoff Norton <gnorton@novell.com>
13445 * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
13446 the deployment on a EO.
13447 * deployment.cpp: Add some more logging.
13448 * mediaplayer.cpp: Inherit our Deployment from the MediaElement
13451 2009-01-27 Geoff Norton <gnorton@novell.com>
13454 * audio-pulse.cpp: Register the worker-thread's with mono and set our
13455 deployment correctly.
13456 * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
13457 around so that our audio-players can register the thread with mono.
13459 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13461 * pipeline.cpp: WorkerLoop: set the current deployment for every work
13465 * deployment.cpp: Add RegisterThread.
13467 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13469 * deployment.cpp: Deployment: Add some logging, fix indentation and call
13470 the DependencyObject ctor which takes a Deployment instead of the
13473 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13475 * dependencyobject.h:
13476 * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
13477 take a Deployment*, and an Initialize method which is called by both
13478 ctors of each type.
13480 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13482 * deployment.h: Initialize doesn't need cbinding/pinvoke.
13484 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13486 * debug.h: Add LOG_DEPLOYMENT.
13489 * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
13492 2009-01-27 Geoff Norton <gnorton@novell.com>
13494 * deployment.cpp|h: Lock our access to the hash. Remove a SetCurrent()
13495 instance since its just sugar and cant be bound anyways.
13497 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13499 * dependencyobject.h:
13500 * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
13502 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13504 * dependencyobject.h:
13505 * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
13507 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13509 * collection.cpp: Collection::Dispose: Call base class Dispose too.
13511 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
13553 * contentcontrol.h:
13554 * multiscaleimage.h:
13555 * dependencyobject.h:
13556 * type-generated.cpp:
13557 * frameworkelement.h:
13558 * multiscalesubimage.h:
13559 * deepzoomimagetilesource.h: Include all types derived from EventObject
13560 in the type system and remove the IncludeInKinds annotations from
13563 2009-01-27 Chris Toshok <toshok@ximian.com>
13565 * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
13566 add the "XamlElementInstance* value" overload. part of axelerate
13568 (XamlElementInfoManaged::GetContentProperty): pass
13569 obj->AsDependencyObject() to GetContentPropertyName, instead of
13570 obj (which is a Value*).
13572 2009-01-26 Chris Toshok <toshok@ximian.com>
13574 * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
13575 some behavior with x:Key/x:Name only happens when the element is a
13576 child of a ResourceDictionary.
13578 2009-01-26 Larry Ewing <lewing@novell.com>
13580 * grid.cpp: rework proportional contribution of auto columns.
13582 * uielement.cpp: remove the slot logic from the transform here we
13583 will compute it in arrange.
13585 2009-01-26 Larry Ewing <lewing@novell.com>
13587 * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
13590 2009-01-26 Geoff Norton <gnorton@novell.com>
13592 * deployment.cpp: Cleanup our usage of hash a bit to avoid some
13593 senseless compare/branches.
13595 2009-01-26 Larry Ewing <lewing@novell.com>
13597 * shape.cpp (Shape::Clip): hack back in shape clipping until the
13598 layout clip logic fixed.
13600 2009-01-26 Geoff Norton <gnorton@novell.com>
13602 * deployment.cpp: Remove a useless null guard now that we have
13603 Deployment::Initialize. Don't rudely nuke the TLS slot we might not
13606 2009-01-26 Geoff Norton <gnorton@novell.com>
13608 * deployment.cpp|h: Deployment now does all the domain book keeping
13609 for us, so that calls to GetCurrent will return the Deployment for
13610 the appropriate context, it will also set the MonoDomain* appropriately
13613 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
13615 * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
13617 (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
13618 TextProperty from reentrancy.
13619 (TextBox::EmitSelectionChanged): Update the value before emitting
13620 the event, this way we don't need the dynamic provider.
13621 (TextBox::EmitTextChanged): Same.
13622 (TextBox::OnKeyDown): Handle key == GDK_Return.
13624 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
13626 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
13627 to handle the TextProperty as well.
13628 (TextBox::TextBox): Init text_changed to false.
13629 (TextBox::EmitSelectionChanged): New helper method to set
13630 selection_changed to true and then emit the event.
13631 (TextBox::EmitTextChanged): Same idea.
13632 (TextBox::OnPropertyChanged): Use the new Emit helper methods.
13633 (TextBox::ClearSelection): Same.
13634 (TextBox::Select): Same.
13636 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
13638 * animation.h: Change validators for TargetNameProperty and
13640 * dependencyproperty.g.cpp: Regenerated
13641 * validators.cpp|h: Add new IsTimelineValidator that check that
13642 the instance is derived from Timeline.
13644 2009-01-26 Larry Ewing <lewing@novell.com>
13649 * control.cpp, control.h:
13650 * frameworkelement.cpp, frameworkelement.h:
13653 * src/mediaelement.cpp:
13655 * src/uielement.cpp:
13656 * src/usercontrol.h: Fix things to match the test results. Still
13657 a few regressions in shapes.
13659 2009-01-26 Larry Ewing <lewing@novell.com>
13661 * border.cpp (Border::MeasureOverride):
13663 2009-01-26 Larry Ewing <lewing@novell.com>
13665 * grid.cpp (Grid::MeasureOverride): handle out of bounds
13666 rows/columns the way the tests indicate.
13668 2009-01-24 Larry Ewing <lewing@novell.com>
13670 * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
13672 2009-01-24 Larry Ewing <lewing@novell.com>
13674 * uielement.h (class UIElement): add IsLayoutContainer () to test
13675 if a given element wants to do the layout dance. Hopefully this
13676 can be removed once the logic is more clear.
13681 * usercontrol.h: add IsLayoutContainer values.
13683 2009-01-26 Larry Ewing <lewing@novell.com>
13685 * frameworkelement.cpp: tests show some really crazy behavior in
13686 the short circuit case, try to emulate that.
13688 2009-01-26 Larry Ewing <lewing@novell.com>
13690 * frameworkelement.cpp (FrameworkElement::Measure): remove the
13693 * media.cpp: fix rendering.
13695 2009-01-26 Larry Ewing <lewing@novell.com>
13698 * border.cpp: Try to get alignment working visually.
13700 * frameworkelement.cpp: hack the needed behavior in until I
13701 understand the problem better.
13703 * mediaelement.cpp, mediaelement.h:
13704 * media.cpp: use the layout values in stretching
13706 2009-01-26 Larry Ewing <lewing@novell.com>
13708 * frameworkelement.cpp:
13711 * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
13714 2009-01-26 Larry Ewing <lewing@novell.com>
13717 * media.cpp: add bounds logic.
13722 * border.cpp: start trying to deal with
13725 * frameworkelement.cpp: compute the layout_xform.
13727 * uielement.cpp, uielement.h: add layout_xform and use it.
13729 * shape.cpp: try something else in measure.
13731 * size.h: add == and != overrides.
13733 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
13735 * brush.cpp (VisualBrush::SetupBrush): Updated.
13737 * uielement.cpp (UIElement::Render): Render our subtree in the
13738 Region* version of this method and get rid of the old x,y,w,h
13741 * text.cpp (TextBlock::Render): Override the Render() that takes a
13743 (Glyphs::Render): Same.
13745 * textbox.cpp (TextBoxView::Render): Same.
13747 * shape.cpp (Shape::Render): Here too.
13749 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
13753 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
13755 * type.cpp: Revert r124497.
13757 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
13759 * transform.cpp: Add comment about a difference between SL2/ML
13760 in caching/computing the resulting matrix value (exposed in SL2)
13761 of a TransformGroup
13763 2009-01-26 Jackson Harper <jackson@ximian.com>
13765 * xaml.cpp: Move this check into a function since it will be used
13768 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
13770 * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
13772 2009-01-26 Chris Toshok <toshok@ximian.com>
13774 * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
13775 binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
13776 canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
13777 contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
13778 dependencyobject.[cpp,h], dependencyproperty.h,
13779 deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
13780 eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
13781 geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
13782 mediaelement.[cpp,h], multiscaleimage.[cpp,h],
13783 multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
13784 popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
13785 size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
13786 text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
13787 trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
13788 usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
13789 files, and remove GetObjectType - call SetObjectType instead. Add
13790 @IncludeInKinds everywhere on types we want in the Kinds array -
13791 nothing is implicit now. Also, add @SkipValue on types that
13792 shouldn't automatically appear in the Value struct (As* method,
13795 * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
13796 but also call SetSubtreeObject at the right times (basically
13797 whenever our subtree object changes).
13799 * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
13800 too. also, rework the control template application step - don't
13801 cache the tree and duplicate it. just reparse. hook up template
13802 bindings properly as well. with this change buttons are starting
13805 * type.cpp: total_event_count = my_events +
13806 parent->total_event_count, so if my_events == 0...
13808 * xaml.cpp (start_element): reverse the subclass check.
13810 * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
13812 * Makefile.am: add expression.cpp, and there's no need for
13813 separate file lists anymore.
13815 2009-01-25 Chris Toshok <toshok@ximian.com>
13817 * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
13818 this registers a custom property. Fixes moon-unit failures.
13820 2009-01-25 Chris Toshok <toshok@ximian.com>
13822 * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
13825 2009-01-25 Chris Toshok <toshok@ximian.com>
13827 * xaml.cpp: mostly just remove the NULL's we were passing to the
13828 various DependencyObject methods that used to require an
13829 additional_types arg.
13830 (dependency_object_set_attributes): one important fix here - force
13831 the loader to do the SetValue if the type is URI, or if the type
13832 of the object itself is a custom type. Also, if we've converted
13833 the string to a valid value already, don't pass a string to the
13834 loader - this keeps us from passing "{Binding foo...}" to the
13835 loader to setvalue on a databound property. This does uncover a
13836 failing in our managed code, though, that there's no way to deal
13837 with the unmanaged BindingExpression from managed code.
13839 * application.cpp, application.h: instead of having a
13840 MonoDomain->Application mapping, we now have a
13841 MonoDomain->Deployment mapping, so Application::GetCurrent maps to
13842 Deployment::GetCurrent()->GetCurrentApplication().
13844 * deployment.cpp, deployment.h: flesh out Deployment, along with
13845 the MonoDomain->Deployment mapping. Also add a per-deployment
13846 Types* object, so we can look them up anywhere in the engine
13847 without having to rely on the managed layer passing
13850 * type.h.in, type.cpp: remove additional_types from all the apis.
13851 the currently registered custom types are always available from
13852 the Current deployment, which Type::Find uses. Also, add
13853 IsCustomType which lets us check if a type is one of our special
13854 built-in types, or if it's one that's been registered dynamically.
13856 * value.h.in, value.cpp: remove additional_types.
13858 * dependencyproperty.h, dependencyproperty.cpp: remove
13861 * dependencyobject.h, dependencyobject.cpp: remove
13864 * uielement.h: add cbindings/pinvokes for ElementAdded and
13867 * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
13870 * Makefile.am: remove contentpresenter.{h,cpp}
13872 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
13875 2009-01-25 Sebastien Pouliot <sebastien@ximian.com>
13877 * cbinding.cpp|h: Regenerated
13878 * transform.cpp|h: Add GetMatrix (w/bindings).
13880 2009-01-23 Geoff Norton <gnorton@novell.com>
13882 * xaml.cpp: This is case-insensitive here too.
13884 2009-01-23 Geoff Norton <gnorton@novell.com>
13886 * dependencyobject.cpp: Avoid a SIGSEGV if the parent_scope is null.
13888 2009-01-23 Jeffrey Stedfast <fejj@novell.com>
13890 * utils.cpp (managed_stream_read_func): Fixed to do as intended.
13891 (managed_stream_write_func): Same.
13893 * textbox.cpp (next_word): Implemented.
13894 (prev_word): Implemented.
13896 2009-01-23 Andreia Gaita <avidigal@novell.com>
13898 * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
13899 list in case the dispatcher gets destroyed before they are processed.
13901 2009-01-23 Geoff Norton <gnorton@novell.com>
13903 * utils.cpp: Remove some g_error and handle ridiculously large
13904 zip files to appease glib.
13906 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
13908 * dependencyproperty.g.cpp: regenerated
13909 * brush.h: Set default values for RadialGradientTransform points
13911 2009-01-23 Stephane Delcroix <sdelcroix@novell.com>
13913 * multiscaleimage.cpp: add a bool so render knows if it was
13914 invalidated locally or not, and should keep rendering the upper
13915 layers or restart from the bottom.
13917 2009-01-23 Geoff Norton <gnorton@novell.com>
13919 * pipeline.h: Move ManagedStreamCallbacks to utils so other things
13921 * utils.cpp|h: Implement a minizip io-style wrapper around
13922 ManagedStreamCallbacks so that we can unzip from / to managed Stream's.
13924 2009-01-23 Stephane delcroix <sdelcroix@novell.com>
13926 * multiscaleimage.cpp: no longer crash on null uri
13928 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
13930 * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
13931 to be valid (xml-wise) but not a DO (e.g. a Color).
13933 2009-01-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
13935 * src.mdp: Added new files.
13937 2009-01-22 Chris Toshok <toshok@ximian.com>
13939 * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
13940 .cpp, and call SetDefaultStyleKey to get that working.
13942 2009-01-22 Chris Toshok <toshok@ximian.com>
13944 [ fixes to get http://www.life-silverlight.com/ to come up with
13947 * enums.cpp (initialize_enums): add a mapping for the property
13948 VerticaalContentAlignment using the vertical_alignment_map.
13950 * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
13951 file. Also, call SetSurface in SetVisualParent, so things like
13952 controls templates get the right surface assigned to them (they
13953 have no logical parent, only a visual one.)
13955 * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
13956 other template stuff - create a temp namescope here. it won't be
13957 merged, so nothing to worry about. Also, don't call
13958 PrepareContentPresenter here. do it after we look up text and
13959 root in OnApplyTemplate.
13960 (ContentPresenter::OnApplyTemplate): prepare the content
13963 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
13965 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13967 (ContentPresenter::OnLoaded): Only unref the template if it isn't
13970 * contentpresenter.h (ContentPresenter::GetElementRoot):
13971 Implemented temporary binding hack.
13973 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13975 (ContentPresenter::OnPropertyChanged): Call
13976 PrepareContentPresenter() instead of ApplyTemplate().
13977 (ContentPresenter::OnApplyTemplate): Implemented.
13979 2009-01-22 Chris Toshok <toshok@ximian.com>
13981 * application.h, application.cpp: make surface a per-application
13982 thing, and add GetSurface/SetSurface.
13984 * cbinding.h, cbinding.cpp: regen.
13986 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
13988 * contentcontrol.cpp (ContentControl::ContentControl): I'm
13989 guessing this needs to call SetDefaultStyleKey as well.
13991 * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
13992 because that causes problems (the TextBox already has a logical
13993 parent). Instead, we'll just keep track of it internally
13995 (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
13996 when the TextBox property changed.
13998 * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
13999 the default style key.
14000 (ContentPresenter::OnLoaded): Load the default template.
14002 * contentpresenter.cpp|h: New source files. Subclass Control even
14003 though in managed-land, we technically subclass
14004 FrameworkElement. This way we can take advantage of Control's
14007 2009-01-22 Chris Toshok <toshok@ximian.com>
14009 * xaml.cpp (dependency_object_set_attributes): commit jackson's
14010 patch (with one slight modification) so everyone can have the
14011 wonderful world of non-broken setters.
14013 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14015 * dependencyobject.h:
14016 * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
14017 around object counters (we define DEBUG always anyways, and the
14018 counters are always useful).
14020 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14022 * dependencyobject.cpp: Protect objects_alive with a mutex.
14024 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14026 * dependencyobject.h:
14027 * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
14030 2009-01-22 Stephane delcroix <sdelcroix@novell.com>
14033 * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
14034 first time it's needed.
14036 2009-01-21 Geoff Norton <gnorton@novell.com>
14038 * application.cpp: If we're set to NULL remove the application
14039 from the hash table.
14041 2009-01-21 Geoff Norton <gnorton@novell.com>
14043 * Makefile.am: Add bitmapimage.cpp to the build
14044 * application.cpp|h: Add a new callback into Application to
14045 return a resource stream.
14046 * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
14047 a managed resource stream and make this all native.
14048 * brush.cpp|h: Brush.ImageSource is now a BitmapImage
14049 * media.cpp|h: Image.Source is now a BitmapImage
14050 * xaml.cpp: BitmapImage can be constructed from a string in xaml
14052 * dependencyproperty.g.cpp: Regenerate
14054 2009-01-21 Larry Ewing <lewing@novell.com>
14056 * grid.cpp (Grid::MeasureOverride): rework the incremental
14057 contribution logic.
14059 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
14061 * contentcontrol.cpp (ContentControl::OnPropertyChanged):
14062 Implemented by calling ApplyTemplate() when ContentTemplate or
14063 Content properties change.
14064 (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
14065 when the content changes.
14067 2009-01-21 Larry Ewing <lewing@novell.com>
14069 * grid.cpp: store measurement info in the row and column
14070 definitions and don't allocate the arrays.
14072 2009-01-21 Larry Ewing <lewing@novell.com>
14074 * grid.cpp, grid.h: Hack things to handle missing row
14075 definitions and clean up some old errors.
14077 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
14079 * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
14080 rather than SetContent() since SetContent() has been removed.
14081 * contentcontrol.h (class ContentControl): Updated a bit, we're
14082 going to actually use this unmanaged class now.
14083 (class ContentControl): Set PropertyType for ContentProperty to
14084 'object' and get rid of the generated accessors.
14086 2009-01-21 Jackson Harper <jackson@ximian.com>
14088 * dependencyobject.cpp|h: When setting values, unmarshal values
14090 * value.h|cpp: Add unmarshal function so we can convert types
14091 coming from managed.
14094 * type-generated.cpp: Regenerated.
14096 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
14098 * dependencyproperty.g.cpp: Regenerated
14099 * text.cpp|h: Revert earlier change as it "turns black" too many
14100 things. DRT #47 will fail until I find the right fix :(
14102 2009-01-21 Larry Ewing <lewing@novell.com>
14104 * grid.cpp (Grid::ArrangeOverride): make the basic cases work
14107 2009-01-21 Alan McGovern <amcgovern@novell.com>
14109 * popup.cpp: Remove debug code from svn.
14111 2009-01-21 Alan McGovern <amcgovern@novell.com>
14118 * type-generated.cpp: Initial attempt at trying to get Popup.Child
14121 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
14123 * dependencyproperty.g.cpp: Regenerated
14124 * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
14125 ctor initialized value. This means that GetLocalValue won't return
14126 null for this property, which makes it behave correctly for SL1/JS
14128 [Fix DRT#47 failing since r123884]
14130 2009-01-20 Chris Toshok <toshok@ximian.com>
14132 * application.h, application.cpp: switch from using a static
14133 Application* for "Current" to a hashtable mapping MonoDomain* to
14136 2009-01-20 Jackson Harper <jackson@ximian.com>
14138 * xaml.cpp: Lookup resources in Application.Resources if we don't
14139 find the resource in the tree.
14141 2009-01-20 Chris Toshok <toshok@ximian.com>
14143 * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
14144 cbinding.cpp: regen.
14146 * Makefile.am (libmoon_include_headers): add application.h
14147 (libmoon_la_SOURCES): add application.cpp
14149 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14150 if the style was set, call Application::ApplyStyle -- doesn't
14151 actually *apply* the style, it just converts the values.
14153 * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
14154 the ConvertedValueProperty after the setter is sealed.
14156 * style.h (class Setter): add ConvertedValueProperty.
14158 * textbox.h (class TextBox): remove @CallInitialize.
14160 * textbox.cpp (TextBox::TextBox): i hate the way this is
14161 expressed (we need a ManagedTypeInfo ctor/dtor), but set
14162 DefaultStyleKey here instead of in managed land.
14164 * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
14165 return the converted property value, not the original (which may
14166 have been a string.)
14167 (StylePropertyValueProvider::SealStyle): only put setters in the
14168 hash if their converted value is non-null.
14170 * control.h (class Control): generate accessors for
14173 * control.cpp (Control::OnLoaded): do the default style
14175 (Control::ApplyTemplate): output a little spew so we
14176 can tell if we're applying a template.
14178 * application.h, application.cpp: move Application here, and make
14179 it a full DO subclass. It no longer maps to the managed
14180 ApplicationInternal.
14182 * deployment.h: remove Application from here.
14184 2009-01-20 Jackson Harper <jackson@ximian.com>
14186 * xaml.cpp: When we create templates make sure we track the
14187 template ourself, we can't rely on the ControlTemplate still
14188 having a surface when it is applied.
14190 2009-01-20 Jeffrey Stedfast <fejj@novell.com>
14192 * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
14193 (Keyboard::OnKeyRelease): Same.
14195 2009-01-20 Jackson Harper <jackson@ximian.com>
14197 * clock.h: Set namespace for Duration and RepeatBehavior
14199 2009-01-20 Sebastien Pouliot <sebastien@ximian.com>
14201 * dependencyproperty.g.cpp: Regenerated
14202 * uielement.h: Re-apply default value for RenderTransformProperty
14204 2009-01-19 Larry Ewing <lewing@novell.com>
14208 * window-gtk.cpp, window-gtk.h: clean up the set background
14209 clearing logic and make it general.
14211 2009-01-19 Larry Ewing <lewing@novell.com>
14213 * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
14214 window to white by default.
14216 2009-01-19 Larry Ewing <lewing@novell.com>
14218 * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
14219 implementing arrangeoverride.
14221 2009-01-19 Larry Ewing <lewing@novell.com>
14223 * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
14224 screen message too.
14226 2009-01-19 Jackson Harper <jackson@ximian.com>
14229 * binding.h: Get kinds generated for these guys.
14231 * type-generated.cpp: updated
14233 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14237 2009-01-19 Jackson Harper <jackson@ximian.com>
14239 * grid.h: GridLength lives in System.Windows.
14241 2009-01-19 Jackson Harper <jackson@ximian.com>
14243 * color.h: Colours are in System.Windows.Media.
14245 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14247 * pipeline.h: Instead of overriding GetTypeName for media clases
14248 override GetObjectType so that the generator puts these classes into
14249 our type system. This will fix a lot of the "event not registered"
14254 * type-generated.cpp: Regenerated.
14256 2009-01-19 Alan McGovern <amcgovern@novell.com>
14265 * type-generated.cpp:
14266 * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
14268 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14270 * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
14271 Add support for 'unsigned X' types (used in src/asf/).
14273 2009-01-18 Geoff Norton <gnorton@novell.com>
14275 * xaml.cpp: Only unref the surface if it exists.
14277 2009-01-18 Geoff Norton <gnorton@novell.com>
14279 * dependencyobject.cpp: Ensure that the parent scope registration
14280 behavior is only applied to UserControl's.
14282 2009-01-18 Geoff Norton <gnorton@novell.com>
14284 * xaml.cpp: Only ref the surface if it exists.
14286 2009-01-18 Larry Ewing <lewing@novell.com>
14288 * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
14290 * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
14291 arrange method for now.
14293 2009-01-18 Larry Ewing <lewing@novell.com>
14295 * control.cpp: update invaliate/measure to look more like border
14296 (still wrong) and remove some debug spew.
14298 2009-01-18 Sebastien Pouliot <sebastien@ximian.com>
14300 * cbinding.h|cpp, type.h, value.h: Regenerated
14301 * transform.h: Add UnmanagedMatrix (which is a DO accessible to
14302 managed code) and a new method to get the address of the matrix
14304 * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
14306 2009-01-17 Larry Ewing <lewing@novell.com>
14308 * canvas.cpp (Canvas::MeasureOverride):
14309 * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
14311 2009-01-17 Jackson Harper <jackson@ximian.com>
14313 * xaml.cpp: Dont create items for property elements. The element
14314 name for property elements can be an abstract type.
14316 2009-01-17 Jackson Harper <jackson@ximian.com>
14318 * xaml.cpp: Don't try to set properties that are collections,
14319 they've already had the items added in add_child.
14321 2009-01-17 Jackson Harper <jackson@ximian.com>
14323 * xaml.cpp|h: Change CreateObject to LookupObject and give it a
14324 flag for actually creating the object. This allows us to verify
14325 the type on hydrated elements without creating another instance
14326 and prevents a circular dependency when elements load themself in
14327 their LoadComponent xaml.
14329 2009-01-17 Geoff Norton <gnorton@novell.com>
14331 * dependencyobject.cpp: A custom UserControl has a local namescope
14332 but also needs to be locatable in its parent namescope.
14334 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14336 * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
14337 different font size (not that TextBox really needs that since all
14338 runs will be the same exact font).
14340 * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
14341 to update the cursor rect.
14342 (TextBoxView::Layout): Update the cursor after we finish laying
14344 (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
14345 (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
14348 2009-01-16 Jackson Harper <jackson@ximian.com>
14350 * xaml.cpp: NULL is OK if it's being explicitly set.
14352 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14354 * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
14355 cursor region and the new cursor region.
14356 (TextBoxView::Paint): Paint the cursor as well.
14358 * layout.cpp (Layout::GetCursor): Implemented.
14360 2009-01-16 Larry Ewing <lewing@novell.com>
14362 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
14365 * panel.cpp, panel.h: remove arrange override and make measure
14366 override return (0,0) always.
14368 2009-01-16 Larry Ewing <lewing@novell.com>
14370 * panel.cpp: Make ArrangeOverride and MeasureOverride do something
14371 closer to the right thing.
14373 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14375 * textbox.cpp (TextBox::ArrangeOverride): Removed.
14376 (TextBox::Background) needs to return NULL if not selected mode -
14377 we don't want to be redrawing the normal bg.
14379 2009-01-16 Geoff Norton <gnorton@novell.com>
14381 * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
14382 we're going to keep it alive to apply control templates.
14384 2009-01-16 Geoff Norton <gnorton@novell.com>
14386 * template.cpp: Add the namescope to the closure to avoid
14387 referencing random memory.
14388 * xaml.cpp: We create a new XamlLoader when applying control
14389 templates, and inherit the callbacks. Set vm_loaded to true in
14392 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14394 * textbox.cpp (TextBox::TextBox): Don't init the selection
14395 brushes, they must come from the style.
14397 2009-01-16 Larry Ewing <lewing@novell.com>
14399 * border.cpp, border.h:
14400 * uielement.cpp, uielement.h:
14401 * panel.cpp, panel.h:
14402 * canvas.cpp, canvas.h:
14403 * control.cpp, control.h: Remove GetTransformFor completely, use
14404 the layout slot x/y when computing the local transform,
14405 invalidatemeasure (for now) when updating the tranform.
14407 * dirty.cpp: hack in the intial Left/Top stuff until we can clean
14410 2009-01-16 Larry Ewing <lewing@novell.com>
14412 * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
14413 unless stretch is specified.
14415 2009-01-16 Geoff Norton <gnorton@novell.com>
14417 * mediaelement.h: The MediaElement.Source is a Uri on the managed
14420 2009-01-16 Jackson Harper <jackson@ximian.com>
14422 * xaml.cpp: FindTypeName type names dont' always have a
14423 namespace/assembly.
14424 - Special case Application and don't try to find it's name since
14425 it is renamed in the managed code. (Need to figure out a better
14427 - Pass in NULL for setting propertys and let the underlying types
14428 determine whether or not that is an error.
14430 2009-01-16 Jackson Harper <jackson@ximian.com>
14432 * xaml.cpp: Before going to managed to create an element, scan the
14433 xnamespace for the x:Class attribute and pass that in as the
14434 element name if we have one, this allows you to use abstract names
14435 for the elements as long as the x:Class is a complete type. Should
14436 also allow us to optimize out a trip into managed.
14438 2009-01-16 Jackson Harper <jackson@ximian.com>
14440 * xaml.cpp: The xaml context needs to store the callbacks so that
14441 we can properly invoke managed code in a template.
14443 2009-01-16 Jackson Harper <jackson@ximian.com>
14445 * dependencyproperty.cpp: This warning isn't really needed and now
14446 with managed DP lookup's, this scenario happens about a trillion
14447 times during parsing of generic.xaml.
14449 2009-01-16 Larry Ewing <lewing@novell.com>
14451 * uielement.h (class UIElement): remove the default value from
14452 RenderTransformProperty until the bugs it introduces are resolved.
14454 * dependencyproperty.g.cpp:Regenerated.
14456 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
14458 * dependencyproperty.g.cpp: Regenerated
14459 * grid.h: Add default values for [Column|Row]Definition Width
14461 * xaml.cpp: Fix most cases (except empty) of GridLength
14463 2009-01-15 Geoff Norton <gnorton@novell.com>
14465 * downloader.cpp|h: Add downloader_response_abort.
14467 2009-01-15 Jackson Harper <jackson@ximian.com>
14469 * xaml.cpp|h: We need to pass a pointer to the elements parent
14470 object to managed code, this is so we can look up a Setter's
14472 - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
14474 2009-01-15 Jackson Harper <jackson@ximian.com>
14476 * dependencyproperty.cpp: Patch mostly by rolf. Allows property
14477 lookup to work on custom types that subclass custom types.
14478 * template.cpp: Now that templates work pretty well, lets reduce
14481 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
14483 * dependencyproperty.g.cpp: Regenerated to include the specified
14484 type (and not the implied one from the default value)
14485 * uielement.h: RenderTransformProperty defaults to a empty (identity)
14488 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
14490 * textbox.cpp: Removed default_*[fore,back]ground() functions as
14491 well as textbox_shutdown() since they are no longer needed.
14492 (TextBox::TextBox): Initialize the default SelectionBackground and
14493 SelectionForeground brushes.
14495 * layout.h (struct TextSelection): Removed brushes from
14496 TextSelection struct.
14498 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
14500 * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
14501 Cannot compare a guint64 with -1, presuming the comparison was
14502 meant to be against TimeSpan_FromPTS (position) instead.
14504 * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
14505 instead of SelectionChangedEventArgs.
14507 * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
14508 ctor that takes a source.
14510 * textbox.h (class SelectionChangedEventArgs): Removed, this type
14511 of EventArgs is not actually emitted by TextBox as I had
14512 originally thought. TextBox's SelectionChanged event uses
14515 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
14517 * type-generated.cpp:
14518 * dependencyproperty.g.cpp: Regenerated.
14521 * mediaelement.cpp: Inherit directly from FrameworkElement instead of
14522 MediaBase. This requires copying some code from MediaBase into
14523 MediaElement (which at some later stage would move into Media).
14525 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
14528 * cbinding.cpp: Regenerated.
14533 * type-generated.cpp:
14534 * dependencyproperty.h:
14535 * dependencyproperty.cpp: Add support for looking up custom dependency
14536 properties by name.
14538 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
14540 * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
14541 Add comment on value_from_str_with_typename to update NativeMethods.cs
14543 2009-01-15 Larry Ewing <lewing@novell.com>
14548 * frameworkelement.cpp: start taking layout slot into account when
14551 2009-01-15 Jackson Harper <jackson@ximian.com>
14553 * xaml.cpp: Storyboard are allowed to have an x:Name and an
14554 x:Key. This is for backwards compatibility because SL1 didn't have
14555 x:Key. It's also stupid.
14557 2009-01-15 Jackson Harper <jackson@ximian.com>
14559 * xaml.cpp: Add a fake element to templates with all the imported
14560 namespaces. This allows all the namespaces imported in the main
14561 source to work in the template.
14563 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
14565 * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
14567 (TextBoxView::Layout): Build the text runs based on the selection.
14568 (TextBoxView::Paint): Updated to no longer pass the selection
14569 state to the layout engine.
14571 * layout.h (class ITextSource): Added a Background() accessor and
14572 changed the Foreground() accessor to take a bool selected
14575 * layout.cpp (RenderSegment): Render the background if non-NULL.
14576 (TextRun::TextRun): Now takes a 'selected' state.
14577 (TextLayout::Render): No longer takes selection or cursor
14580 2009-01-14 Jackson Harper <jackson@ximian.com>
14582 * xaml.cpp: Fix x:Null handling.
14584 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
14586 * brush.h: Add default values used by some brushes
14587 * dependencyproperty.g.cpp: Regenerated
14589 2009-01-14 Larry Ewing <lewing@novell.com>
14591 * panel.cpp (Panel::GetTransformFor): override gettransformfor for
14594 2009-01-14 Jackson Harper <jackson@ximian.com>
14596 * xaml.cpp: Add the namespaces to the xaml context.
14598 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
14600 * textbox.cpp (TextBox::CursorBackSpace): Implemented.
14601 (TextBox::CursorDelete): Implemented.
14603 * layout.cpp (RenderSegment): Split out from RenderLine().
14605 2009-01-14 Jackson Harper <jackson@ximian.com>
14607 * xaml.cpp: Apparently there is a new NULL on the block. Use
14608 SetIsNull instead of a NULL Value* now.
14610 2009-01-14 Jackson Harper <jackson@ximian.com>
14612 * template.cpp: initialize xaml_context. (fixes shutdown crash)
14614 2009-01-14 Jackson Harper <jackson@ximian.com>
14616 * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
14617 these before my last patch.
14619 2009-01-14 Jackson Harper <jackson@ximian.com>
14621 * xaml.cpp: Styles use their TargetType as their
14622 ResourceDictionary key.
14623 - Handle the new type MANAGEDTYPEINFO by allowing the managed code
14625 * value.cpp|h|.h.in:
14626 * type.h|h.in: New type, ManagedTypeInfo. Contains info for
14627 loading managed types.
14630 * template.h: Use ManagedTypeInfo when we have a System.Type on
14632 * dependencyproperty.g.cpp:
14633 * typegenerated.cpp: Regen
14635 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
14637 * textbox.cpp: More fixes for cursor movement & keyboard selection.
14639 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
14641 * grid.cpp (MeasureOverride): Free allocated arrays
14643 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
14645 * grid.cpp: Add a bunch of NULL checks for width and height to avoid
14646 crashes when running the SDK controls unit tests.
14648 2009-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
14650 * dependencyobject.cpp: Fix
14651 media/video/test-reset-media-element-source.html.
14653 2009-01-14 Alan McGovern <amcgovern@novell.com>
14655 * enums.cpp: Control.HorizontalContentAlignment should map to the
14656 HorizontalAlignment enum.
14658 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
14660 * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
14663 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
14665 * deepzoomtilesource.h: mark it with CallInitialize
14667 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
14669 * tilesource.h|cpp: autogenerate the cbinding
14671 * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
14672 managed side for xml parsing.
14674 2009-01-13 Chris Toshok <toshok@ximian.com>
14676 * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
14678 (XamlLoader::CreateFromStringWithError): same.
14679 (XamlLoader::HydrateFromStringWithError): same.
14680 (~XamlLoader): unref the error_args.
14681 (XamlLoader::HydrateFromString): no need to ref the object again
14682 here if it was passed in.
14684 2009-01-13 Larry Ewing <lewing@novell.com>
14686 * uielement.cpp, uielement.h (class LayoutInformation): add
14687 LayoutInformation class to hold the layout related attached
14688 properties. (will move it later).
14690 * frameworkelement.cpp: use the new layout information and use it
14693 * border.cpp: fix the arrange logic.
14695 2009-01-13 Larry Ewing <lewing@novell.com>
14697 * shape.cpp: switch over to using the computed values for stretch.
14699 * frameworkelement.cpp:
14701 * dirty.cpp, dirty.h: Try to get invalidation logic close to
14704 2009-01-13 Larry Ewing <lewing@novell.com>
14706 * shape.cpp: treat rect and ellipse like normal framework elements.
14708 2009-01-13 Larry Ewing <lewing@novell.com>
14710 * frameworkelement.cpp:
14714 * mediaelement.cpp:
14715 * panel.cpp: Use the layout values for values we used to compute
14718 2009-01-13 Larry Ewing <lewing@novell.com>
14720 * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
14721 collection while iterating.
14723 2009-01-13 Larry Ewing <lewing@novell.com>
14726 * src/frameworkelement.cpp
14728 * src/panel.cpp, src/panel.h: layout updates
14730 2009-01-13 Larry Ewing <lewing@novell.com>
14732 * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
14735 * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
14737 2009-01-13 Larry Ewing <lewing@novell.com>
14739 * shape.cpp, shape.h: start moving cleaning up references to width
14740 and height and moving towards using the layout logic. Remove
14741 stale LargestRect stuff
14743 * runtime.c, dirty.h: stub in an update layout function.
14745 * border.cpp, canvas.cpp: try to match some more tests.
14747 2009-01-13 Jeffrey Stedfast <fejj@novell.com>
14749 * textbox.cpp (TextBox::CursorPageDown): Implemented.
14750 (TextBox::CursorPageUp): Implemented.
14751 (TextBox::CursorHome): Implemented.
14752 (TextBox::CursorEnd): Implemented.
14753 (TextBox::CursorDown): Implemented.
14754 (TextBox::CursorUp): Implemented.
14755 (TextBox::OnKeyDown): Implemented Select-All keybinding and
14756 stubbed out cut/copy/paste.
14758 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
14760 * dependencyproperty.g.cpp: Regenerated
14761 * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and
14762 Shape.StrokeDashArray and set them in the constructors (which is
14763 bit ifferent and fix Polyhedra animation).
14765 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
14767 * dependencyproperty.g.cpp: Regenerated
14768 * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
14769 StrokeDashArray since they are not NULL in SL2
14771 2009-01-13 Alan McGovern <amcgovern@novell.com>
14773 * src.mdp: Add the provider stuff to the MD solution
14775 2009-01-13 Chris Toshok <toshok@ximian.com>
14777 * provider.cpp (StylePropertyValueProvider::SealStyle): only
14778 insert the setter into the hash if the setter's value matches the
14779 type of the setter's property. Fixes
14780 StyleTest.InvalidValueProgrammatically.
14782 2009-01-13 Jackson Harper <jackson@ximian.com>
14784 * xaml.cpp|h: Add the ability to lookup full uri's based on local
14785 prefixes. This is so managed can convert something like
14786 'local:' into 'clr-namespace=Foo;assembly=bar'
14788 2009-01-13 Jackson Harper <jackson@ximian.com>
14790 * xaml.cpp|h: Pass the ParserInfo to every callback, this will
14791 allow us to call back into unmanaged to do extra stuff.
14793 2009-01-13 Stephane Delcroix <sdelcroix@novell.com>
14795 * tilesource.h|cpp: add a callback and a method to set the callback
14796 so we can poke the managed GetTileLayers.
14798 2009-01-12 Chris Toshok <toshok@ximian.com>
14800 * style.cpp, style.h (Style::GetPropertyValue): remove this. it's
14801 been replaced by the hash lookup in the style provider.
14803 * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
14804 change... apparently there's something that happens to lower
14805 precedence providers after you call ClearValue, but *only if the
14806 local value was actually cleared*. yuck.
14808 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
14809 remove the Style sealing from SetValueWithErrorImpl, and move it
14810 here where it should have been all along. Also, do the sealing
14811 via the Style value provider, so it can make things a bit more
14814 * provider.cpp (StylePropertyValueProvider::SealStyle): new
14815 method, called by FWE::OnPropertyChanged when the style is
14816 initially set. we cache the setters (keyed by DP) in a hashtable.
14817 (StylePropertyValueProvider::RecomputePropertyValue): this is the
14818 magic method that DependencyObject::ClearValue calls, which causes
14819 the style provider to refresh its cache for the listed property.
14821 2009-01-12 Jackson Harper <jackson@ximian.com>
14823 * xaml.cpp: Fix typo, makes ControlTemplates inside of
14824 ControlTemplates work properly.
14826 2009-01-12 Jackson Harper <jackson@ximian.com>
14828 * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
14829 we can load some sites and see which properties are missing, right
14830 now it will only work for attributes. Intentionally not using the
14831 debug flags stuff, because i don't want this hack to stay around
14834 2009-01-12 Jackson Harper <jackson@ximian.com>
14836 * xaml.cpp: Stop trying to set attributes once we hit the first
14839 2009-01-12 Jeffrey Stedfast <fejj@novell.com>
14841 * collection.cpp (InlineCollection::Equals): New convenience
14842 method to replace text.cpp's inlines_simple_text_equal().
14844 * textbox.h (class TextBox): Now implements ITextSource.
14846 * text.cpp (Inline::UpdateFontDescription): New convenience method
14847 to populate the cached TextFontDescription since we can no longer
14848 rely on doing so from within OnPropertyChanged().
14849 (Inline::Equals): Base comparison method used by
14850 InlineCollection::Equals().
14851 (Run::Equals): Compare the Text property as well.
14852 (TextBlock::Layout): Call UpdateFontDescription() on each Inline
14853 as we iterate through them. Also updated for TextRun ctors.
14854 (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
14855 premise is that we do not want to force a layout calculation to be
14856 redone, we just need to invalidate if all that changed was a
14858 (inlines_simple_text_equal): Removed, use
14859 InlineCollection::Equals() instead.
14860 (TextBlock::SetTextInternal): Updated to use
14861 InlineCollection::Equals().
14863 * text.h (class Inline): Now implements the ITextSource
14864 interface. Moved the local TextFontDescription and autogen state
14865 into the private section and added accessors for them.
14867 * layout.cpp|h (class ITextSource): New interface sued by TextRuns
14868 and the internal Layout logic to grab a run's foreground brush and
14870 (TextRun::ctor): No longer take TextDecoration,
14871 TextFontDescription, or Brush arguments, instead takes an
14872 ITextSource that it can query for those properties when it needs
14874 (RenderLine): Updated to get the decorations and foreground brush
14875 from the ITextSource.
14877 2009-01-12 Alan McGovern <amcgovern@novell.com>
14882 * dependencyproperty.g.cpp: Add range validation to TimeSpan
14884 2009-01-12 Jackson Harper <jackson@ximian.com>
14886 * xaml.cpp: Moved nameditem lookup into the parser info so we can
14887 use the parser context data to lookup resources. This allows
14888 templates to reference StaticResources.
14890 2009-01-12 Alan McGovern <amcgovern@novell.com>
14892 * clock.cpp: Minimum FPS is clamped at 1.
14894 2009-01-12 Jackson Harper <jackson@ximian.com>
14896 * xaml.cpp|h: Create a xaml context object so we can save some
14897 state information for buffered templates.
14898 * template.h|cpp: Updated xaml methods.
14900 2009-01-12 Alan McGovern <amcgovern@novell.com>
14905 * dependencyproperty.g.cpp: Add correct validator for
14906 Storyboard.TargetName and Storyboard.TargetProperty
14908 2009-01-12 Sebastien Pouliot <sebastien@ximian.com>
14910 * grid.h: Hide RowDefinitionCollection ctor from managed code
14911 * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
14912 returns true the Style value can still be NULL (fix two new crash
14913 in SDK control unit tests)
14915 2009-01-12 Andreia Gaita <avidigal@novell.com>
14917 * stackpanel.cpp|h: removed, stackpanel is now done in managed
14920 * cbinding.cpp|h, dependencyproperty.g.cpp,
14921 type-generated.cpp, type.h,
14924 * Makefile.am, src.mdp: update build
14926 2009-01-11 Chris Toshok <toshok@ximian.com>
14928 * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
14929 now. the run fg will always be initialized.
14930 (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
14931 (TextLayout::Render): no need to pass in the default foreground.
14933 * runtime.cpp (runtime_shutdown): text_shutdown is gone.
14935 * text.h, text.cpp: stop caching the foreground. and there's no
14936 need to create the default foreground brush in code. it's simply
14937 the default value of the Foreground dependency property.
14938 (inlines_simple_text_equal): this needed fixing up since the font
14939 flags really aren't used for inheritance anymore - we need (and
14940 really, always needed to) compare the actual values, not just if
14942 (text_shutdown): no need for this anymore.
14944 * textbox.cpp (TextBoxView::Paint): same. no more default_fg
14947 2009-01-11 Chris Toshok <toshok@ximian.com>
14949 * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
14950 if a DO is frozen, any SetValue() call raises an
14951 UnauthorizedAccessException. We use this for default values of
14952 DependencyProperties.
14954 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
14955 freeze the default value.
14957 2009-01-11 Andreia Gaita <avidigal@novell.com>
14959 * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(),
14960 it could be called in the middle of a tick. Instead, just reset and
14961 reuse the clock on every tick. Track if the timer is stopped during
14962 a tick so the clock is not relaunched. Set a default duration so
14963 it's never automatic.
14965 2009-01-11 Chris Toshok <toshok@ximian.com>
14967 * text.h, text.cpp (class Inline): generate accessors for
14968 FontFamily, FontSize, and TextDecoration.
14969 (class Inline, class TextBlock): add an internal DP for the font
14971 (Inline::OnPropertyChanged): the only case that's needed at the
14972 moment is foreground, but that's slated for the axe as well.
14974 * dependencyproperty.g.cpp: regen.
14976 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
14977 make sure we inherit properly across the logical tree if the node
14978 doesn't have a visual parent (this fixes inheritance for non
14979 UIElement's, like Runs). Also, add the FontFilename property to
14980 the list of things that inherit.
14982 * dependencyobject.h,
14983 dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
14984 method. Providers can call this whenever the value at their
14985 precedence level has changed. It contains all the smarts to
14986 correctly generate OnPropertyChanged method calls in the face of
14987 all the provider levels.
14989 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
14991 * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
14992 TextChangedEvent and SelectionChangedEvent. Don't combine those
14993 into the ModelChangedEvent that is only meant for TextBoxView.
14994 (TextBox::OnPropertyChanged): Emit TextChangedEvent and
14995 SelectionChangedEvent appropriately.
14996 (TextBoxView::OnSelectionChanged): New event callback handler.
14997 (TextBoxView::OnTextChanged): Same.
14998 (TextBoxView::OnModelChanged): Don't handle text/selection change
14999 notification here anymore, because those 'change' enum types have
15001 (TextBoxView::OnPropertyChanged): Need to listen to more events.
15003 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
15005 * value.cpp (Value::Value): the const char* ctor now takes a bool
15006 argument specifying whether to take ownership of the string
15009 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
15010 don't need to keep a char* selection, we only need it temporarily
15011 while creating the Value*.
15012 (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
15014 (TextBox::ClearSelection): Don't set the TextProperty value
15015 anymore. Also don't bother with the setvalue state variable
15017 (TextBox::OnPropertyChanged): Don't worry about setvalue state
15019 (TextBox::TextBox): Get rid of 'setvalue' state.
15021 2009-01-10 Geoff Norton <gnorton@novell.com>
15023 * media.cpp: surface->filename might be NULL, so we need to guard
15024 against this in our cleanup accordingly.
15026 2009-01-09 Chris Toshok <toshok@ximian.com>
15028 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15029 oops. we still need to seal the style if that's the thing we're
15032 2009-01-09 Chris Toshok <toshok@ximian.com>
15034 * Makefile.am (libmoon_include_headers): add provider.h
15035 (libmoon_la_SOURCES): add provider.cpp
15037 * provider.h, provider.cpp: clean up this some. the only provider
15038 really not being used right now is the Animation value provider,
15039 since the animation code assumes it can just set local values.
15041 * shape.cpp (Shape::OnPropertyChanged): no need to look up the
15042 default value - GetValue will return it now.
15044 * textbox.h, textbox.cpp (class
15045 TextBoxDynamicPropertyValueProvider): new custom provider class to
15046 replace the ::GetValue override. Install it in the ctor.
15048 * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
15049 new custom provider class to replace the ::GetValue override.
15050 Install it in the ctor.
15051 (GetBoundingWidth, GetBoundingHeight): don't use
15053 (SetActualHeight, SetActualWidth): no longer needed.
15054 (textblock_property): no longer needed.
15055 (Inline::GetDefaultValue): no longer needed. the inherited
15056 property provider handles it.
15057 (TextBlock::OnPropertyChanged): no need to deal with
15058 Actual{Height,Width}Property here anymore.
15060 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
15061 remove styles initialization.
15062 (FrameworkElement): remove styles destruction.
15063 (FrameworkElement::ClearValue): this doesn't need any styles stuff
15064 anymore - just clear the binding if we have one, and otherwise
15066 (FrameworkElement::GetLocalValue): I'm not sure why this was
15067 looking things up via a style, as styles are a lower priority than
15068 local values. if there's a binding return that, otherwise chain
15070 (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
15072 (FrameworkElement::UpdateFromStyle): remove. the style lookup is
15073 done in the style provider.
15076 * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
15077 public Style* field and use SetStyle to set it.
15078 (Style::GetPropertyValue): new method. this should probably be a
15079 hash lookup instead of the linear lookup, but for now this will
15081 (SetterBaseCollection::ValidateSetter): make this a static method
15082 on the class instead of just a C function.
15084 * dependencyobject.h: add a couple more GetValue overrides to deal
15085 with precedence levels. Remove GetDefaultValue, as it's no longer
15086 needed - we can finally use DependencyProperty::GetDefaultValue as
15087 it's meant to be used.
15089 * dependencyobject.cpp (DependencyObject::GetLocalValue): change
15090 this to just call the LocalValue provider.
15091 (DependencyObject::GetValue (DependencyProperty* property)): call
15092 the overload that lets us specify a starting precedence (start at
15093 the highest precedence level).
15094 (DependencyObject::GetValue (DependencyProperty *property,
15095 PropertyPrecedence startingAtPrecedence)): new method. loop over
15096 the providers until one of them gives us a value.
15097 (DependencyObject::GetValueSkippingPrecedence): we need this for
15098 looking up the value of FrameworkElement::StyleProperty from
15099 inside the style provider.
15100 (DependencyObject::GetValueNoDefault): reimplement this for the
15101 time being using the providers.
15102 (DependencyObject::DependencyObject): register all the default
15103 providers. we leave a DynamicValue slot open for subclasses who
15104 want to implement "computed" properties.
15105 (DependencyObject): free all the providers.
15107 * dependencyproperty.g.cpp: regen
15109 2009-01-09 Geoff Norton <gnorton@novell.com>
15111 * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
15113 2009-01-09 Geoff Norton <gnorton@novell.com>
15115 * media.cpp: Ensure that we actually do change the value of the
15116 Source property when we call MediaBase::SetSource (char*)
15118 2009-01-09 Jeffrey Stedfast <fejj@novell.com>
15120 * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
15121 with layout-hint changes (including TextWrapping hints).
15122 (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
15123 anymore. Also no need to set the wrapping mode here anymore as it
15124 is set in OnProeprtyChanged() now.
15126 * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
15127 it doesn't make sense to have them separate.
15129 * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
15130 we'll pass changes directly to the View as they get updated.
15131 (TextBox::OnPropertyChanged): If the layout hints change, set
15132 changed to the appropriate TextBoxModelChanged hint enum. Also
15133 pass the PropertyChangedEventArgs to the ModelChangedEventArgs
15134 ctor so that TextBoxView can grab the new value to update its
15136 (TextBoxView::OnModelChanged): Handle the new enums.
15137 (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
15138 a new TextBox gets set.
15140 2009-01-09 Alan McGovern <amcgovern@novell.com>
15142 * dependencyproperty.cpp: 'validator' should never be null - it should
15143 be default_validator instead. Regression caused by previous change to
15146 2009-01-09 Alan McGovern <amcgovern@novell.com>
15148 * validators.cpp: Validator only converts -1 to null. All other values
15149 appear to be left the same
15151 2009-01-09 Alan McGovern <amcgovern@novell.com>
15155 * validators.cpp: Add a validator to AudioStreamIndex. This converts
15156 negative values to null, as the unit tests show.
15158 2009-01-09 Alan McGovern <amcgovern@novell.com>
15160 * dependencyproperty.h:
15161 * dependencyproperty.cpp:
15162 * dependencyproperty.g.cpp: Make it possible to use validators with
15163 Nullable properties.
15165 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
15167 * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
15168 (Glyphs::GetFill): Same.
15170 * text.h (class Glyphs): GenerateAccessors for FillProperty too.
15172 * textbox.cpp (TextBox::CursorRight): Implemented.
15173 (TextBox::CursorLeft): Implemented.
15174 (TextBox::GetValue): New override to set the SelectedText property
15175 if the selection has been changed since the last request.
15177 * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
15179 * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
15180 different way so that we don't have to use GetValueNoDefault().
15182 2009-01-08 Larry Ewing <lewing@novell.com>
15184 * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
15186 * geometry.h, geometry.cpp (class RectangleGeometry): remove
15187 GetRadius logic everything is handled property by the properties
15190 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
15192 * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
15195 * keyboard.cpp (Keyboard::KeyIsChar): Removed.
15196 (Keyboard::KeyToChar): Removed.
15197 (Keyboard::KeyIsMovement): Removed.
15199 * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
15200 GetState() to make the purpose clearer.
15201 (KeyEventArgs::IsModifier): New helper method.
15202 (KeyEventArgs::GetKeyVal): New helper method.
15203 (KeyEventArgs::GetUnicode): New helper method.
15205 * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
15206 state, all places that set dirty=true are now handled by
15207 TextBoxView instead. Only call Invalidate() when appropriate. For
15208 selection state changes, check setvalue state to see if we need to
15210 (TextBox::ClearSelection): New helper method to clear the
15212 (TextBox::OnKeyDown): Properly clear the selection using
15213 ClearSelection() so that the DP values get updated.
15215 2009-01-08 Larry Ewing <lewing@novell.com>
15217 * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
15218 replace it with proper NAN state. Remove MixedWidthAndHeight for
15219 c&p checks that will be removed in the layou code.
15221 * frameworkelement.cpp: more nan cleanup.
15224 * control.cpp: handle nan.
15226 2009-01-08 Alan McGovern <amcgovern@novell.com>
15231 * frameworkelement.cpp:
15232 * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
15233 to/from native. This removes a hack in Style where DP's used to be
15234 looked up by name, which couldn't be done with properties registered
15235 through C#. Fixes 2 NUnit tests.
15237 2009-01-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
15240 * validators.cpp: Added DoubleGreaterThanZeroValidator.
15242 * mediaelement.h: Use double validator instead of int validator for
15245 * dependencyproperty.g.cpp: Regenerated.
15247 2009-01-08 Alan McGovern <amcgovern@novell.com>
15249 * dependencyobject.cpp: *Warning - Changing default values* When
15250 DO.ClearValue is called, we always return 'NULL' as the new value.
15251 This is incorrect as the pattern: do.ClearValue (property),
15252 do.GetValue (property) will actually return do.GetDefaultValue
15253 (DependencyProperty*). This change fixes a failing assertion in
15254 StyleTest.cs - ModifyAfterBinding.
15256 2009-01-08 Sebastien Pouliot <sebastien@ximian.com>
15258 * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
15259 Regenerated for ITEM_COLLECTION
15261 2009-01-08 Alan McGovern <amcgovern@novell.com>
15264 * dependencyobject.h:
15265 * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
15266 overridden by Inlines
15268 2009-01-07 Larry Ewing <lewing@novell.com>
15270 * frameworkelement.cpp, frameworkelement.h:
15271 move all the various duplicate versions GetTransformOrigin here.
15273 * mediaelement.cpp: fix GetTransformOrigin for new default values.
15275 * shape.cpp, shape.h:
15276 * canvas.cpp, canvas.h:
15277 * media.cpp, media.h:
15278 * shape.cpp, shape.h:
15279 * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
15283 2009-01-07 Geoff Norton <gnorton@novell.com>
15285 * collection.cpp: Ensure that we call any AddWithError overrides
15286 that might exist in a subclass (like TimelineMarkerCollection) as
15287 it could affect the integer returned.
15289 2009-01-07 Geoff Norton <gnorton@novell.com>
15291 * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
15292 to TextStream::OpenFile
15293 * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
15294 * downloader.cpp: GetResponseText needs to ensure it returns data in
15295 UTF-8, and doesn't handle zip files.
15297 2009-01-07 Jeffrey Stedfast <fejj@novell.com>
15299 * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
15300 input a bit. Cutting a lot of corners for now, but oh well.
15301 (TextBoxView::TextBoxView): Hooked up some cursor blinking
15302 action. We don't actually render the cursor yet tho.
15304 * keyboard.cpp (Keyboard): Moved into it's own source file from
15305 eventargs.cpp. I have a sneaking suspicion that this logic will
15306 get large and complicated someday soon.
15308 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
15310 * dependencyobject.cpp (set_surface): Add null check since the
15311 hashtable can contain Value with a NULL DependencyObject
15313 2009-01-07 Larry Ewing <lewing@novell.com>
15316 * frameworkelement.cpp:
15317 * shape.cpp: Quick hacks to get test 0 passing after the default
15320 2009-01-07 Chris Toshok <toshok@ximian.com>
15322 * textbox.h (class TextBox): add @CallInitialize so we can set the
15325 * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
15326 call to before ApplyTemplate(), as the template isn't applied
15327 until after the Loaded event is fired.
15329 2009-01-07 Geoff Norton <gnorton@novell.com>
15331 * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
15332 memory cache of all downloads <= 64KB that are streamed in 1 shot.
15334 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
15336 * contentcontrol.h|cpp: Remove properties that are not in SL2 final
15337 * dependencyproperty.g.cpp: Regenerated.
15339 2009-01-07 Alan McGovern <amcgovern@novell.com>
15344 * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
15345 it to the default cursor instead.
15347 2009-01-06 Larry Ewing <lewing@novell.com>
15349 * uielement.h (class UIElement): add a default value to
15350 UIElement::CusorProperty, fixes a crossing event crash.
15352 * uielement.cpp (UIElement::ElementRemoved): remove the element
15353 from the dirty list since it is an orphan now.
15355 * runtime.cpp (Surface::PaintToDrawable): add some logging.
15357 2009-01-06 Jeffrey Stedfast <fejj@novell.com>
15359 * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
15360 callbacks so that we can eventually make TextBox receive keyboard
15361 input. Currently the events never seem to fire, tho.
15363 2009-01-06 Sebastien Pouliot <sebastien@ximian.com>
15365 * enums.h: Add enums values for MouseCursorSize[NS|WE]
15366 * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
15368 2009-01-06 Alan McGovern <amcgovern@novell.com>
15370 * frameworkelement.cpp:
15371 * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
15372 again after my previous commit changing the handling of
15373 GetValue/GetLocalValue.
15375 2009-01-06 Alan McGovern <amcgovern@novell.com>
15379 * dependencyobject.h:
15380 * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
15381 DP.GetDefaultValue function. Fixed the implementation of 'null'
15382 Value*. Now a Value* with GetIsNull () == true will be returned as
15383 'NULL' for calls to GetValue or GetValueNoDefault. This makes
15384 Value.GetIsNull opaque to native code so existing null checks will
15385 work as they should. The only function which is aware of GetIsNull is
15386 GetLocalValue, and this correctly handles this case.
15388 2009-01-06 Alan McGovern <amcgovern@novell.com>
15393 * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
15394 null string is passed to PasswordBox.Password. Use correct range
15395 validation for MaxLength.
15397 2009-01-06 Alan McGovern <amcgovern@novell.com>
15399 * frameworkelement.h:
15400 * frameworkelement.cpp:
15401 * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
15404 2009-01-06 Alan McGovern <amcgovern@novell.com>
15408 * frameworkelement.cpp: Implement proper validation of Setters and also
15409 correctly implement behaviour of sealed/unsealed styles. They are now
15410 passing all the NUnit tests except for one.
15412 2009-01-05 Chris Toshok <toshok@ximian.com>
15414 * frameworkelement.h, frameworkelement.cpp: remove all reference
15415 to template_namescope.
15417 * template.cpp (ControlTemplate::Apply): remove call to
15418 FrameworkElement::SetTemplateNameScope - just set it as the
15419 namescope on the root of the applied template. This way name
15420 references within the template resolve correctly.
15422 * control.cpp (Control::GetTemplateChild): with the above change,
15423 this just becomes template_root->FindName ()
15425 2009-01-05 Sebastien Pouliot <sebastien@ximian.com>
15427 * runtime.cpp: Add a null check in Surface::FocusElement since both
15428 the C bindings and the MouseLeftButtonDown event can call it with a
15429 NULL value causing a SIGSEGV.
15431 2009-01-05 Jeffrey Stedfast <fejj@novell.com>
15433 * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
15434 TextBoxView in the appropriate place.
15436 * control.cpp (Control::GetTemplateChild): Now takes a const
15439 2009-01-05 Alan McGovern <amcgovern@novell.com>
15441 * uielement.h: Cursor shouldn't have a default value in SL2.
15444 * dependencyobject.h:
15445 * dependencyobject.cpp:
15446 * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
15447 code calling NameScope::[Un]RegisterName to ignore empty names just
15448 like it ignores null names.
15450 2009-01-05 Alan McGovern <amcgovern@novell.com>
15454 * frameworkelement.h:
15455 * frameworkelement.cpp:
15456 * dependencyproperty.h:
15457 * dependencyproperty.cpp:
15458 * dependencyproperty.g.cpp: We need a reference to the current
15459 DependencyProperty so that write-once properties can be properly
15460 validated. Moved validation of StyleProperty from
15461 FrameworkElement.SetValue into the new StyleValidator.
15463 2009-01-05 Alan McGovern <amcgovern@novell.com>
15467 * dependencyobject.cpp:
15468 * dependencyproperty.h:
15469 * dependencyproperty.cpp: When validating the Value we need a reference
15470 to the current DependencyObject as some properties are
15471 write-once/read-only
15473 2009-01-02 Jeffrey Stedfast <fejj@novell.com>
15475 * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
15476 dirty flag. TextBox is basically just a model now. Also added a
15477 ModelChanged event.
15478 (TextBox::Render): Removed.
15479 (TextBox::GetValue): Removed, dunno why it was ever overridden.
15480 (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
15481 view needs to be updated.
15482 (TextBoxView): New class that renders the contents of a TextBox
15485 * value.cpp (Value::GetIsNull): Fixed compiler warning.
15487 * pipeline.h (class MediaMarker): dtor needs to be virtual.
15489 2009-01-02 Sebastien Pouliot <sebastien@ximian.com>
15491 * validators.cpp: Remove the printf calls (that won't compile under
15492 SLED10 without changing includes).
15494 2008-12-22 Alan McGovern <amcgovern@novell.com>
15499 * dependencyproperty.g.cpp: Add validators for the Border class
15503 * value.h.in: unused_padding is now used as a bitfield. Currently used
15504 to indicate whether an object is null or not
15506 * frameworkelement.cpp: the styles hashtable only indicates if the
15507 current value comes from a style. It does not show if a dp has been
15508 bound to a style. If the current value is cleared, we need to update
15509 from the style to repopulate the styles hashtable and correctly set
15510 the style value. This can be optimised by passing the current dp to
15513 * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
15514 set the null value as opposed to calling do.ClearValue(dp).
15516 2008-12-22 Andreia Gaita <avidigal@novell.com>
15518 * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
15519 Regenerated for DispatcherTimer
15521 * animation.h: Move Completed events to the timeline
15523 * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
15524 clock whose duration is the timer Interval property. The timeline's
15525 completed event is a tick of the timer, and the clock gets restarted
15527 Save the current time when a clock starts so that clocks that are
15528 set to be started on the next tick with BeginOnTick include the time
15529 between the BeginOnTick call and the actual Begin in their elapsed
15530 time. Also, clocks beneath the time manager root clock now track time
15531 since they were started, and not since the time manager started.
15533 2008-12-20 Larry Ewing <lewing@novell.com>
15535 * mediaelement.cpp (MediaElement::UpdateProgress):
15536 * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
15537 to 0.05 which appears to be what the docs actually say.
15539 2008-12-19 Sebastien Pouliot <sebastien@ximian.com>
15541 * cbinding.cpp|h: Regenerated for read-only DP.
15542 * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter
15543 to RegisterManagedProperty.
15545 2008-12-19 Alan McGovern <amcgovern@novell.com>
15549 * dependencyproperty.g.cpp: Add validation + tests for
15550 Storyboard.TargetNameProperty and TargetPropertyProperty
15552 2008-12-18 Chris Toshok <toshok@ximian.com>
15554 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15555 textbox.h: decorate properties with @Validator attributes which
15556 the generator uses to generate the proper call to
15557 DependencyProperty::RegisterFull.
15559 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15560 textbox.cpp: Remove the calls to
15561 DependencyProperty::SetValueValidator. They're generated by the
15562 generator now from our metadata.
15564 * dependencyproperty.cpp, dependencyproperty.h: add new parameter
15565 to RegisterFull prototypes so we can supply a validator at
15568 * dependencyproperty.g.cpp: regen.
15570 2008-12-18 Chris Toshok <toshok@ximian.com>
15572 * validators.cpp, validators.h: move these into a class instead of
15573 static C methods, and don't include C methods into every file. we
15574 were getting warnings every time they went unused, and namespacing
15575 with C++ is better than #including them all over the place.
15577 * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
15578 dependencyproperty.cpp, frameworkelement.cpp: track change above.
15580 2008-12-18 Chris Toshok <toshok@ximian.com>
15582 * xaml.cpp (class XamlElementInstanceManaged): this instance can
15583 be a DependencyObject sometimes. we need an instance field to
15585 (XamlElementInstanceManaged::XamlElementInstanceManaged): when
15586 @obj, set is_dependency_object to true. This fixes setting x:
15587 namescope properties on managed DependencyObject subclasses, as in
15588 '<Button x:Name="foo" />'.
15589 (dependency_object_add_child): remove the template case from here.
15590 it'll be handled differently (being parsed at application time,
15593 2008-12-18 Alan McGovern <amcgovern@novell.com>
15598 * mediaelement.cpp:
15599 * multiscaleimage.h:
15600 * multiscaleimage.cpp:
15601 * frameworkelement.cpp: Add validation to DPs
15603 2008-12-18 Alan McGovern <amcgovern@novell.com>
15605 * mediaelement.cpp: Add validation for NaturalVideoHeight and
15608 2008-12-18 Alan McGovern <amcgovern@novell.com>
15615 * dependencyobject.h:
15616 * frameworkelement.h:
15617 * frameworkelement.cpp:
15618 * dependencyproperty.cpp: Move parameter validation for DP's to use the
15619 new ValueValidator callback.
15621 * validators.h: All validators are defined in this header file so they
15622 can be easily reused for different DPs.
15624 2008-12-18 Alan McGovern <amcgovern@novell.com>
15626 * grid.cpp: Correctly set the validators - forgot to revert changes
15629 2008-12-18 Alan McGovern <amcgovern@novell.com>
15632 * dependencyobject.cpp:
15633 * dependencyproperty.h:
15634 * dependencyproperty.cpp: Add the ability to validate the value for a
15635 DependencyProperty before setting it.
15637 2008-12-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
15639 * text.h, text.cpp: Remove some useless code.
15641 2008-12-16 Alan McGovern <amcgovern@novell.com>
15645 * dependencyproperty.h: If a default value has been set in native code,
15646 propagate that to managed code.
15648 2008-12-15 Chris Toshok <toshok@ximian.com>
15650 * template.cpp (ControlTemplate::Apply): make sure we clear the
15651 toplevel namescope from the template tree. instead we keep a
15652 different namescope around (full of the duplicated elements) which
15653 is populated during DuplicateObject.
15655 2008-12-15 Jeffrey Stedfast <fejj@novell.com>
15657 * xaml.cpp: Macroize the static tables.
15658 (create_binding_expression_from_markup): Got rid of
15659 BindingExtension::path.
15660 (xaml_markup_parse_binding): Update the markup pointer before a
15663 2008-12-15 Jackson Harper <jackson@ximian.com>
15665 * xaml.cpp: fix typo.
15666 - remove sneaky debug
15668 2008-12-15 Jackson Harper <jackson@ximian.com>
15670 * xaml.cpp: Always check if we are in buffering mode. (Otherwise
15671 we'll get cdata content at the end of a template or a namespace
15672 handler during a template).
15674 2008-12-15 Alan McGovern <amcgovern@novell.com>
15677 * dependencyproperty.g.cpp: ShowGridLines is true by default.
15679 2008-12-15 Alan McGovern <amcgovern@novell.com>
15681 * control.cpp: Default foreground brush is black
15683 2008-12-12 Jackson Harper <jackson@ximian.com>
15685 * xaml.cpp: Remove some old code.
15687 2008-12-12 Jackson Harper <jackson@ximian.com>
15689 * xaml.cpp: Still need to call setproperty on non managed
15690 attributes, they could be events.
15692 2008-12-12 Jackson Harper <jackson@ximian.com>
15694 * xaml.cpp: A little cleanup so that we only try setting non-dp
15695 attributes on managed objects. (previously we would try but fail,
15696 so the results are basically the same, just less waste).
15698 2008-12-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
15700 * runtime.h: Make DetachDownloaders public so that the plugin can call
15703 2008-12-12 Alan McGovern <amcgovern@novell.com>
15705 * textbox.cpp: Add bounds checking to SelectionStartProperty too
15707 2008-12-12 Alan McGovern <amcgovern@novell.com>
15710 * textbox.cpp: Add range checking for MaxLengthProperty and
15711 SelectionLengthProperty
15713 2008-12-11 Sebastien Pouliot <sebastien@ximian.com>
15715 * dependencyobject.h: Name setter is public in SL2 final.
15717 2008-12-11 Chris Toshok <toshok@ximian.com>
15719 * control.h, control.cpp: hook up TemplateApplied event.
15721 * type-generated.cpp: regen.
15723 2008-12-11 Chris Toshok <toshok@ximian.com>
15725 * control.h (class Control): generate cbinding/pinvoke for
15728 * cbinding.h, cbinding.cpp: regen.
15730 2008-12-11 Alan McGovern <amcgovern@novell.com>
15732 * textbox.cpp: Unbreak the build.
15734 2008-12-11 Alan McGovern <amcgovern@novell.com>
15736 * textbox.cpp: It should not be possible to set a null value as the
15739 2008-12-11 Alan McGovern <amcgovern@novell.com>
15742 * dependencyproperty.g.cpp: Fix several issues with default values for
15743 TextBox and PasswordBox
15745 2008-12-11 Andreia Gaita <shana@jitted.com>
15747 * cbinding.h|cpp, clock.h: Framerate accessors
15749 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
15751 * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
15752 remove some stale code.
15754 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
15756 * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
15757 audio field. Added comments/explicit verification in every method
15758 describing which methods must be thread-safe and which aren't.
15760 2008-12-10 Jeffrey Stedfast <fejj@novell.com>
15762 * xaml.cpp (parser_error): Now takes varargs to simplify
15763 things. Fixed all callers to not strdup/g_strdup_printf (and leak)
15764 the message argument.
15765 (create_binding_expression_from_markup): Check that the source is
15766 a DO before casting.
15768 2008-12-10 Alan McGovern <amcgovern@novell.com>
15772 * type-generated.cpp:
15773 * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
15774 is represented by an int32 in unmanaged code.
15776 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15778 * audio-pulse.cpp: Fix int->enum conversion.
15780 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
15782 * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
15783 random constants for the connected variable.
15785 2008-12-10 Jackson Harper <jackson@ximian.com>
15787 * xaml.cpp: Add a buffering mode to the parser, this mode is used
15788 for templates and simply buffers all the text without doing
15789 any real parsing. So everything between a
15790 <DataTemplate>..</DataTemplate> block is turned into a string.
15792 2008-12-10 Alan McGovern <amcgovern@novell.com>
15795 * textbox.cpp: Implement the SelectAll function and raise an event when
15796 the Password changes
15802 * type-generated.cpp:
15803 * dependencyproperty.g.cpp: Commit the files from the generator.
15805 2008-12-10 Alan McGovern <amcgovern@novell.com>
15807 * textbox.h: Partial implementation of the PasswordBox control
15809 2008-12-09 Chris Toshok <toshok@ximian.com>
15811 * template.h, template.cpp: add DataTemplates.
15813 * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
15816 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15818 * xaml.cpp (create_binding_expression_from_markup): Converter can
15819 also take a StaticResource.
15821 * playlist.cpp: Don't use ctype is*() with a char argument, these
15822 functions are meant to take unsigned char values cast to an
15823 int. Use the g_ascii_is*() functions instead.
15825 * xaml.cpp (create_binding_expression_from_markup):
15826 ConverterParameter can either be a string or a StaticResource. If
15827 it is a StaticResource, lookup the resource object.
15829 * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
15830 takes a Value* since we need to handle either string or
15833 2008-12-09 Jackson Harper <jackson@ximian.com>
15835 * xaml.cpp: Don't use the cpp initializers.
15836 - More consistent naming.
15838 2008-12-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
15840 * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
15841 pulseaudio to initialize - keep waiting if we get spurious wakeups.
15843 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15845 * xaml.cpp (create_binding_expression_from_markup): Lookup the
15846 StaticResource property for Source.
15848 * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
15850 (BindingExpressionBase::*): No longer do dynamic lookup of the
15853 2008-12-09 Sebastien Pouliot <sebastien@ximian.com>
15855 * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to
15856 false in C++ constructor.
15858 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
15860 * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
15862 (xaml_markup_parse_binding): Fixed to handle
15863 "Source={StaticResource ...}" syntax.
15865 2008-12-08 Sebastien Pouliot <sebastien@ximian.com>
15867 * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
15868 for UserControl while it's true for Control
15870 2008-12-08 Jeffrey Stedfast <fejj@novell.com>
15872 * xaml.cpp: A bit of refactoring...
15874 * binding.cpp (BindingExpressionBase::SetConverterParameter):
15876 (BindingExpressionBase::SetConverterCulture): Same.
15877 (BindingExpressionBase::SetConverter): Same.
15878 (BindingExpressionBase::SetSourceName): Same.
15879 (BindingExpressionBase::AttachListener): Lookup the source by name
15880 if we don't already have it.
15881 (BindingExpressionBase::GetValue): Same.
15882 (BindingExpressionBase::UpdateSource): Same.
15884 * xaml.cpp (binding_expression_from_str): Finished implementing.
15886 2008-12-07 Jeffrey Stedfast <fejj@novell.com>
15890 Patches by Argiris Kirtzidis
15892 * dependencyobject.h: Fix forward declarations of classes declared
15895 * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
15896 point constant to make sure we get the correct overload in MSVC.
15898 * playlist.cpp (duration_from_asx_str): Same.
15900 * value.cpp (Value::FreeValue): Free corner radius.
15902 2008-12-05 Geoff Norton <gnorton@novell.com>
15904 * audio-pulse.cpp: PulseAudio sometimes gives us errors sync,
15905 and sometimes async. Lets ensure we can actually connect before
15908 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
15910 * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
15912 * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
15915 * binding.h (class Binding): Added more bool members.
15917 * xaml.cpp (binding_expression_from_str): New method to
15918 parse {Binding} markup syntax into a BindingExpression.
15919 (handle_xaml_markup_extension): Parse Binding markup extensions.
15921 2008-12-05 Chris Toshok <toshok@ximian.com>
15923 * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
15924 the GenerateAccessors thing the right way.
15926 * dependencyproperty.g.cpp: regen.
15928 2008-12-05 Jackson Harper <jackson@ximian.com>
15930 * xaml.cpp: Move the markup extension handler out of
15931 set_attributes, ideally each markup extension will get it's own
15932 function eventually.
15934 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
15936 * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
15939 * xaml.cpp: Conditionally define DEBUG, which I guess is a
15940 temporary thing, in a way which will not spew gcc warnings.
15942 2008-12-05 Jackson Harper <jackson@ximian.com>
15944 * xaml.cpp: Let managed code own it's Value pointers.
15946 2008-12-04 Jackson Harper <jackson@ximian.com>
15948 * xaml.cpp: We can store the Value* in the base element instance
15949 now, since they all use a Value.
15951 2008-12-05 Fernando Herrera <fherrera@novell.com>
15954 * playlist.h: Don't check duration at playlist level but let MediaPlayer
15955 handle it. Don't do a delayed element->Play() for repeats because that
15956 can broke js doing "e.Play();e.Stop()"
15958 2008-12-04 Fernando Herrera <fherrera@novell.com>
15960 * playlist.cpp (Playlist::Open): Check duration properly.
15962 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
15964 * binding.cpp: Get rid of excessive use of 'this' keyword.
15966 2008-12-04 Geoff Norton <gnorton@novell.com>
15968 * playlist.cpp: 100ms not 10s should be when we start playing the
15971 2008-12-04 Larry Ewing <lewing@novell.com>
15973 * layout.cpp (RenderLine): do all the filling in one pass rather
15974 than adding a stroke at the end. Tidy up the path creation and
15975 modification logic.
15977 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
15979 We only support vector fonts, so get rid of the TextFont::Render()
15980 API that is only useful as an abstraction over rendering as bitmap
15981 vs pathing. Leave the *Path() APIs which are the only ones
15984 * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
15985 fonts are scalable for now.
15987 * font.cpp (TextFont::RenderGlyphPath): Removed.
15988 (TextFont::Render): Same.
15990 2008-12-04 Sebastien Pouliot <sebastien@ximian.com>
15992 * control.h: Changed my mind and moved DefaultStyleKeyProperty and
15993 IsEnabledProperty to the managed world
15994 * dependencyproperty.g.cpp: regenerated
15996 2008-12-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
15998 * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
15999 size using video and audio streams. Fixes #456154.
16001 2008-12-04 Jackson Harper <jackson@ximian.com>
16003 * xaml.cpp: The element instance now has ownership of the Value
16006 2008-12-03 Jackson Harper <jackson@ximian.com>
16008 * xaml.cpp: Cleanup managed namespaces when we shutdown.
16009 - Reduce the number of Value's we are creating. These still aren't
16010 being freed properly, but at least there isn't as many of them.
16012 2008-12-03 Geoff Norton <gnorton at novell.com>
16014 * media.cpp: Ensure we null our reference to the image loader in
16015 all the failure cases to avoid a possible double free/unref.
16017 2008-12-03 Alan McGovern <amcgovern@novell.com>
16020 * frameworkelement.h:
16021 * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
16022 the binding when the context is altered.
16024 2008-12-03 Alan McGovern <amcgovern@novell.com>
16026 * frameworkelement.h:
16027 * dependencyproperty.g.cpp: DataContext should take 'object'
16029 2008-12-03 Jackson Harper <jackson@ximian.com>
16031 * xaml.cpp: Call setproperty for all the children in the property
16032 block, this is needed because we aren't doing as much magic
16033 collection handling in addchild anymore.
16035 2008-12-02 Sebastien Pouliot <sebastien@ximian.com>
16037 * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
16038 * dependencyproperty.g.cpp: regenerated
16040 2008-12-02 Jackson Harper <jackson@ximian.com>
16042 * xaml.cpp: Map in enumerations in 2.0. So you can do something
16043 like <Visibility>Collapsed</Visibility>
16044 * enums.h|cpp: Expose a function so we can check if a certain enum
16047 2008-12-02 Jackson Harper <jackson@ximian.com>
16049 * xaml.cpp: We can map in non-DO managed elements now, so check to
16050 make sure it's actually a dependency object.
16051 - Pass NULL for the property name if we weren't able to query for
16052 a content property name. The managed backing might be able to
16053 find a name some other way.
16055 2008-12-02 Jackson Harper <jackson@ximian.com>
16057 * xaml.cpp: Return false if the base content property setter didnt
16060 2008-12-02 Alan McGovern <amcgovern@novell.com>
16064 * dependencyproperty.h:
16065 * dependencyproperty.cpp: Ensure the default value of a CustomDP is
16066 propagated to the unmanaged
16068 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
16070 * dependencyobject.cpp: We need to raise changed events when clearing
16072 * cbinding.cpp, cbinding.h: Regenerated.
16074 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
16076 * dependencyproperty.h: Added a IsNullable setter (instead of adding
16077 yet another parameter to the Register methods).
16079 2008-12-02 Andreia Gaita <shana@jitted.com>
16081 * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
16083 2008-12-02 Andreia Gaita <shana@jitted.com>
16085 * panel.cpp: Fix debugging messages
16087 2008-12-01 Larry Ewing <lewing@novell.com>
16089 * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
16090 we can handle image and video brush opacity properly.
16096 * src/text.cpp: use the new Fill and Stroke methods when using
16097 brushes. Fixes test-imagebrush-opacity* when the masters are
16100 2008-12-01 Chris Toshok <toshok@ximian.com>
16102 * frameworkelement.h: add decl for ClearBindingExpression.
16104 * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
16105 factor out the 2 operations (Detach + hash_remove) here since
16106 we'll be calling it in a couple places.
16107 (binding_destroy): this should delete value, not call ValueFree.
16108 (FrameworkElement::SetBindingExpression): call
16109 ClearBindingExpression if there's a current one, and don't ref the
16110 expression. Value will hold one.
16111 (FrameworkElement::ClearValue): a couple of changes.
16113 1. Call ClearBindingExpression instead of just removing the
16114 binding from the hash (and not detaching it...)
16116 2. don't remove the style value from the style has.
16118 3. instead of looping over all the setters in the style just set
16119 the value back to the value in the styles hash.
16121 4. if we're going to be resetting the value to the style, don't
16122 notify listeners in UIElement::ClearValue. it'll happen in
16125 2008-12-01 Geoff Norton <gnorton@novell.com>
16127 * audio.cpp: Fix a logic error that prevented falling back to alsa when
16128 built with both pulse and alsa support.
16132 2008-12-01 Chris Toshok <toshok@ximian.com>
16134 * template.cpp, template.h: when copying the tree over, register
16135 the template element names to their instantiated counterparts.
16136 and build up a NameScope object as we go.
16138 * frameworkelement.cpp: add a "template_namescope" which maps
16139 names that were registered in the template itself to elements in
16140 the instantiated visual tree.
16142 * control.cpp (Control::GetTemplateChild): look the child up in
16143 the template namescope, not against the visual tree.
16145 2008-12-01 Jackson Harper <jackson@ximian.com>
16147 * xaml.cpp: Value types can not have properties set on them.
16149 2008-12-01 Fernando Herrera <fherrera@novell.com>
16151 * mediaelement.cpp:
16155 * playlist.h: Implement Server side playlists. Still missing duration based
16158 2008-12-01 Alan McGovern <amcgovern@novell.com>
16160 * border.h: ChildProperty should not be exposed
16162 2008-12-01 Alan McGovern <amcgovern@novell.com>
16164 * frameworkelement.cpp: If a null value is being set to a DP when using
16165 databinding, clear the value instead. Makes test pass. (left this out
16166 of the last commit)
16168 2008-11-28 Alan McGovern <amcgovern@novell.com>
16174 * frameworkelement.cpp: DataBinding now works for one-way, one-time and
16175 two-way bindings with managed objects.
16177 2008-11-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
16179 * audio.cpp: Remove a print_stack_trace.
16181 2008-11-27 Andreia Gaita <shana@jitted.com>
16183 * runtime.cpp: enable debug #if that was disabling the D key.
16185 2008-11-27 Alan McGovern <amcgovern@novell.com>
16187 * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
16189 2008-11-27 Alan McGovern <amcgovern@novell.com>
16195 * frameworkelement.cpp: Allow the Binding class to be mapped between
16196 managed and unmanaged code.
16198 2008-11-26 Larry Ewing <lewing@novell.com>
16200 * shape.cpp (Shape::IsCandidateForCaching): add more logic to
16201 avoid the cache in special cases.
16203 2008-11-26 Jackson Harper <jackson@ximian.com>
16205 * xaml.cpp|h: clean up the managed/plugin interface, use Values
16206 for most things instead of expected DependencyObjects.
16207 * deepzoomimagetilesource.h|cpp: Add the uri property and a public
16208 constructor so we can parse these from attributes.
16210 * dependencyproperty.g.cpp: regen
16212 2008-11-26 Alan McGovern <amcgovern@novell.com>
16214 * frameworkelement.cpp: Store a Value * rather than
16215 BindingExpressionBase in the bindings hashtable to allow
16216 GetLocalValue to work.
16218 2008-11-26 Alan McGovern <amcgovern@novell.com>
16220 * frameworkelement.h:
16221 * dependencyobject.h:
16222 * frameworkelement.cpp: Styles are now used/ignored correctly when local
16223 values are set/unset. Added tests for this.
16225 * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
16227 * shape.cpp: args->new_value will be null if DO.ClearValue has been
16228 called. In this case use DP.DefaultValue
16230 2008-11-26 Alan McGovern <amcgovern@novell.com>
16236 * frameworkelement.h:
16237 * dependencyobject.h:
16238 * frameworkelement.cpp:
16239 * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
16240 unmanaged code. Only handles databindings.
16242 2008-11-26 Alan McGovern <amcgovern@novell.com>
16248 * frameworkelement.cpp: Rename the members of BidningExpressionBase to
16249 better reflect their actual usage.
16251 2008-11-26 Alan McGovern <amcgovern@novell.com>
16256 * collection.cpp: InsertWithError should return a bool to match Insert
16259 * media.cpp: Fix regression introduced in r119963 when changing which
16260 collection functions were virtual
16262 2008-11-25 Larry Ewing <lewing@novell.com>
16264 * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
16267 * media.cpp (Image::GetCoverageBounds): be slightly smarter about
16268 computing coverage.
16270 2008-11-25 Geoff Norton <gnorton@novell.com>
16272 * cbinding.(cpp|h): Regenerate
16273 * downloader.h: Expose the status code and status text to the
16274 DownloaderResponse object.
16276 2008-11-25 Alan McGovern <amcgovern@novell.com>
16284 * dependencyproperty.g.cpp: Added full support for sealing styles.
16286 2008-11-25 Stephane Delcroix <sdelcroix@novell.com>
16288 * multiscaleimage.h: element_to_logical_point
16290 2008-11-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
16292 * cbinding.cpp, cbinding.h: Regenerated.
16294 2008-11-24 Larry Ewing <lewing@novell.com>
16296 * media.cpp (MediaBase::SetSource): only queue a tick if we need
16297 to, fixes regression on mediaelement downloaders.
16301 2008-11-24 Larry Ewing <lewing@novell.com>
16303 * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
16304 precise about the coverage bounds. Use the coveragebounds when
16305 invalidating based on position so that we don't invalidate a lot
16306 more area than we need to. Only use CAIRO_FILTER_FAST when
16307 playing use the default when in other states.
16309 2008-11-24 Geoff Norton <gnorton@novell.com>
16311 * media.cpp: If we do a SetSource on a image element with a
16312 completed downloader, short circuit the async call, as the downloader
16313 theoretically can be immediately reused in javascript after the call.
16314 Also remove the internal completed event after its been fired, for the
16315 same reason (downloader reuse). Fixes halo3
16319 2008-11-24 Larry Ewing <lewing@novell.com>
16321 * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
16322 them where appropriate.
16324 * mediaplayer.cpp: use MOON_FORMAT_RGB.
16326 2008-11-24 Larry Ewing <lewing@novell.com>
16328 * brush.cpp, brush.h: add IsAnimating member to indicate if the
16329 brush is expected to change each render tick.
16331 * shape.cpp: don't cache animating brushes.
16333 2008-11-22 Jeffrey Stedfast <fejj@novell.com>
16335 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16336 Set the destination element and property on the binding expression
16337 so that we can easily get at them in the callback when the source
16338 property changes. Instead of passing 'this' as the user_data
16339 argument to the property change handler, pass the expression.
16340 (FrameworkElement::BoundPropertyChanged): No longer need to
16341 iterate thru the hash table, we now are able to get all the info
16342 we need from the binding expression.
16343 (FrameworkElement::bound_property_changed): Updated.
16345 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16347 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16348 Implemented properly (I think/hope).
16350 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16352 * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
16353 callback and user data.
16354 (BindingExpressionBase::DetachListener): Now takes a callback.
16356 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16357 Moved here from binding.cpp.
16358 (FrameworkElement::SetBindingExpression): Made protected instead
16360 (FrameworkElement::GetBindingExpression): Same.
16362 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16364 * frameworkelement.cpp: Fixed to build w/o SL2 support.
16366 2008-11-21 Larry Ewing <lewing@novell.com>
16368 * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
16369 filter in videobrush when scaling.
16373 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16375 * binding.cpp (changed_cb): Implemented... but it's
16376 wrong. Committing anyay with a big FIXME explaining why it's
16379 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16380 New method to set a binding expression for a property.
16381 (FrameworkElement::GetBindingExpression): Get the binding
16382 expression for a property.
16383 (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
16384 stuff to make the logic a bit clearer.
16386 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16388 * binding.cpp (BindingExpressionBase::AttachListener): We want to
16389 use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
16390 we want to provide our own callback, not re-use
16391 OnSubPropertyChanged() for a purpose it wasn't meant for.
16393 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
16394 #if 0'd out, we might not need this afterall.
16396 * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
16397 chaining up if the property change wasn't handled.
16399 * text.cpp (Inline::OnSubPropertyChanged): Same.
16400 (TextBlock::OnSubPropertyChanged): Same.
16401 (Glyphs::OnSubPropertyChanged): Same.
16403 2008-11-21 Larry Ewing <lewing@novell.com>
16405 * shape.cpp: disable custom layout code as it seems to have
16406 changed in 2.0 final.
16408 2008-11-21 Alan McGovern <amcgovern@novell.com>
16410 * frameworkelement.cpp: If a style is already set, you cannot set it
16413 2008-11-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
16415 * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
16416 create such a Value.
16418 2008-11-21 Alan McGovern <amcgovern@novell.com>
16420 * frameworkelement.cpp: Implement initial support for using a Style when
16423 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
16425 * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
16426 (TextBlock::OnSubPropertyChanged): Always chain up.
16427 (Glyphs::OnSubPropertyChanged): Always chain up.
16429 * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
16431 * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
16433 * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
16435 * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
16436 might not be correct.
16438 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
16441 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
16443 * binding.cpp (BindingExpressionBase::AttachListener): Now takes
16444 an FE argument as the listener.
16445 (BindingExpressionBase::DetachListener): Same.
16447 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16450 2008-11-20 Alan McGovern <amcgovern@novell.com>
16455 * frameworkelement.cpp: Add more support code for databinding.
16457 2008-11-19 Geoff Norton <gnorton@novell.com>
16459 * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
16460 giving up on media entirely.
16464 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
16466 Note: the way this is abstracted will probably go thru several
16467 iterations of change.
16469 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16470 Do special handling if setting a binding expression or if the
16471 value is replacing a binding expression.
16473 * dependencyobject.cpp (DependencyObject::IsValueValid): Made
16474 protected, no reason for this to be public.
16475 (DependencyObject::SetValueWithErrorImpl): New virtual method, has
16476 all the code logic of the old SetValueWithError().
16477 (DependencyObject::SetValueWithError): Call IsValueValid() and
16478 then SetValueWithErrorImpl().
16480 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
16482 * frameworkelement.cpp (FrameworkElement::IsValueValid):
16483 Overridden so that we can check if the Value is a
16484 BindingExpression. All DependencyProperties of FrameworkElements
16487 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
16489 * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
16490 Rendered/DroppedFramesPerSecond DP.
16491 * pipeline.cpp: Fix warning.
16493 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
16495 * dependencyproperty.g.cpp: Regenerated.
16496 * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
16497 * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
16498 and DroppedFramesPerSecond.
16500 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
16502 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
16503 type-generated.cpp, value.h: Added InputMethod.
16505 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
16507 * geometry.cpp: Fix breakage in r119300.
16509 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
16511 * dependencyproperty.g.cpp, transform.h: Corcompare.
16512 * geometry.h: Move FillRule from Geometry to
16513 PathGeometry/GeometryGroup.
16515 2008-11-18 Jeffrey Stedfast <fejj@novell.com>
16517 * expression.h, binding.cpp|h: added to the build
16519 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
16521 * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
16523 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
16525 * uielement.h: Define UseLayoutRounding accessors to unbreak build.
16527 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
16529 * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
16530 uielement.h: More corcompare work.
16532 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
16534 * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
16535 value.h: Add TriggerBase, make EventTrigger inherit from it and
16538 2008-11-17 Jeffrey Stedfast <fejj@novell.com>
16540 * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
16542 2008-11-17 Michael Dominic K. <mdk@mdk.am>
16544 * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple
16545 repeats when seeking anims with RepeatBehavior >= 2.0).
16547 2008-11-17 Michael Dominic K. <mdk@mdk.am>
16549 * clock.cpp: When running without idle hint (runtime init) do not apply it
16550 here. Makes the idle hint switch actually do something and makes debugging
16553 2008-11-14 Michael Dominic K. <mdk@mdk.am>
16556 * animation.h: The KeySpline quadratics used to generate interpolation
16557 values are generated dynamically = faster and less mem.
16559 2008-11-14 Michael Dominic K. <mdk@mdk.am>
16562 * animation.h: Slightly more nice value caching.
16564 2008-11-14 Geoff Norton <gnorton@novell.com>
16567 * codec-url.h: Update to the final URLs for beta 1
16571 2008-11-14 Geoff Norton <gnorton@novell.com>
16573 * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to
16574 handle the pango markup we're using.
16578 2008-11-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
16580 * mediaelement.cpp: SetMedia: when getting the playlist for an
16581 asxdemuxer, set the media for it. Fixes a memory leak (the media
16582 should get disposed with the playlist gets disposed).
16583 * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
16584 * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
16585 add a parameter to PlaylistEntry::SetMedia to specify whether the
16586 entry should start playing the media or not.
16588 2008-11-13 Sebastien Pouliot <sebastien@ximian.com>
16590 * runtime.cpp (running_on_nvidia): Fix leak of Display
16593 2008-11-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
16595 * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
16596 request even if we're currently playing, there might be a PauseNow
16597 request already queued.
16599 2008-11-11 Sebastien Pouliot <sebastien@ximian.com>
16601 * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
16604 2008-11-11 Geoff Norton <gnorton@novell.com>
16606 * Makefile.am: Only build the appropriate pipeline-ui based on wether
16607 we're building on a os/arch combo that supports the SMP.
16608 * codec-url.h: Set the appropriate CODEC_URL for our target platform
16609 * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
16610 of the codec install pipeline.
16612 2008-11-11 Geoff Norton <gnorton@novell.com>
16614 * debug.h: Its unlikely that debug flags will be set.
16618 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
16620 * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
16621 Plugs a memory leak.
16623 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
16625 * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
16628 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
16630 * pipeline.cpp, pipeline.h: Plug a memory leak.
16632 2008-11-10 Geoff Norton <gnorton@novell.com>
16634 * runtime.cpp: Do not enable debug features by default, and remove a
16635 superflous warning.
16638 2008-11-10 Geoff Norton <gnorton@novell.com>
16640 * runtime.cpp: Force NVIDIA binary driver to go to the image backend
16641 to work around serious performance problems when we use accelerated
16645 2008-11-10 Chris Toshok <toshok@ximian.com>
16647 * runtime.cpp (copy_input_list_from_node): rename
16648 copy_input_list_with_visibility_check to this method. the
16649 caller (HandleMouseEvent) already walks over the list to determine
16650 if an element has total render or hittest visibility == false. By
16651 definition, everything before that in the input list (the input
16652 list is ordered from most deeply nested to the root) also has
16653 those == false, so we can short circuit things by traversing from
16654 the tail of the list, and then only copying the nodes we've seen
16655 before (but which come after) the offending one.
16657 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16659 * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
16660 pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
16661 move that to Playlist(Entry) and Dispose of the playlist instead.
16662 This makes re-playing already played content in playlists work
16665 2008-11-10 Michael Dominic K. <mdk@mdk.am>
16668 * animation.h: Cache some vals internally in *Animation for better
16669 performance in loop-called routines.
16671 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16673 * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
16674 Implement MediaElement.AudioStreamIndex.
16676 2008-11-07 Michael Dominic K. <mdk@mdk.am>
16678 * clock.cpp: Fixing one broken block in the AnimationMatrix2 test.
16679 It was broken but diff was too small to be picked by the test runner.
16681 2008-11-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
16683 * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
16684 need to keep decoding until the entire input has been consumed.
16686 2008-11-06 Geoff Norton <gnorton@novell.com>
16688 * pipline(-ui).cpp: Move the codec location on more time.
16691 2008-11-05 Michael Dominic K. <mdk@mdk.am>
16694 * animation.h: Fixing one more mem-leak case. Fixes #436068.
16696 2008-11-06 Stephane Delcroix <sdelcroix@novell.com>
16698 * downloader.h: change the signature of downloaderRequestFinishedHandler
16699 to pass the resulting uri.
16701 * downloader.cpp: validate the returned uri against redirection policies
16705 2008-11-05 Jeffrey Stedfast <fejj@novell.com>
16707 Patches by Argiris Kirtzidis to fix bug #441687
16709 * audio.cpp: Use g_alloca() to create dynamically sized arrays on
16710 the stack rather than relying on g++ features.
16712 * clock.cpp: Applied MSVC portability patch which implements
16715 2008-11-04 Fernando Herrera <fherrera@novell.com>
16717 * mediaplayer.cpp: Add logging information about selected streams
16720 2008-11-03 Jeffrey Stedfast <fejj@novell.com>
16722 See tests/xaml/test-textblock-actualheight.html and
16723 test-textblock-hittest.html as compared with Microsoft
16726 * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
16727 actually do count toward ActualHeight metrics.
16729 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16731 * audio-pulse.cpp: OnContextStateChanged: always print an error message
16732 if we fail to connect to pa daemon.
16734 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16736 * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
16737 invalidate when that flag is set.
16739 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16741 * runtime.cpp: get_flags: take the default flags as an argument, this
16742 way the environment variables can disable flags which are enabled
16745 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16747 * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
16748 codecs by default for browsers.
16750 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16752 * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
16753 because of a buffer underflow and we're waiting for the initial
16754 frame, enqueue a request for another frame. Fixes #440317.
16756 2008-11-03 Larry Ewing <lewing@novell.com>
16758 * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
16759 extreme exposure issues in popfly.
16761 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16763 * runtime.h: Remove #include <config.h> from headers
16765 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16767 * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
16768 reading a header, try to sync to one. FindMpegHeader: Return proper
16769 error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
16770 #426440 (slideshow doesn't go beyond the first slide).
16772 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16774 * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
16775 opened, the final state is Stopped, not Paused. When media finish,
16776 the final state is Paused, not Stopped. Fixes #365827.
16778 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16780 * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
16781 external reference.
16783 2008-11-03 Fernando Herrera <fherrera@novell.com>
16791 * dependencyobject.cpp:
16794 * http-streaming.cpp:
16797 * mediaelement.cpp:
16799 * mms-downloader.cpp:
16800 * pipeline-asf.cpp:
16801 * pipeline-ffmpeg.cpp:
16810 * yuv-converter.cpp: Change debug macros to runtime conditionals based
16811 on MOONLIGHT_DEBUG env variable of compile time. Checks are only
16812 enabled if configured with --with-debug=yes option.
16814 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16816 * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
16819 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
16821 * pipeline-ffmpeg.cpp: Revert r117547 and related.
16823 2008-11-02 Chris Toshok <toshok@ximian.com>
16825 * text.cpp (TextBlock::InsideObject): textblocks are hit only in
16826 their ActualWidth/ActualHeight, not in the full bounding
16827 rectangle. Fixes bug #434258.
16829 2008-10-31 Chris Toshok <toshok@ximian.com>
16831 * runtime.h, runtime.cpp: remove transparency from properties of
16833 (Surface::PaintToDrawable): add a @transparent argument to this
16836 * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
16837 transparency to Surface::PaintToDrawable.
16839 * window.h: move the idea of transparency here from Surface.
16841 2008-10-31 Jeffrey Stedfast <fejj@novell.com>
16843 Portability patch by Argiris Kirtzidis.
16845 * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
16847 * xaml.cpp (start_element): strchr() returns const.
16848 (repeat_behavior_from_str): Same.
16850 2008-10-31 Larry Ewing <lewing@novell.com>
16852 * runtime.cpp (Surface::PaintToDrawable): instead of the content
16853 type check if active_window is fullscreen. This is uglier but the
16854 mozilla hands us rgb drawables not rgba drawables so until we have
16855 a better plan this will solve the problem.
16857 2008-10-31 Larry Ewing <lewing@novell.com>
16859 * runtime.cpp (Surface::PaintToDrawable): only follow the
16860 transparent path if our target supports it.
16862 2008-10-31 Sebastien Pouliot <sebastien@ximian.com>
16864 * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
16865 a bad stream so we dont include NULL holes streams[]
16867 2008-10-31 Michael Dominic K. <mdk@mdk.am>
16869 * runtime.cpp: Reverting for now the recent crossing events
16870 changes -- causes issues with Ink Journal.
16872 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16874 * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
16875 * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
16876 complex ifs on the GetType return value.
16878 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16880 * debug.cpp: dlopen libmono too for our stack walking methods.
16882 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16884 * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
16885 present in older ffmpeg version (r10885).
16887 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16889 * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
16892 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16894 * pipeline-ffmpeg.cpp: dlopen ffmpeg.
16896 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
16898 * pipeline.cpp: Fix warning (variable might be used uninitialized).
16900 2008-10-30 Jeffrey Stedfast <fejj@novell.com>
16902 Fix for bug #435815.
16904 * stylus.cpp (StrokeCollection::AddedToCollection): Override so
16905 that we can avoid aborting if a stroke already has a logical
16906 parent (not an error for strokes).
16908 * error.h (MoonError::Clear): New convenience method.
16910 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16912 * libmoon.h: Fix build.
16914 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16916 * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
16917 Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
16918 mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
16919 src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
16920 into its own mediaelement.[cpp|h].
16922 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16924 * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
16925 mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
16926 mplayer.[cpp|h] -> mediaplayer.[cpp|h].
16928 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16930 * cbinding.cpp, cbinding.h: Regenerated.
16932 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16934 * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
16935 mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
16936 pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
16937 pipeline.[h|cpp] to pipeline-asf.[h|cpp].
16939 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16941 * pipeline.h: IMediaDemuxer: Add Source getter.
16942 * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
16943 account streams which aren't selected. IMediaStream::AppendFrame:
16944 update last available pts with the frame's pts.
16945 * media.cpp: MediaElement::CalculateBufferingProgress: never use last
16946 available pts to calculate buffering progress for streams which can
16947 seek to directly to the requested pts. Fix math to check for
16948 negative values to avoid weird results.
16950 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
16952 * media.cpp, media.h: MediaElement: fix buffering progress after
16953 seeking regression - don't only use the buffer level in the
16954 pipeline to report buffering progress, but take into accout the
16955 point from where we seek.
16956 * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
16957 the stream's LatestAvailablePts field whenever we read a frame.
16958 Also rename the previous 'stream' (IMediaSource*) field to 'source'
16959 to avoid confusion with AudioStream.
16960 * pipeline.cpp, pipeline.h: Add a last_available_pts field to
16961 IMediaStream and the corresponding GetLastAvailablePts to
16962 IMediaDemuxer, enabling the calculation of correct buffering
16963 progress after a seek. This also requires a codec abi version bump.
16965 2008-10-29 Sebastien Pouliot <sebastien@ximian.com>
16967 * clock.h: Change MilliSeconds_[From|To]Pts to use the new
16968 PTS_PER_MILLISECOND define.
16969 * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
16970 resulting in zero (and the endless loop of #439631).
16972 2008-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
16974 * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
16977 2008-10-28 Jeffrey Stedfast <fejj@novell.com>
16979 * downloader.cpp (scheme_is): Check protocol non-null.
16980 (same_scheme): Same.
16982 * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
16983 instead of file. Also make sure to parse the path in all valid
16986 2008-10-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
16988 * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
16990 * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
16993 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
16995 * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
16996 to parse out the uri scheme.
16998 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
17000 Performance optimization patch for bug #409793
17002 * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
17003 Rect bounds argument so that we can update a bounds of our
17005 (Stroke::ComputeBounds): Updated.
17006 (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
17007 (Stroke::OnCollectionItemChanged): Same.
17008 (InkPresenter::PostRender): Reset stroke dirty regions.
17009 (InkPresenter::OnCollectionItemChanged): Invalidate only the
17010 stroke's dirty region.
17012 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17014 * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
17017 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17019 * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
17021 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
17022 up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
17023 i.e. the decoder output is the input of the previous time we called
17024 avcodec_decode_video, so keep track of pts from previous frame and
17025 properly set pts of the decoded frame.
17027 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17029 * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
17030 frame is above the target pts (previously we only showed the frame
17031 if the start pts was above the target pts, causing us to show one
17032 frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
17034 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17036 * media.cpp: MediaElement::Play: Call Play when in Opening state too.
17038 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17040 * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
17041 we should just work as if there's no audio at all. The video might
17042 play after the audio has stopped if the a/v streams have different
17045 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17047 * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
17048 queue_mutex unlocked, since the node dtor may cause unrefs, causing
17049 other dtors to be called, and it may all end up in Media::Dispose
17050 which will then try to lock the mutex again (and deadlock).
17052 2008-10-24 Jeffrey Stedfast <fejj@novell.com>
17054 * font.cpp (style_info_parse): Tokenize the style string so that
17055 the individual sub-parsers can be a bit smarter than than
17057 (style_width_parse): Made smarter - now handles lwsp between
17058 multi-word width specifiers (or no lwsp at all).
17059 (style_weight_parse): Same.
17061 2008-10-23 Larry Ewing <lewing@novell.com>
17063 * media.cpp: remove compute bounds since it mirrors
17064 FrameworkElement now.
17066 2008-10-23 Larry Ewing <lewing@novell.com>
17068 * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
17071 2008-10-23 Jeffrey Stedfast <fejj@novell.com>
17073 * textbox.cpp (TextBox::Paint): Updated.
17075 * text.cpp (TextBlock::Paint): Updated.
17077 * layout.cpp (TextLayout::Render): Swapped origin & offset
17078 arguments which feels more natural to me.
17080 2008-10-23 Sebastien Pouliot <sebastien@ximian.com>
17082 * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
17083 width over 2048 pixels since this is likely to be corrupted values.
17084 * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
17085 someday people will laugh at me for proposing such a small value)
17087 2008-10-23 Larry Ewing <lewing@novell.com>
17089 * layout.cpp, layout.h: Change the Render api to drop the uielement argument.
17092 * text.cpp: call layout with the new arguments.
17094 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17096 * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
17097 fast-forwarding video when seeking to a position which hadn't been
17098 downloaded (since we automatically pause the video then). Fixes
17101 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17103 * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
17104 DroppedFramesPerSecond. Only in SL 2.0, but very useful for
17107 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17109 * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
17110 changed size). IMediaStream: Remove msec_per_frame, it's already in
17111 VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
17112 loose less precision.
17113 * mplayer.cpp: Calculate advance frame timeout based on video fps.
17115 2008-10-22 Chris Toshok <toshok@ximian.com>
17117 * runtime.cpp (Surface::HandleUICrossing): disable the crossing
17118 check from r116528 in the case of a windowless plugin (where
17119 event->window == NULL). Also, active_window->GetGdkWindow should
17120 never be trusted to return the actual window - it's use is
17121 strictly to find the screen/monitor for full-screening. In the
17122 windowless case it returns the toplevel netscape window.
17124 2008-10-22 Larry Ewing <lewing@novell.com>
17126 * brush.cpp, brush.h: remove the uielement references from the api
17127 pass the required information as a rect to SetupBrush instead.
17129 * shape.cpp, shape.h:
17135 * broder.cpp: update SetupBrush callers for the new signature.
17137 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17139 * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
17140 last_current_pts to their max value, to detect when they haven't
17141 been set yet. Properly reinitialize these variables (to their max
17142 values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
17144 * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
17145 current pts, handle this. Fixes fast-forwarding issue in #435908.
17147 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17149 * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
17150 use random memory if we don't have a reader.
17152 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17154 * mms-downloader.cpp: Add logging methods.
17156 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17158 * media.cpp: Sprinkle Dispose calls to plug leaks.
17160 2008-10-20 Chris Toshok <toshok@ximian.com>
17162 * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
17163 before reassigning (and reallocating memory for) it.
17165 * dependencyobject.h, dependencyobject.cpp: add an optional
17166 argument to all the EventObject::AddHandler* overloads, called
17167 data_dtor, which is invoked just before the EventClosure is
17168 destroyed so that the data can be freed.
17170 2008-10-20 Chris Toshok <toshok@ximian.com>
17172 * window-gtk.h, window-gtk.cpp: move the Surface conversion from
17173 MouseCursor -> GtkCursor here.
17175 * runtime.h, runtime.cpp: surface only deals with MouseCursors
17176 anymore. the gtk support is in window-gtk now.
17178 * window.h: remove SetCursor (GdkCursor) and add
17179 SetCursor (MouseCursor), so subclasses of MoonWindow can do their
17182 2008-10-20 Jeffrey Stedfast <fejj@novell.com>
17184 * media.cpp (MediaElement::MediaOpened): If the stream decoder is
17185 null, use null for the decoder_name. Fixes a segfault.
17187 2008-10-20 Sebastien Pouliot <sebastien@ximian.com>
17189 * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
17190 since a lot of loops don't handle NULL values.
17192 2008-10-20 Michael Dominic K. <mdk@mdk.am>
17194 * runtime.cpp: More fixes to crossing events: when entering fullscreen
17195 ignore the crossing events coming from previous window. Otherwise we get
17196 double enter/leave pair.
17198 2008-10-20 Michael Dominic K. <mdk@mdk.am>
17200 * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case
17201 correctly (no parent window).
17203 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
17205 * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
17206 nothing if not DEBUG is set, removing the need for surrounding all
17207 print_stack_trace calls with #if DEBUG.
17209 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
17211 * pipeline.cpp: Remove debugging code.
17213 2008-10-17 Michael Dominic K. <mdk@mdk.am>
17217 * applier.h: Fixing one more osbcure case of Storyboard transitions where
17218 stopping a prev sboard makes the next one starting from bad base value.
17220 2008-10-17 Michael Dominic K. <mdk@mdk.am>
17222 * runtime.cpp: Make sure we get the new pointer motion notify when
17223 entering/leaving fullscreen. This fixes the fullscreen-enter-leave test
17224 but interestingly doesn't fix the original problem of #434267.
17226 2008-10-17 Sebastien Pouliot <sebastien@ximian.com>
17228 * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
17229 when using "backend=image".
17231 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17233 * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
17234 now, not tiled), and fix inner loop, we were including one pixel
17235 too many for width and height.
17237 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17239 * pipeline.cpp: RegisterMSCodecs: if there's no codec in
17240 ~/.mozilla/plugins, use just the filename of the codec library and
17241 make dlopen search for it. This makes it easier to run parallell
17242 tests from different revisions without having the codecs from each
17243 revision overwrite eachother in user's home.
17245 2008-10-16 Geoff Norton <gnorton@novell.com>
17247 * pipeline.cpp: Dont tile our logo, it looks like ass. Lets
17248 center it in the available window instead.
17250 2008-10-16 Geoff Norton <gnorton@novell.com>
17252 * pipeline-ui.cpp: Avoid a resize when realizing which causes an
17253 annoying flicker in the codec window.
17255 2008-10-16 Geoff Norton <gnorton@novell.com>
17257 * pipeline.cpp: Unbreak the world.
17259 2008-10-16 Geoff Norton <gnorton@novell.com>
17261 * pipeline(-ui).cpp: Use the updated mscodec name and location.
17263 2008-10-16 Fernando Herrera <fherrera@novell.com>
17265 * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
17267 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
17269 * text.cpp (TextBlock::Layout): Delay allocation of List so that we
17270 don't leak when TextBlock::TextProperty is NULL.
17272 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
17274 * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
17275 on the window. Fix one more leak.
17277 2008-10-16 Jb Evain <jbevain@novell.com>
17279 * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
17280 mark managed constructor internal.
17282 2008-10-16 Jb Evain <jbevain@novell.com>
17284 * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
17285 instead of an ArgumentException when providing an out of range index.
17287 2008-10-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17289 * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
17291 2008-10-15 Chris Toshok <toshok@ximian.com>
17293 * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
17294 is already down, and if so, don't emit another event. (really?
17295 there's a test for this? ugh.). also, let Keyboard know the key
17297 (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
17299 * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
17300 quite a bit -- it might soon deserve its own file. It now
17301 maintains a static hashtable of keys that are pressed/released
17302 inside the moonlight plugin, and has logic to map a gdk keyval to
17303 Key, and query if a particular key is pressed.
17305 2008-10-15 Larry Ewing <lewing@novell.com>
17307 * uielement.cpp: fix the transform ordering.
17309 * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
17311 2008-10-15 Larry Ewing <lewing@novell.com>
17313 * uielement.cpp, uielement.h: remove UpdatePosition and
17314 ComputePosition, all transform changes are handled in
17315 ComputeTransform now.
17317 * shape.cpp, shape.h: update for the new transform api.
17319 * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
17321 * canvas.cpp: Use UpdateTransform.
17323 * point.h: add a (lame) == operator.
17325 2008-10-15 Larry Ewing <lewing@novell.com>
17327 * geometry.cpp, geometry.h: add shape bounds caching to all
17328 geometry classes apply the transform when retrieving the bounds.
17329 Make GetBounds the public bounds interface and make the
17330 computation interface protected.
17332 * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
17334 2008-10-14 Larry Ewing <lewing@novell.com>
17336 * geometry.cpp, geometry.h: remove unused arguments to
17337 ComputeBounds remove caching from PathGeometry.
17339 * uielement.cpp, shape.cpp: call with correct arguments.
17341 2008-10-14 Larry Ewing <lewing@novell.com>
17343 * uielement.cpp, uielement.h: make ComputeTransform virtual and
17344 have it return a bool.
17346 * shape.cpp, shape.h: override ComputeTransform and optimize the
17347 bounds computations. Use a general ComputeShapeBounds for actual
17348 drawn bounds compuations for now.
17350 * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
17351 circuit path to DirtyTransform for elements that can recompute
17352 without updating bounds.
17354 2008-10-13 Larry Ewing <lewing@novell.com>
17356 * geometry.cpp, geometry.h: remove unused arguments from function
17359 * uielement.cpp, shape.cpp: update calls.
17361 2008-10-15 Jeffrey Stedfast <fejj@novell.com>
17363 Fix for bug #435798
17365 * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
17366 that we are setting the default brush/inlines.
17367 (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
17370 2008-10-14 Chris Toshok <toshok@ximian.com>
17372 * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
17374 (MoonWindowGtk::InitializeFullScreen): unref the return value of
17377 * cbinding.h, cbinding.cpp: regen so we don't have to use void*
17378 for the parent parameter to MoonWindowGtk.
17380 2008-10-14 Sebastien Pouliot <sebastien@ximian.com>
17382 * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
17383 the hashtable while we're flushing it on shutdown. Add a few more
17384 checks and avoid re-creating the hashtable on flush.
17386 2008-10-14 Geoff Norton <gnorton@novell.com>
17388 * pipeline-ffmpeg.cpp: FFMpeg changed the API with version #52, no
17389 longer requiring the bits_per_pixel.
17391 2008-10-14 Stephane Delcroix <sdelcroix@novell.com>
17393 * window.h: GetGdkWindow () method
17395 * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
17396 taking the parent window reference. Only go fullscreen on the monitor
17397 moonlight is running on.
17399 * runtime.cpp: call the new MoonWindowGtk ctor
17401 2008-10-14 Fernando Herrera <fherrera@novell.com>
17403 * pipeline-ui.cpp: Override codecs download URL with
17404 MOONLIGHT_CODEC_URL env variable if present.
17406 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
17408 * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
17409 variable expecting it to be the value returned from read(), don't
17410 modify it inside the loop, use another variable for that. Before
17411 eating leading whitespace, make sure we have data.
17413 2008-10-13 Fernando Herrera <fherrera@novell.com>
17415 * audio.cpp: Fix AudioSources::GetNext iteration for next playing
17416 source logic. Fixes bug #433267
17418 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
17420 * media.cpp (MediaElement::Play): Don't add a TickCall to start
17421 playing if we haven't even opened the media yet. Fixes bug
17424 2008-10-13 Michael Dominic K. <mdk@mdk.am>
17426 * dependencyproperty.cpp: Fixing a mem leak.
17428 2008-10-13 Michael Dominic K. <mdk@mdk.am>
17430 * animation.cpp: Reverting the whole attaching-to-prev storage in Begin.
17431 This fixes some recent problems in PopFly.
17433 2008-10-10 Jeffrey Stedfast <fejj@novell.com>
17435 * downloader.cpp (validate_policy): Made static so we don't export
17438 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
17440 * dependencyproperty.cpp (detach_target_func): Fix bad function
17441 signature for GHFunc.
17442 * dependencyobject.cpp (unref_object): Fix bad function signature
17445 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17447 * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
17448 start buffering until this is set to true (starts out as false).
17449 * media.cpp: Only enable buffering on the media after reading the
17450 markers, otherwise we may loose markers in the beginning of the
17451 media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
17452 tick call to notify the MediaElement that a marker has been added,
17453 always check in AdvanceFrame.
17454 * mplayer.cpp: Add a null check in a printf.
17456 2008-10-10 Larry Ewing <lewing@novell.com>
17458 * media.cpp (Image::DownloaderComplete): handle the case where the
17459 sureface uri and the new uri are the same.
17461 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17463 * pipeline-logo.cpp: New logo.
17465 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17467 * media.cpp: MediaElement::Reinitialize: Dispose the media to break
17469 * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
17470 get non-decoded frames anymore. Open: Handle null demuxers,
17471 shouldn't happen, but at least we won't crash if it happens.
17472 * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
17473 Media::Open: unref the decoder after giving it to the stream, the
17474 stream now take a ref on the decoder. Media::EnqueueWork:
17475 queued_requests might be nothing if we're disposed. IMediaStream:
17476 move cleanup to dispose and take a ref on the decoder. Add decoder
17477 getter/setters, and update code to use them.
17479 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
17481 * applier.cpp: Fix another bad function signatures for GFunc.
17483 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17485 * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
17486 FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
17487 stuttering when using ffmpeg.
17489 2008-10-09 Jackson Harper <jackson@ximian.com>
17491 * runtime.cpp: The resize event is only emitted when switching
17492 from fullscreen to non fullscreen.
17494 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
17496 * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
17499 2008-10-09 Jackson Harper <jackson@ximian.com>
17501 * runtime.cpp: When we change to/from fullscreen there should be a
17504 2008-10-09 Sebastien Pouliot <sebastien@ximian.com>
17506 * media.cpp (Image::CreateSurface): Protect against a NULL
17507 filename (valid value). This will avoid crash like bug #433810
17508 even if, in this case, the problem lies elsewhere (bad downloader
17509 which looks related to #433814).
17511 2008-10-09 Jeffrey Stedfast <fejj@novell.com>
17513 * font.cpp (FontFace::LoadDefaultFace): Pass the families to
17514 LoadDefaultFont() for font name comparison, we need to match the
17515 font names exactly or fall back to the next font.
17517 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
17519 * audio.cpp: Add a nullcheck.
17521 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
17523 * media.cpp (Image::IsSurfaceCached): Don't leak (actually
17526 2008-10-08 Jeffrey Stedfast <fejj@novell.com>
17528 * font.cpp: Add fallback for Liberation fonts.
17530 * pipeline.cpp (Media::Warning): Replacement for both
17531 Media::AddMessage() methods.
17533 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
17535 * applier.cpp: Fix function signatures for GFunc and GHFunc.
17536 Fix random crash when closing silverlight world #433461
17538 2008-10-08 Larry Ewing <lewing@novell.com>
17539 * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
17540 any existing render_cb attachments before adding new ones in case
17541 our realize wordering is out of sync.
17543 Fixes the rest of b.n.c #432975
17545 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
17547 * mp3.cpp: Fix boolean->MediaResult logic.
17549 2008-10-08 Jackson Harper <jackson@ximian.com>
17551 * playlist.cpp|h: When we encounter invalid characters in an
17552 attribute try to patch them and reparse the document.
17554 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
17556 * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
17557 block sizes instead of hard-coded almost-matching values. Make
17558 mpeg_frame_length return a floating point value, and in ReadHeader
17559 calculate total duration using floating point. Fixes
17560 test-mp3-media-properties.html
17562 2008-10-08 Stephane Delcroix <stephane@delcroix.org>
17564 * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
17565 1.8.0, changing the error msg.
17567 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
17569 * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
17570 on bad XAML input when no (NULL) dependecy property is returned.
17572 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
17574 * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
17575 MediaMarker refcounted. Fix a couple of crashing leakfixes, and
17576 simplify cleanup code a tiny bit.
17578 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
17580 * audio-pulse.h: Remove unused method definition.
17582 2008-10-07 Jeffrey Stedfast <fejj@novell.com>
17584 * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
17585 the old baseValue before allocating a new one.
17587 * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
17588 delete dx_info when we're done with it. Also get rid of the
17589 unneeded parser pointer since we're just using this->parser
17592 2008-10-07 Sebastien Pouliot <sebastien@ximian.com>
17594 * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
17595 GdkColor unless we need them. Unref the pixmap after the call to
17596 gdk_cursor_new_from_pixmap.
17598 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
17600 * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
17601 a MediaFrame leak-per-node whenever the queue is cleared.
17603 * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
17604 frame->bufefr before updating it to point to a new malloc'd
17606 (ASFDemuxer::TryReadFrame): Delete the frame on error.
17607 (IMediaStream::PopFrame): After getting the node's frame, set the
17608 node->frame to NULL.
17610 2008-10-06 Larry Ewing <lewing@novell.com>
17612 * media.cpp, media.h: rework image code to skip using a downloader
17613 when a cached image surface is available. Fix a crash where
17614 multiple loading errors occur for a single image. Rewrite
17615 existing SetSourceAsync ticks when the source changes again before
17616 the initial tick was processed.
17618 The goal here is to greatly reduce the work we do in cases where
17619 existing sources are moved between images. Future work should
17620 consist of moving things to the ImageSource model internally.
17622 2008-10-06 Sebastien Pouliot <sebastien@ximian.com>
17624 * text.cpp (Glyphs::Layout): Handle NULL values coming from
17625 GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did
17626 not come up before today or why it now fails anyway).
17628 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
17630 * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
17631 stuff, it's too expensive for what we need.
17632 (ImageBrush::TargetUnloaded): Same.
17634 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
17636 * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
17638 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
17640 * pipeline.cpp: Reorganize some code.
17642 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
17644 * audio.cpp, audio.h: Access the Media directly to enqueue frames,
17645 avoiding the need for a tick call on the main thread. If audio
17646 underflowed and we don't have more data available, set buffer
17647 underflow flag on the media player.
17648 * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
17649 the data available, return MEDIA_NOT_ENOUGH_DATA.
17650 * downloader.cpp, downloader.h: Remove RequestPosition methods, no
17652 * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
17653 use that value to determine if we should seek or not.
17654 * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
17655 audio/video needs more data, but the buffer is empty.
17656 * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
17657 have an in-memory buffer of demuxed frames (one queue for frames
17658 for each stream), and calculate buffer size from that.
17659 ProgressiveSource: open an additional file descriptor for writing,
17660 makes locking unnecessary. Change al io to return failure if there
17661 is not enough data, this allows us to remove all the
17662 blocking/waiting logic. MemoryQueueSource: push seeks to
17663 MmsDownloader, instead of waiting for MmsDownloader to check for
17664 pending seeks. FileSource: don't reinvent the wheel and use stdio
17665 to get buffered io instead of having buffering logic ourselves.
17666 * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
17667 underruns correctly.
17668 * media.cpp: MediaElement: Retrieve buffer size from the demuxer
17669 instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
17670 trying to open media and retry later on.
17672 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17674 * src.mdp: Updated.
17676 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17678 * dependencyobject.cpp: Use atomic operations with
17679 objects_created|destroyed.
17681 2008-10-02 Chris Toshok <toshok@ximian.com>
17683 * resources.cpp (glib_is_stupid): we need to cast value in order
17686 2008-10-02 Geoff Norton <gnorton@novell.com>
17688 * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
17689 Add some headers needed to compile when #undef DEBUG
17691 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
17693 * xaml.cpp: Fix mixup between delete and g_free
17695 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
17697 * value.cpp: Fix == for KeyTime (padding too). Add comments and
17698 indent method correctly.
17700 2008-10-02 Jeffrey Stedfast <fejj@novell.com>
17702 * xaml.cpp: Move the definition of XamlElementInfo to the top so
17703 that g++ doesn't complain about deleting an incomplete type inside
17704 the XamlElementInstance dtor. Also gets rid of other g++ compiler
17707 * list.cpp (List::InsertAfter): New convenience function to sort
17708 of balance the API.
17710 * font.cpp (FontFace::Load): Don't ref the default face, it is
17711 returned to us with a ref already.
17713 2008-10-02 Jackson Harper <jackson@ximian.com>
17715 * xaml.cpp: Now that Info's aren't shared, Instance's can free
17716 them. Also properties need to free their name.
17718 2008-10-02 Larry Ewing <lewing@novell.com>
17720 * geometry.cpp (Geometry::OnSubPropertyChanged): move
17721 OnSubPropertChanged to Geometry to pick up transform changes until
17722 a better solution is devised. Fixes updated
17723 test-clip-invalid-update.htm.
17725 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
17727 * value.cpp: Fix == for Duration and RepeatBehavior. We can't
17728 use memcmp to compare them since they include (unassigned)
17729 padding. Both structs overrides their == operator so we use that.
17731 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
17733 * resources.cpp: Free the values (not only their content) when
17734 the hash table is destroyed. Correctly (delete) free the value
17735 when compiled against glib < 2.12 (e.g. SLED10).
17737 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
17739 * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
17740 mess clipping. Add similar fill rule setting code in Geometry::Draw
17741 because Shape::Fill is not called for clipping (but the fill rule
17742 still applies). Comment both so I don't mess with them again :)
17744 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17746 * font.cpp (FontFace::LoadGlyph): We need to force the font size
17747 if we don't own it, since we don't know what the current size is
17749 (FontFace::Kerning): Same.
17750 (FontFace::GetExtents): Here too.
17752 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17754 Attempt #2 at fixing bug #430766.
17756 * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
17757 - this helps us do better fallback for bug #430766.
17758 (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
17759 try to use the Microsoft Lucida Sans font if available. If not,
17760 fall back to GNOME's Bitstream Vera Sans font. Then fallback to
17761 DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
17762 render many of the glyphs in bug #430766, hence why it is last
17763 choice). If the user doesn't have the X.Org fonts, he's SOL.
17765 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17767 * value.h[.in],value.cpp: Fix operator == to work for non-DO and
17768 non-string values. This fix the issue of removing stuff from a
17769 ResourceDictionary (while a copy still exists in the underlying
17772 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17774 Attempt #1 at fixing bug #430766.
17776 * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
17777 argument to LoadFontFace() so that we don't fail when matching the
17778 loaded family name.
17780 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
17782 * font.cpp (FontFace::OpenFontDirectory): Now a static class
17784 (FontFace::LoadFontFace): New static method which tries to load an
17785 FT_Face given an FcPattern and a list of families.
17786 (FontFace::FontFace): No longer tries to load an FT_Face, instead
17787 we have it passed to us as an argument.
17788 (FontFace::LoadDefaultFace): New static method to load a global
17789 FT_Face representing the default system font.
17790 (FontFace::GetDefault): Instantiates a new FontFace using the
17791 global system default FT_Face.
17792 (FontFace::Load): Now takes only a TextFontDescription (much
17793 cleaner/simpler). If we are loading the default system font or if
17794 loading the requested font fails, simply return a new FontFace
17795 based on the global system default FT_Face.
17796 (TextFont::TextFont): Now takes fewer arguments (cleaner API,
17798 (TextFont::Load): Now only takes a TextFontDescription argument to
17799 make the API simpler/cleaner.
17800 (TextFontDescription::CreatePattern): Now public and takes a
17801 'sized' argument specifying whether or not the created pattern
17802 should include the size field. This is needed because TextFont
17803 caches based on all attributes while FontFace caches on everything
17804 but size. Also, don't include weight, width, or slant if our font
17805 family is the default (Portable User Interface is not allowed to
17806 have any of those attributes).
17807 (TextFontDescription::IsDefault): New method to decide if our
17808 family is the default or not.
17809 (TextFontDescription::GetFamilies): New convenience method to
17810 strsplit the family string into an array.
17811 (TextFontDescription::SetFamily): If the value "Portable User
17812 Interface" is set, set our family to NULL instead.
17814 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17816 * geometry.cpp (GeometryGroup::Draw): Make sure the original
17817 fill rule is still in effect at the end of drawing the group.
17819 2008-10-01 Chris Toshok <toshok@ximian.com>
17821 * geometry.cpp (GeometryGroup::Draw): reinstate the call to
17822 cairo_set_fill_rule removed in r105643. This fixes
17823 http://mapul.com/Tutorials.html.
17825 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
17827 * shape.cpp: (Shape::InsideObject) Move cairo_save after the
17828 extents.PointInside check since there was no cairo_restore
17829 if false was returned. Looks likely that false was not much
17830 returned (if ever).
17832 2008-09-30 Chris Toshok <toshok@ximian.com>
17834 * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
17835 recompute our bounds when an item (can only be a stylus point)
17836 changes its properties. Fixes stroke bounds in the face of
17837 dragging text in inkjournal.
17839 2008-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
17841 * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
17842 pa_stream_[cork|trigger|flush|drain] since the audio source might
17843 have gotten deleted by the time the callback is called.
17845 2008-09-30 Chris Toshok <toshok@ximian.com>
17847 * dirty.cpp (Surface::ProcessDownDirtyElements): use
17848 AddDirtyElement instead of |= to set flags, since it might require
17849 dirty list manipulation.
17851 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17853 * xaml.cpp: Fix (again) the leaks in dependency_object_add_child,
17854 this time with new/delete to make it work with non-DO.
17856 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17858 * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
17860 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17862 * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
17865 2008-09-30 Stephane Delcroix <sdelcroix@novell.com>
17867 * downloader.cpp: fix the leak in validate_policy.
17869 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
17871 * debug.cpp: Make sure allocated 'binary' is freed in every case
17872 inside addr2line_offset.
17874 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17876 * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
17877 ensures that the dtor won't be called while playing or that we'll
17878 be playing destructed sources, but Close might be called at any
17881 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17883 * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
17884 underflows and /0 errors.
17886 2008-09-29 Chris Toshok <toshok@ximian.com>
17888 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
17889 if during the course of traversing the tree, we come across a temp
17890 namescope, merge that up instead of recursing down even further.
17891 (DependencyObject::SetLogicalParent): only clear the namescope if
17892 we're merging ourselves into a parent namescope.
17894 * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
17895 here. the parser does it for us if we're parsing an element, and
17896 programmatically created objects don't seem to have them.
17898 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
17900 * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
17901 to get the download policy based on the uri. By default, returns
17903 (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
17905 (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
17906 of hardcoding mms:// check.
17907 (MediaBase::OnPropertyChanged): Same.
17909 * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
17910 (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
17911 image once we have at least 1 target which is loaded in the visual
17913 (ImageBrush::TargetUnloaded): Disallow image downloads once our
17914 loaded_count falls back to 0.
17915 (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
17917 (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
17918 and Unloaded events placed on the target object.
17920 * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
17922 * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
17923 AddTarget()/RemoveTarget() on DO property values as they are
17925 (DependencyObject::AddTarget): New virtual method which gets
17926 called on DependencyObject property values when they are set on a
17928 (DependencyObject::RemoveTarget): Same but when unset.
17930 * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
17931 state-change of allowing new downloads vs not.
17932 (MediaBase::OnLoaded): Call SetAllowDownloads(true).
17934 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
17936 * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
17937 state. Fixes some regressions introduced by moving the async
17938 downloading logic from MediaBase::SetSurface() into
17939 ImageBase::OnLoaded().
17941 2008-09-29 Sebastien Pouliot <sebastien@ximian.com>
17943 * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
17945 2008-09-28 Chris Toshok <toshok@ximian.com>
17947 * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
17948 SetValue (NameProperty) - just set the NameProperty, it'll update
17949 the proper namescope automatically.
17950 (get_parent): remove.
17951 (set_parent): remove. we no longer need to maintain a temporary
17952 chain while parsing. there's also no need for set_parent(NULL)
17954 (XamlElementInstance::TrySetContentProperty): if there was an
17955 error in DependencyObject::SetValueWithError or
17956 Collection::AddWithError, raise a parser error.
17957 (dependency_object_add_child): call
17958 Collection/ResourceDictionary::AddWithError, and raise a
17959 parser_error if it fails. also, remove set_parent (NULL) calls.
17961 * dependencyobject.h,
17962 dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
17963 (DependencyObject::RegisterAllNamesRootedAt): this now takes a
17964 MoonError argument so we can signal when there's been a conflict.
17965 (DependencyObject::SetLogicalParent): this also now takes a
17966 MoonError argument, and this is where ALL the namescope merging
17967 code lives. It's been removed from everywhere else. Also, this
17968 change means we can no longer be setting/clearing the parent in
17969 xaml.cpp, as it destroys temp namescopes.
17971 * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
17972 a MoonError parameter, so we can communicate back an
17973 error (conflicting names) properly.
17974 (NameScope::Dump): new method.
17976 * collection.h, collection.cpp (Collection::AddWithError): new
17977 method, generate a binding for this instead of Add. This allows
17978 us to check for name conflicts when a DOCollection is updated.
17979 (Collection::InsertWithError): same. Also, this method has
17980 something quirky about it - it calls AddedToCollection *before*
17981 the collection is modified. suck, but the logic in that code
17982 needs to be run before the change occurs.
17983 (Collection::AddedToCollection): add a MoonError arg so we can
17984 properly pass errors back up.
17985 (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
17987 (DependencyObjectCollection::AddedToCollection,
17988 DependencyObjectCollection::RemovedFromCollection): remove
17989 namescope handling from here.
17992 animation.cpp (KeyFrameCollection::AddedToCollection): track api
17993 change to Collection::AddedToCollection.
17995 * resources.h, resources.cpp: track changes to AddedToCollection,
17996 RegisterAllNamesRootedAt, and AddWithError. Also, remove
17997 namescope handling code from here.
17999 * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
18001 2008-09-28 Chris Toshok <toshok@ximian.com>
18003 * geometry.cpp (Geometry::OnPropertyChanged): this method was
18004 never chaining up to DependencObject::OnPropertyChanged, which it
18005 must do for properties whose ownerType != Geometry.
18007 2008-09-28 Chris Toshok <toshok@ximian.com>
18009 * media.cpp (TimelineMarkerCollection::Add): no need to check the
18010 element type of the value, by the time it makes it here it should
18011 already be the right type.
18013 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
18015 * media.cpp (MediaBase::OnLoaded): Logic moved here from
18017 (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
18018 should start the downloader yet.
18020 * xaml.cpp: Revert the hydrating check for SetSurface() from the
18021 previous commit. This is causing a bunch of failures :(
18023 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
18025 * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
18026 parser_info->hydrating and parser_info->hydrate_expecting based on
18027 whether or not we are really doing a HydrateFromString() vs
18028 CreateFromString().
18029 (create_element_info_from_imported_managed_type): Only
18030 SetSurface() if we are hydrating.
18031 (XamlElementInstanceNative::CreateItem): Same.
18032 (XamlElementInfoManaged::CreateElementInstance): Here too.
18033 (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
18034 (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
18035 (XamlElementInfoImportedManaged::CreateElementInstance): Same.
18036 (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
18037 (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
18039 2008-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
18041 * dependencyobject.cpp, dependencyobject.h: Make objects_created and
18042 objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
18043 track a specific type, might be useful when the id varies from run
18044 to run. Make Dispose public.
18045 * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
18047 * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
18048 cleanup properly there instead of in the dtor. This breaks a
18049 circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
18051 2008-09-26 Stephane Delcroix <sdelcroix@novell.com>
18053 * downloader.cpp: use StreamingPolicy for streaming
18055 2008-09-25 Jeffrey Stedfast <fejj@novell.com>
18057 * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
18058 g_str_has_prefix() on NULL strings.
18060 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18062 * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
18063 only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
18065 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18067 * downloader.cpp: validate_policy: Fix boolean logic according to
18068 comment, fixes crash.
18070 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18072 * media.cpp: Plug one more leak.
18074 2008-09-25 Stephane Delcroix <sdelcroix@novell.com>
18076 * downloader.cpp: neforce security policies on Open ()
18078 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18080 * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
18081 for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
18084 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18086 * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
18088 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18090 * downloader.cpp: Fix a potential leak.
18092 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18094 * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
18095 delete the listener link, not only remove it. Plugs a leak.
18097 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18099 * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
18100 yuv-converter.h: Sprinkle virtual on some destructors.
18102 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18104 * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
18107 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18109 * audio-pulse.cpp: Another leak plugged.
18111 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18113 * debug.cpp: Fix stack traces.
18115 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18117 * audio-pulse.cpp: Add a missing unref.
18119 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18121 * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
18123 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18125 * pipeline-ui.cpp: Hush.
18127 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18129 * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
18132 2008-09-24 Aaron Bockover <abockover@novell.com>
18135 * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG
18136 in regards to header messages, detail messages, spacing, padding, and
18137 button layout; use a GtkDialog instead of a GtkWindow, and take all
18138 input through the dialog's response signal; require the user to explicitly
18139 tell us that they never want to see the installer again instead of
18140 assuming on cancel; fix crash when cancelling while downloading
18142 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
18144 * dependencyproperty.cpp (resolve_property_path): Fixicated.
18146 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
18148 * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is
18149 given to g_file_test
18151 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
18153 * dependencyproperty.cpp (resolve_property_path): Cleaned up the
18154 code, robustified, and fixed bug #429396.
18156 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
18158 * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
18162 2008-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
18164 * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
18165 * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
18166 pipeline-logo.cpp and made it an extern variable to avoid
18167 duplicating the entire image in the binary for every time we want
18169 * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
18170 codecs from our configuration, and always register ms codecs first
18171 in the list. NullDecoder: fix a buffer overrun and update according
18172 to pipeline-logo changes.
18173 * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
18174 to store our configuration.
18175 * media.cpp: MediaElement::MediaOpened: if any of the streams is
18176 handled by a nulldecoder, it means we don't have ms codecs
18177 installed. If so, show the codec downloader UI.
18178 * Makefile.am, src.mdp: Updated.
18180 2008-09-23 Chris Toshok <toshok@ximian.com>
18182 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18183 back out (#if false) this change for now.
18185 2008-09-23 Stephane Delcroix <sdelcroix@novell.com>
18187 * runtime.h|cpp: Surface::GetSourceLocation()
18189 2008-09-23 Sebastien Pouliot <sebastien@ximian.com>
18191 * uielement.cpp: Delete the temporary region before returning on an
18192 invisible element (common in defiwind).
18194 2008-09-22 Chris Toshok <toshok@ximian.com>
18196 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18197 another case we hadn't addressed - if the object we're merging
18198 *from* doesn't have a namescope, we iterate over the entire tree,
18199 registering names into our (possibly temporary, if it didn't exist
18200 before) namescope. Fixes firstfloorsoftware.com (bug #425268).
18202 * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
18205 2008-09-22 Jeffrey Stedfast <fejj@novell.com>
18207 * dependencyobject.cpp (merge_namescope): Return the parent_ns so
18208 that our caller doesn't have to call FindNameScope() in case it
18210 (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
18213 2008-09-22 Larry Ewing <lewing@novell.com>
18215 * geometry.cpp (Geometry::Draw): fix the transform brokeness that
18216 crept in. Fixes test-geometry-transform.xaml
18218 2008-09-22 Michael Dominic K. <mdk@mdk.am>
18222 * clock.h: 0-time animations are valid (as in: passing the timeline
18223 validation test) but do nothing. Fixes the clock11 test.
18225 2008-09-22 Michael Dominic K. <mdk@mdk.am>
18228 * animation.h: Attach storage only once. Fixes a crash in clock21.html.
18230 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
18232 Fix for bug #427560
18234 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18235 Use FindNameScope() to get the scope to merge into, and only call
18236 this once - don't re-get it ever loop.
18238 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
18240 * dependencyobject.cpp (EventObject::AddXamlHandler): New method
18241 to add a handler from XAML so that we can force the listener token
18242 to be 0, like Silverlight does.
18244 2008-09-19 Michael Dominic K. <mdk@mdk.am>
18247 * animation.h: Attach the storage to the prev storage on the
18248 partuclar AnimationClock/Storage Begin, not when the parent
18249 storyboard begins. That fixes: #412074 .
18251 2008-09-19 Stephane Delcroix <sdelcroix@novell.com>
18253 * src/downloader.cpp:
18254 * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
18255 argument. Drop downloder_open method.
18257 * src/playlist.cpp:
18258 * src/deepzoomimagetilesource.cpp:
18259 * src/text.cpp: use the new Open with the corresponding policy.
18261 2008-09-19 Sebastien Pouliot <sebastien@ximian.com>
18263 * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
18264 offenders are gone now but it's still leaking in a few cases.
18266 2008-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18268 * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
18269 any custom Cleanup methods (allowing the Cleanup method to free
18270 buffer if g_free isn't the way to do it).
18272 2008-09-18 Jeffrey Stedfast <fejj@novell.com>
18276 * dependencyobject.cpp (class EventLists): Init current_token to
18277 1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
18278 apps use 0 to mean that a g_signal is not connected).
18280 2008-09-18 Geoff Norton <gnorton@novell.com>
18282 * media.cpp: Stop leaking pixbuf loaders.
18284 2008-09-18 Sebastien Pouliot <sebastien@ximian.com>
18286 * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
18287 g_free-ing it later.
18289 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
18291 * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
18292 RUNTIME_INIT_CODECS_DEBUG.
18293 * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
18296 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
18298 * src.mdp: Updated.
18299 * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
18300 moonlight logo for video and plays silence for audio.
18301 * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
18302 * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
18304 * pipeline-logo.inc: Added.
18306 2008-09-17 Larry Ewing <lewing@novell.com>
18311 * frameworkelement.cpp: start filling in InvalidateArrange and
18312 InvalidateMeasure calls.
18317 * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
18318 change handling here from panel since it is a Canvas property.
18320 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18322 * pipeline.h: Remove some dead code.
18324 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18326 * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
18327 add flags to disable both ffmpeg and ms codecs and include them by
18329 * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
18330 (until it gets integrated in libmscodecs.so), and register the mp3
18331 codec. Media::Initialize: Update according to runtime init flag
18332 changes, and always register null encoders.
18334 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18336 * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
18337 delete downloaded media files.
18339 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18341 * dependencyobject.cpp: Add TODO.
18343 2008-09-17 Jackson Harper <jackson@ximian.com>
18345 * xaml.cpp: Don't try setting the content prop in managed if there
18346 is no cdata content (we're just dealing with spaces).
18348 2008-09-17 Larry Ewing <lewing@novell.com>
18350 * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
18351 use the right index value.
18353 2008-09-17 Sebastien Pouliot <sebastien@ximian.com>
18355 * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
18356 SizeChangedEventArgs.
18358 2008-09-17 Michael Dominic K. <mdk@mdk.am>
18361 * clock.h: Separate raising events from raising completed events.
18362 In certain clock hierarchies this would cause us to emit completed event
18363 before raising animation setter events.
18365 * applier.cpp: Enabling the applier again.
18366 * applier.h: Animation resets don't have INSTANT precedence. The just
18367 have higher precedence than normal animation setters.
18369 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18371 * audio-pulse.cpp: Remove stray characters.
18373 2008-09-16 Chris Toshok <toshok@ximian.com>
18375 * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
18377 * frameworkelement.h, frameworkelement.cpp
18378 (FrameworkElement::UpdateLayout): override
18379 UIElement::UpdateLayout, and if that base class method returns
18380 true, emit LayoutUpdatedEvent.
18382 * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
18384 (UIElement::InvalidateArrange): add DirtyArrange.
18385 (UIElement::DoMeasure): this should drive the measure process -
18386 needs filling in, though.
18387 (UIElement::DoArrange): this should drive the arrange
18389 (UIElement::UpdateLayout): change return type to bool. call
18390 DoMeasure and DoArrange synchronously, and return true if we
18393 * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
18396 * cbinding.h, cbinding.cpp: regen.
18398 2008-09-16 Larry Ewing <lewing@novell.com>
18400 * clock.cpp: make AddTimeout take a priority. Make the render
18401 timeout slightly lower than default so that we process gdk events
18404 * media.cpp: raise the priority of the media timeout so that it
18405 doesn't drop below default or the render tick.
18407 2008-09-16 Chris Toshok <toshok@ximian.com>
18409 * dirty.h, dirty.cpp: add a priority queue-like setup for the
18410 dirty lists, where priority == level in the visual hierarchy.
18411 Processing the down dirty list proceeds from lower "priority" to
18412 higher, and the up dirty list proceeds from higher to lower.
18413 * runtime.h, runtime.cpp: use the new dirty lists.
18415 * uielement.h, uielement.cpp: add a visual_level field, which is
18416 updated when the element is added to the
18417 hierarchy (this->visual_level = parent->visual_level + 1).
18419 2008-09-16 Jackson Harper <jackson@ximian.com>
18421 * xaml.cpp: keys should be a property of the instance.
18423 2008-09-16 Fernando Herrera <fherrera@novell.com>
18425 * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
18426 has codecs=microsoft.
18427 * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
18428 in RUNTIME_INIT_BROWSER.
18430 2008-09-16 Jackson Harper <jackson@ximian.com>
18432 * xaml.cpp: Move cdata handling code into the content property
18433 setters, allow managed content property setters to set values from
18436 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
18438 * audio-pulse.cpp: dlsym another method previously forgotten.
18440 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
18442 * multiscaleimage.h, textbox.h: Use quotes to include our headers.
18444 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
18446 * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
18447 don't link with alsa anymore
18449 2008-09-16 Jb Evain <jbevain@novell.com>
18451 * template.h (TemplateBinding): decorate with a SLVersion=2.
18453 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
18455 * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
18456 link with pulseaudio anymore. Hopefully fixes #425560.
18458 2008-09-16 Fernando Herrera <fherrera@novell.com>
18460 * asf/asf-structures.h:
18464 * pipeline.h: Don't use relative paths in #includes.
18465 * Makefile.am: Add -Iasf
18467 2008-09-15 Michael Dominic K. <mdk@mdk.am>
18469 * src/applier.cpp: Disabling the applier for now, it seems there are still
18470 some tiny 'issues' with it.
18472 2008-09-15 Chris Toshok <toshok@ximian.com>
18474 * dependencyobject.h, dependencyobject.cpp: add real
18475 PropertyChange callbacks (so we can implement listeners without
18476 the listener being a dependencyobject - which is nice for
18477 TemplateBindings, which don't need all that overhead.)
18479 * template.h, template.cpp: switch over to using this new listener
18482 2008-09-15 Chris Toshok <toshok@ximian.com>
18484 * xaml.cpp (dependency_object_set_attributes): add the
18485 TemplateBinding to the item, not the containing template.
18487 2008-09-15 Larry Ewing <lewing@novell.com>
18489 * applier.h: really disable the applier to make changes instant,
18490 fixes page turn and the test regressions.
18492 * applier.cpp: ref and unref the object to avoid crashes on
18495 2008-09-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
18497 * src.mdp: Updated with new files.
18499 2008-09-12 Larry Ewing <lewing@novell.com>
18501 * grid.cpp (Grid::Measure): accumulate colspan width and pass
18502 pixel size restrictions on to the children.
18504 2008-09-11 Michael Dominic K. <mdk@mdk.am>
18508 * applier.h: Adding some defines for applier precedences + a way
18509 to instant apply with precedence == 0.
18511 2008-09-10 Michael Dominic K. <mdk@mdk.am>
18513 * clock.cpp: Properly emit the Completed event after the properties have
18516 2008-09-09 Michael Dominic K. <mdk@mdk.am>
18519 * applier.cpp: Removing debug messages, adding proper free code.
18521 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18525 * applier.cpp: Do not set the values, instead move them to applier.
18527 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18533 * runtime.h: Moving the Applier instance to TimeManager.
18535 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18538 * runtime.h: Adding Applier to Surface.
18540 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18543 * applier.h: Adding a basic Flush method, totally bad for now.
18545 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18548 * applier.h: Adding basic Apply function that applies all the changes
18551 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18554 * applier.h: Adding basic method to add property to apply on object.
18556 2008-09-08 Michael Dominic K. <mdk@mdk.am>
18560 * applier.h: Introducing the applier helper class. Will be used
18561 to apply property changes in order.
18563 2008-09-11 Jackson Harper <jackson@ximian.com>
18565 * xaml.cpp: Move some of the content property setting logic into
18566 the XamlElementInstance's.
18568 2008-09-11 Stephane Delcroix <sdelcroix@novell.com>
18570 * multiscaleimage.cpp: draw a pattern that should look like
18571 a MSI (currently still wrong)
18573 2008-09-10 Jeffrey Stedfast <fejj@novell.com>
18575 * text.h (class Run): Apparently Run's TextProperty is internal in
18578 2008-09-10 Larry Ewing <lewing@novell.com>
18581 * frameworkelement.cpp:
18582 * shape.cpp, shape.h:
18583 * canvas.cpp: update to pass the new more extensive tests.
18585 2008-09-10 Larry Ewing <lewing@novell.com>
18587 * size.h: Tweak to match updated tests.
18589 2008-09-09 Chris Toshok <toshok@ximian.com>
18591 * style.h (class Setter): make ValueProperty's PropertyType
18592 'object' instead of 'Managed'.
18594 * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
18595 little more bulletproof.
18596 (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
18597 NULL, don't create a TemplateBindingNode (and add it to the list)
18600 * type.h.in (class Type): remove OBJECT - it gets autogenerated
18603 * xaml.cpp (start_element): we need to set inst->parent before
18604 setting the attributes, as the attributes might include a
18605 StaticResource (or TemplateBinding) that requires us to walk back
18607 (XamlElementInfoNative::CreateElementInstance): create a
18608 XamlElementInstanceTemplate if the type is a subclass of
18610 (dependency_object_set_attributes): return out of this after
18611 adding the templatebinding (so we don't end up in the managed xaml
18612 loader code trying to set properties to "{TemplateBinding ...}"
18613 Also, if the property type is OBJECT, call into the loader (like
18614 we do with MANAGED), and fix the logic check on
18615 p->loader->SetAttribute in that case.
18617 * type.h, type-generated.cpp: regen.
18619 2008-09-09 Sebastien Pouliot <sebastien@ximian.com>
18621 * xaml.cpp: Don't unref NULL collections. Fix regression when
18622 parsing invalid points (or doubles).
18624 2008-09-08 Chris Toshok <toshok@ximian.com>
18626 * xaml.h, xaml.cpp: stopgap before jackson gets the completely
18627 managed approach to managed object parsing going. a few key
18630 1) xaml_load_managed_object takes an out bool
18631 parameter (is_dependency_object) so the managed code can create
18632 non-DO subclasses, and then the parser will pass that GCHandle
18633 back to managed code in set_attribute.
18635 2) added an add_child callback to the loader so that managed DO
18636 subclasses (and non-subclasses) can deal with collection
18637 properties. theres no ContentProperty handled in managed code,
18640 2008-09-08 Geoff Norton <gnorton@novell.com>
18642 * audio-*.(cpp|h): The Alsa code requires us to join the play
18643 thread before we remove the audio sources otherwise we can
18644 end up in a race accessing closed pcm's when shutting down.
18646 2008-09-08 Geoff Norton <gnorton@novell.com>
18648 * audio.cpp: Ensure that we dont enter an infinite loop before
18649 we actually start playing a source.
18651 2008-09-08 Larry Ewing <lewing@novell.com>
18653 * frameworkelement.cpp: make things 1.0 safe.
18655 2008-09-08 Larry Ewing <lewing@novell.com>
18657 * frameworkelement.cpp (FrameworkElement::Arrange): rework to
18658 match some of the Measure logic
18661 * canvas.cpp, canvas.h:
18662 * control.cpp, control.h: rework arrange implementation to match
18663 the measure logic and the current thinking on arrange.
18665 * uielement.cpp, uielement.h: expose render_size accessor.
18667 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
18669 * tilesource.h|cpp: keep the source and tiles info on the c++ side
18671 * multiscaleimage.cpp: draw a cairo pattern instead of nothing
18673 2008-09-08 Larry Ewing <lewing@novell.com>
18675 * grid.cpp: Chain collection changed up properly.
18677 2008-09-07 Larry Ewing <lewing@novell.com>
18679 * thickness.h (struct Thickness): add +/-/- to thickness to clean
18680 up some of the other code.
18682 * rect.h: remove ShrinkBy now that we can negate thickness
18684 * size.h: clean things and make GrowBy stop at 0 now that we can
18685 deal with thickness addition outside of things.
18688 * frameworkelement.cpp:
18690 * border.cpp: subtract the padding and border thickness from
18691 available size before passing it to children. Handle some corner
18692 cases in measure with ugly hacks.
18694 2008-09-07 Larry Ewing <lewing@novell.com>
18696 * canvas.cpp, canvas.h:
18697 * control.cpp, control.h:
18700 * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
18703 * frameworkelement.cpp: Make measure pre and post condition the
18704 output rather than doing it in the overrides themselves.
18706 * size.h: make sure min/max will never set a known size to NAN.
18708 2008-09-07 Chris Toshok <toshok@ximian.com>
18710 * type.h.in: add OBJECT kind.
18712 * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18714 2008-09-06 Chris Toshok <toshok@ximian.com>
18716 * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
18717 - instead use 'Foo foo(args)'. the former creates 2 objects to
18720 * media.cpp (MediaElement::GetValue): same.
18722 * uielement.cpp: same.
18724 * error.h, error.cpp (class MoonError): make this a class instead
18725 of a struct, add a default ctor, remove Dispose and use ~MoonError
18726 instead, add FillIn methods that take a "code" as well as an
18727 ErrorType to support the parser.
18729 * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
18730 rid of GError and use MonoError exclusively, move the internal
18731 EventLists/EventList types to the .cpp file. Also, remove a few
18732 redundant methods on DependencyObject. The hit at call sites is
18733 negligable (one additional line, perhaps), and the call sites are
18734 few and far between.
18736 * xaml.cpp (dependency_object_set_attributes)
18737 (dependency_object_set_property): call
18738 DependencyObject::SetValueWithError.
18740 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
18741 the property here. the DO api is gone.
18743 2008-09-06 Chris Toshok <toshok@ximian.com>
18745 * grid.h, grid.cpp: flesh out some of the
18746 OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
18747 Also add in a completely broken and unfinished MeasureOverride
18748 implementation. It passes some of the tests, but not for the
18749 right reasons :) Lastly, move the GridUnitType enum to enums.h
18751 * enums.h: move GridUnitType here, and rename its elements to have
18752 a "GridUnitType" prefix.
18754 * xaml.cpp: track GridUnitType enum references.
18756 * dependencyproperty.g.cpp: fix up attached properties getters to
18757 return default values if there is one.
18759 2008-09-05 Jeffrey Stedfast <fejj@novell.com>
18761 * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
18762 actually change the lauout, so no need to set the dirty flag when
18764 (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
18766 (TextBlock::Paint): Same.
18768 2008-09-05 Larry Ewing <lewing@novell.com>
18770 * uielement.cpp: use render bounds rather than bounds to determine
18771 if we have something to draw.
18773 * stylus.h, stylus.cpp: remove the EmptyBackground method.
18775 Fixes the annotation regression in page turn (again).
18777 2008-09-04 Larry Ewing <lewing@novell.com>
18779 * uielement.h (class UIElement): generate managed accessors for
18782 2008-09-04 Chris Toshok <toshok@ximian.com>
18784 * xaml.cpp (dependency_object_add_child): add code here for
18785 FrameworkTemplate, call SetVisualTree with the child.
18787 * control.cpp (Control::Control): init bindings.
18788 (Control::~Control): unref applied_template and delete bindings.
18789 (Control::ApplyTemplate): make sure we return false here from a
18790 few error places (NULL template, a template with a NULL
18793 * template.cpp (FrameworkTemplate::FrameworkTemplate): init
18794 visual_tree to NULL.
18795 (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
18796 (FrameworkTemplate::SetVisualTree): new method, set visual_tree
18798 (ControlTemplate::DuplicateObject): we need to special case a
18799 couple of classes (collections, templates) in order to traverse
18801 (ControlTemplate::Apply): if the visual_tree is null, don't try to
18804 * template.h (class FrameworkTemplate): add SetVisualTree method
18807 2008-09-04 Larry Ewing <lewing@novell.com>
18809 * uielement.cpp, uielement.h: new methods GetSubtreeObject and
18810 ElementAdded ElementRemoved.
18812 * dependencyobject.h: remove ContentAdded, ContentRemoved.
18814 * collection.cpp, collection.h: rename ContentWalker to
18815 VisualTreeWalker use GetSubtreeObject () rather than content for walking.
18817 * template.cpp, template.h: make Apply return the newly created
18820 * panel.cpp, panel.h:
18821 * control.cpp, control.h: add template_root child that isn't
18822 hooked into the normal tree. Start implementing ApplyTemplate and
18825 * usercontrol.cpp: mess around with Content a little in making it
18826 use the ElementAdded ElementRemoved logic since UserControl
18827 doesn't really support template changes.
18829 * border.h: implement GetSubtreeObject.
18833 * frameworkelement.cpp:
18834 * canvas.cpp, canvas.h: update for new treewalker.
18836 2008-09-04 Jeffrey Stedfast <fejj@novell.com>
18838 * layout.cpp (TextLayout::Render): Added some new arguments which
18839 aren't actually used yet but will be eventually (assuming I
18840 continue with this approach).
18842 * textbox.cpp (TextBox::Paint): Don't bother painting the
18843 background, control does this for us.
18845 2008-09-04 Stephane Delcroix <sdelcroix@novell.com>
18847 * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
18848 own file, implement the downloader.
18850 2008-09-03 Chris Toshok <toshok@ximian.com>
18852 * dependencyobject.h: as much as i hate this, add
18853 GetCurrentValues() for the template stuff.
18855 * xaml.cpp: add XamlElementInstanceTemplate and initial support
18856 for TemplateBindings.
18858 * template.h, template.cpp: add a bunch of stuff for templates.
18860 * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
18861 watch for template property changes, and apply the template in
18862 OnLoaded (or if we're already loaded). Also, add accessors for
18865 * dependencyproperty.g.cpp: regen.
18867 2008-09-03 Larry Ewing <lewing@novell.com>
18869 * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
18870 the new Size methods.
18872 * border.cpp, border.h: add some initial (broken) rendering
18873 support, rework measure to use some of the new rect and size
18876 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
18878 * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
18879 property chanegs, no need to re-layout or invalidate - according
18880 to my little test program, Silverlight 2 Beta 2 does not change
18881 the rendered text when this property changes - any newlines in the
18882 input text stay there.
18884 2008-09-03 Sebastien Pouliot <sebastien@ximian.com>
18886 * resources.cpp: (ContainsKey) Don't crash if a null key is
18887 supplied. (Remove) same. (Add) same.
18889 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
18891 * enums.cpp (initialize_enums): Map Horizontal and
18892 VerticalScrollBarVisibility properly.
18894 * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
18895 think we need this for TextBox controls since their
18896 ActualWidth/Height aren't based on the text extents afaik.
18897 (TextBox::Paint): Implemented, sorta.
18899 2008-09-03 Chris Toshok <toshok@ximian.com>
18901 * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
18904 2008-09-03 Larry Ewing <lewing@novell.com>
18906 * uielement.cpp, uielement.h:
18907 (UIElement::FrontToBack): Make FrontToBack non-virtual and move
18908 the generic logic here.
18910 * control.cpp, control.h:
18911 * panel.cpp, panel.h: Remove ftb logic, everything is handled in
18914 2008-09-03 Larry Ewing <lewing@novell.com>
18916 * uielement.cpp, uielement.h:
18917 * media.cpp, media.h:
18918 * panel.cpp, panel.h:
18919 * shape.cpp, shape.h: Add GetCoverageBounds virtual method
18920 to let elements compute their own opaque coverage.
18922 2008-09-03 Stephane Delcroix <sdelcroix@novell.com>
18924 * multiscaleimage.h|.cpp: new MultiScaleImage type
18926 2008-09-02 Chris Toshok <toshok@ximian.com>
18928 * resources.h, resources.cpp: constify this.
18929 (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
18932 * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
18934 (dependency_object_set_attributes): add support for StaticResource
18935 lookups. going to refactor all this to add support for
18938 2008-09-02 Jeffrey Stedfast <fejj@novell.com>
18940 * eventargs.h (class CollectionChangedEventArgs): Implemented
18941 accessor methods to get/set the event arg values.
18943 * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
18944 strdup the event_name string and also updated to use an accessor
18945 method to prevent a possible NULL dereference.
18947 2008-09-02 Michael Dominic K. <mdk@mdk.am>
18950 * animation2.h: Reworking the animation hookup storage fix. Checking for
18951 subclass is plain dumb. Just make an exception for ObjectAnimation.
18953 2008-09-02 Michael Dominic K. <mdk@mdk.am>
18955 * animation.cpp: Fixing a problem in animation hookup
18956 storage -- the type/kind that the animation generates has to be the subclass
18957 of the type/kind the target property is ready to accept.
18959 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
18961 * multiscalesubimage.h: fixing code generation decorators
18963 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
18965 * multiscalesubimage.h: new type
18967 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
18969 * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
18970 end so that we can fall back to that position as the line
18971 width (we don't want to include trailing spaces unless
18973 (TextLayout::Render): If the line width is greater than the
18974 allowable width, keep the line left-aligned like Silverlight does.
18976 2008-08-29 Chris Toshok <toshok@ximian.com>
18978 * resources.cpp (ResourceDictionary::Clear): call
18979 Collection::Clear after we've cleared the hash so the hash will be
18980 empty in event handlers.
18982 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
18984 * layout.cpp (TextLayout::Layout): Do a slightly better job of
18985 keeping track of line->width - still not 100% correct.
18987 2008-08-28 Chris Toshok <toshok@ximian.com>
18989 * Makefile.am: add resources.h and resources.cpp
18991 * xaml.cpp (class XamlElementInfo): add x:Key field (since this
18992 can't set a field on the object -- it might be a value type).
18993 (class XamlElementInstanceValueType): remove the empty
18994 implementation of SetAttributes. we'll define it later.
18995 (XNamespace::SetAttribute): handle name/key behavior here. Only
18996 allow one of them to be set on an object. Also, only attempt to
18997 set DependencyObject::NameProperty on an item if it's not a value
18999 (start_element): don't add value type children to their parent in
19000 start_element (as we haven't read the data that will allow us to
19001 create the value typed object.) we need to push this off to the
19002 end_element handler. also return early if there are problems
19003 setting attributes.
19004 (end_element_handler): if we're creating a value typed ELEMENT,
19005 add the child to the parent here.
19006 (dependency_object_add_child): add some ResourceDictionary
19007 validation here (if there's no key, etc), and actually call
19008 dict->Add(key, child).
19009 (XamlElementInstanceNative::CreateItem): don't crash if we failed
19010 to create an item. (fixes one of the crashes caused by the
19011 ResourceDictionaryTests - ParseDouble)
19012 (XamlElementInstanceValueType::SetAttributes): call
19013 value_type_set_attributes.
19014 (value_type_set_attributes): stripped down version of
19015 dependency_object_set_attributes, as there are only a handful (is
19016 it really only x:Name and x:Key?) attributes we handle on value
19018 (globally): always call set_parent as opposed to
19019 ->SetLogicalParent. we might not be dealing with a DO-subclass.
19021 * xaml.h (class XamlLoader): remove the explicit C api calls
19022 xaml_create_from_file, xaml_create_from_str, and
19023 xaml_hydrate_from_str. Replace them with instance methods on
19024 XamlLoader (CreateFromFile, CreateFromString, and
19025 HydrateFromString, respectively) Add WithError variants of the
19026 these, and have the generator generate bindings for them so we can
19027 throw parse exceptions into managed code.
19029 * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
19031 * value.h.in (struct Value): add Is overload with
19034 * uielement.h: include resources.h.
19036 * collection.h, collection.cpp: change the api in a few ways to
19037 make ResourceDictionary easier to write - make Count virtual,
19038 remove all the type checks for element type from methods, and add
19039 that check to Collection::CanAdd. ResourceDictionary overrides
19040 that and always returns true. Make Clear return a bool.
19042 * animation.h, animation.cpp: track collection changes.
19044 * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
19045 implementations to the .cpp file.
19047 * resources.h, resources.cpp: split out the code for
19048 ResourceDictionary here. ResourceDictionary is an odd fish. In
19049 1.0 land, it provides the same api as a collection, and things can
19050 be looked up by name via findName. In 2.0 land, items in
19051 ResourceDictionaries have to have either an x:Key or x:Name
19052 attribute. If both are lacking it's an error. If the former is
19053 specified you can only get at it through Resources["name"]. If
19054 the latter is specified, you can use both Resources["name"] or
19057 * dependencyobject.cpp, dependencyobject.h: add Is and GetType
19058 overloads that take additional_types. Make IsValueValid take an
19059 additional_types parameter too. Expose ClearValue to managed code
19060 so we can actually clear the Value* to null without using
19061 the (unsupported from the generator) old method of passing
19062 IntPtr.Zero (Value* now maps to "ref Value" in generated
19063 pinvokes.) Lastly add a SetValueWithError method so we can throw
19064 exceptions in managed code.
19066 * border.h: add defaults for Padding and BorderThickness.
19068 * border.cpp: simplify things a bit since we don't have to worry
19069 about padding/border thickness being NULL.
19071 * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
19073 2008-08-28 Jeffrey Stedfast <fejj@novell.com>
19075 * layout.cpp (TextLayout::Render): Respect TextAlignment.
19077 2008-08-26 Chris Toshok <toshok@ximian.com>
19079 * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
19080 rid of this g_assert, it's crashing the moon-unit tests. just
19082 (DependencyObject::SetSurface): don't do anything if the surface
19083 is already set to the same value.
19085 * animation.cpp (Storyboard::SetSurface): don't do anything if
19086 GetSurface() == surface.
19088 * text.cpp (Glyphs::SetSurface): same.
19090 * uielement.cpp (UIElement::SetSurface): same.
19092 * brush.cpp (ImageBrush::SetSurface): same.
19096 * collection.cpp (DependencyObjectCollection::SetSurface): same.
19097 (Collection::RemoveAtWithError): this (against logic) raises
19098 ArgumentException, not ArgumentOutOfRangeException.
19100 2008-08-25 Chris Toshok <toshok@ximian.com>
19102 * rect.h, rect.cpp: rename the w/h fields to width/height, since
19103 every other instance of similar fields are named that.
19105 * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
19106 uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
19107 brush.cpp: track rect change.
19109 2008-08-25 Chris Toshok <toshok@ximian.com>
19111 * border.h, border.cpp: implement ArrangeOverride, and fix up some
19112 test failures in MeasureOverride.
19114 * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
19115 also set the desired size here (to the final size we get from
19118 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19120 * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
19121 proper kinds of values (TYPE::DEPENDENCY_OBJECT).
19123 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19126 * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
19127 Also adding validation methods.
19129 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19132 * animation2.h: Base work for ObjectAnimationUsingKeyFrames
19135 2008-08-24 Geoff Norton <gnorton@novell.com>
19137 * media.h: Add a new overload to set the SourceProperty from managed land.
19138 * media.cpp: Support async source changing downloader creation for ImageSource
19139 * cbinding.(cpp|h): Regen
19141 2008-08-23 Geoff Norton <gnorton@novell.com>
19143 * mplayer.cpp: Only ref the audio if we have it as well.
19145 2008-08-23 Geoff Norton <gnorton@novell.com>
19147 * bitmapimage.h: Add to the build
19149 2008-08-23 Geoff Norton <gnorton@novell.com>
19151 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
19152 type.h, value.h: Regenerated
19153 * downloader.cpp|h: Return failure state for downloader->GetResponse
19154 * runtime.h: Generate C bindings for IsMainThread.
19156 2008-08-23 Larry Ewing <lewing@novell.com>
19158 * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
19159 properties. Move the quadratic generation into
19160 GenerateQuadratics.
19162 Regenrate and remove the managed wrappers.
19164 2008-08-23 Larry Ewing <lewing@novell.com>
19166 * xaml.cpp (value_from_str): fixed crossed commits with Auto
19169 * collection.cpp (ContentWalker::Step): add some debug logic to
19170 protect against an error case for now.
19172 2008-08-23 Chris Toshok <toshok@ximian.com>
19174 * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
19176 * thickness.h, thickness.cpp: rename thickness_from_str to
19177 Thickness::FromStr, and make it return a bool instead of a
19178 pointer, as Point and Rect do.
19180 * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
19182 * xaml.cpp (value_from_str): use the CornerRadius parsing method,
19183 and track the change to the Thickness one.
19185 2008-08-23 Larry Ewing <lewing@novell.com>
19187 * xaml.cpp (value_from_str): quick auto hack so we can test
19190 * runtime.cpp (RenderNode::Render): fix typo in merge
19192 2008-08-23 Larry Ewing <lewing@novell.com>
19194 * uielement.cpp, uielement.h: move basic ftb logic here from
19195 panel. Start storing extents allong with bounds.
19197 * panel.cpp, panel.h: move most ftb logic to uielement.cpp. Use
19200 * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
19201 to uielement in front_to_back mode unconditionaly.
19203 * runtime.cpp, runtime.h: make RenderNode members private and move
19204 the ftb override logic here and out of the PostRender call.
19206 * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
19209 * control.cpp, control.h: implement basic functionality.
19211 2008-08-22 Chris Toshok <toshok@ximian.com>
19213 * color.h, rect.h, point.h: remove the copy ctors. we don't need
19214 them, and they were causing crashes (!)
19216 2008-08-22 Chris Toshok <toshok@ximian.com>
19218 * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
19219 take the margins into account, even when we're childless.
19221 * panel.h, panel.cpp: add MeasureOverride which always returns
19224 * border.h (class Border): add property accessors for everything.
19226 * border.cpp (Border::MeasureOverride): new implementation.
19228 * value.h.in, value.cpp: add CornerRadius support, and remove the
19229 unnecessary casts (and in the Rect/Point cases, calls to the copy
19232 * value.h, dependencyproperty.g.cpp: regenerate.
19234 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19236 * textbox.h (class SelectionChangedEventArgs): Added
19237 Text/SelectionChangedEventArgs.
19239 2008-08-22 Chris Toshok <toshok@ximian.com>
19241 * frameworkelement.cpp (FrameworkElement::Measure): instead of
19242 always calling MeasureOverride here, we call the registered manage
19243 callback if there is one. So, we proxy into managed code here,
19244 invoke the virtual method FWE.MeasureOverride, and if there's no
19245 subclass override (or if it chains up for some reason), we end up
19246 in MeasureOverride by virtue of the pinvoke in
19247 FrameworkElement.cs.
19248 (FrameworkElement::MeasureOverride): move all the logic for the
19249 default MeasureOverride implementation here. it's pretty
19250 braindead - takes margins into account, measures our child, makes
19251 sure our size is between Min/Max. That's about it.
19252 (FrameworkElement::Arrange): same drill as ::Measure.
19253 (FrameworkElement::ArrangeOverride): still (incorrectly) return
19256 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19258 * textbox.h: Made ArrangeOverride() virtual and added
19259 SelectionChangedEvent.
19261 2008-08-22 Chris Toshok <toshok@ximian.com>
19263 * dependencyobject.cpp (DependencyObject::GetContent): guard
19264 against the value being NULL.
19266 2008-08-22 Larry Ewing <lewing@novell.com>
19268 * collection.cpp (ContentWalker::ContentWalker): make
19269 ContentWalker understand directions (Logical, ZForward, ZReverse).
19271 2008-08-22 Larry Ewing <lewing@novell.com>
19273 * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
19274 when drawing in the image backend.
19276 2008-08-22 Chris Toshok <toshok@ximian.com>
19278 * frameworkelement.h, frameworkelement.cpp: add in the layout foo
19279 - provide implementations of Measure and Arrange that just call
19280 MeasureOverride and ArrangeOverride. These are virtual and meant
19281 to be overridden either in unmanaged code (by simply overriding
19282 them), or in managed code (RegisterManagedOverrides is called in
19283 FWE.Initialize.) Decorate the class with @CallInitialize so the
19284 managed ctor calls it.
19286 * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
19287 ctor, and add the layout methods. Measure and Arrange are pure
19290 * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19292 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19294 * textbox.cpp (TextBox::Layout): Implemented rough layout.
19296 * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
19298 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19300 * textbox.cpp (TextBox::ArrangeOverride): Added.
19302 * frameworkelement.h (class FrameworkElement): Changed default
19303 Width/Height values to NAN.
19305 * textbox.cpp: Initial implementation of TextBox, Layout and
19306 Rendering logic still missing.
19308 2008-08-22 Larry Ewing <lewing@novell.com>
19310 * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
19313 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
19315 * audio-alsa.cpp: Call Underflowed () when we run out of data.
19317 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
19319 * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
19320 VideoEnded and AudioEnded states. Implement handling of VideoEnded
19321 state, and call MediaElement::MediaEnded when both states have been
19323 * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
19324 all media finished (both video and audio) logic there.
19326 2008-08-21 Larry Ewing <lewing@novell.com>
19328 * uielement.cpp (UIElement::ComputeLocalTransform): clean up
19329 accumulated transform logic. Keep the parent TransformFor out of
19330 the local_transform.
19332 2008-08-21 Larry Ewing <lewing@novell.com>
19334 * uielement.cpp (UIElement::Dispose): add logic removed from
19337 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19340 2008-08-21 Chris Toshok <toshok@ximian.com>
19342 [ fixes annotations not showing up in pageturn due to a NULL
19343 background on the ink presenter ]
19345 * stylus.h, stylus.cpp (class InkPresenter): add an override of
19346 EmptyBackground(). If we have a non-empty stroke bounding
19347 rectangle, return false. Otherwise fall back to
19348 Panel::EmptyBackground.
19350 * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
19351 method. the panel implementation returns true if GetBackground()
19352 returns NULL. Use this virtual method instead of an explicit
19353 GetBackground() call in Panel::FrontToBack.
19355 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
19357 * enums.cpp: Added ScrollBarVisibility enum
19359 * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
19360 invalidate if the TextWrappingProperty changes too.
19362 2008-08-21 Chris Toshok <toshok@ximian.com>
19364 * border.h, border.cpp, cornerradius.h: add new
19367 * Makefile.am: add border/cornerradius to the file list.
19369 * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
19370 dependencyproperty.g.cpp: regen.
19372 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
19374 * textbox.h (class TextBox): The TextBox namespace should be
19375 System.Windows.Controls
19377 * stackpanel.h (class StackPanel): #include panel.h
19379 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
19381 * textbox.h: Initial implementation of the TextBox class (just
19384 * value.h.in (struct Value): Don't use int32_t or uint64_t,
19385 etc. Be consistent and use the glib types.
19387 * layout.cpp (TextLayout::Layout): Fixed
19388 LineStackingStrategy/LineHeight issues. If we are using
19389 BlockLineHeight & the specified LineHeight is not Auto, then we
19390 need to use 0.0 as the descender.
19392 2008-08-21 Chris Toshok <toshok@ximian.com>
19394 * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
19395 accessors to all the subclasses. They're autogenerated from the
19396 respective class's DP's.
19398 * animation2.h: same.
19400 * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
19402 * control.h (class Control): add some more GenerateAccessors.
19404 * control.cpp: and remove the manual implementations here.
19406 * dependencyproperty.g.cpp: regen.
19408 2008-08-21 Larry Ewing <lewing@novell.com>
19410 * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
19413 * xaml.cpp (value_from_str): unref the collections we create after
19416 2008-08-21 Jackson Harper <jackson@ximian.com>
19418 * xaml.cpp: Can't rely on the type for getting a managed element's
19419 name, we have to pull it from the element name provided to the
19422 2008-08-21 Chris Toshok <toshok@ximian.com>
19424 * dependencyobject.cpp (DependencyObject::HasProperty): pass
19425 additional_types to IsSubclassOf.
19427 * type.h, type.cpp: add IsSubclassOf variants that take
19428 additional_types. Fixes lookup problems of non-custom DP's on
19429 managed subclasses.
19431 2008-08-21 Chris Toshok <toshok@ximian.com>
19433 * value.h.in (struct Value): make all single arg primitive value
19434 typed ctors "explicit" so c++ won't do any magic implicit
19435 conversion from value type to Value.
19439 * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
19440 Value()'s explicitly.
19442 * collection.cpp (DoubleCollection::FromStr): same.
19444 2008-08-20 Larry Ewing <lewing@novell.com>
19446 * dependencyobject.cpp (create_temp_namescope): don't leak the
19447 temporary namescope we create. Also don't create it over and over
19450 2008-08-20 Larry Ewing <lewing@novell.com>
19452 * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
19453 virtual methods so that we can begin to simplify content rules.
19455 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19456 GetContent to handle the children in a generic way.
19458 * uielement.cpp|h: start moving generic uielement content logic
19459 here. Implement OnLoaded and deal with content directly.
19461 * canvas.cpp|h: remove obsolete methods. Move most of zindex
19462 property logic from panel to here.
19464 * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
19467 * control.cpp|h: generate accessors, start remove OnLoaded and
19470 * dependencyproperty.g.cpp: regen.
19472 2008-08-20 Chris Toshok <toshok@ximian.com>
19474 * text.cpp, text.h: generate accessors for Glyph properties.
19476 * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
19477 shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
19478 xaml.cpp: make another pass through files switching to C++
19479 accessors from GetValue(FooClass::FooProperty)->AsFoo().
19481 * dependencyproperty.g.cpp: regen.
19483 2008-08-20 Chris Toshok <toshok@ximian.com>
19485 * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
19486 canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
19487 frameworkelement.cpp, frameworkelement.h, geometry.cpp,
19488 geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
19489 namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
19490 shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
19491 text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
19492 uielement.h, xap.cpp, xap.h:
19494 mostly, decorate almost all DependencyProperties with
19495 @GenerateAccessors, add in lots of new ones that weren't present
19496 before (to the .h), and remove all those implementations from
19499 Also, don't use #if SL_2_0 in the headers. we can't depend on
19500 that being defined (especially once we install). Any
19501 2.0-specific behavior needs to be done in the .cpp files. There
19502 are still a few things that are wrong wrt
19503 this (dependencyproperty.g.cpp needs to define the DP's
19504 regardless of version, they can just be NULL in the 1.0 case for
19505 2.0 properties, for instance.)
19507 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
19509 2008-08-20 Chris Toshok <toshok@ximian.com>
19511 * uielement.h (ClearLoaded): use &=, not |=, here. fixes tests.
19513 2008-08-20 Jeffrey Stedfast <fejj@novell.com>
19515 * layout.cpp (TextLayout::Layout): Updated to take a
19516 TextLayoutHints argument for providing hints like text alignment
19517 and line stacking/height.
19519 * text.cpp (class TextBlock): Updated a bit for Silverlight
19520 2.0. All of the properties added in 2.0 are now there, although
19521 only 2 of them are respected at the moment (line stacking strategy
19524 * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
19526 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19528 * audio.cpp: NULL out the player instance after deleting it.
19530 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19532 * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
19533 called and if so, do nothing.
19535 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19537 * audio.cpp: We only support 1 or 2 channels for the moment.
19539 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19541 * media.cpp, media.h: Fix buffering progress to take into account that
19542 the first pts isn't necessarily 0 (happens for live media).
19544 2008-08-20 Chris Toshok <toshok@ximian.com>
19546 * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
19547 Focus events on click in a 1.0 context.
19549 2008-08-20 Jackson Harper <jackson@ximian.com>
19551 * xaml.cpp|h: Setting properties requires the xaml namespace so it
19552 can lookup managed types. TODO: It also needs the default
19553 assembly, but I am thinking of moving that to the loader.
19555 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19557 * mplayer.cpp: Properly ref/unref the AudioSource.
19559 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19561 * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
19563 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19565 * media.cpp, media.h, runtime.cpp: Remove media_init, just make
19566 runtime_init call Media::Initialize directly.
19568 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19570 * media.h, media.cpp: Remove media_element_advance_frame from header,
19571 no need to make it public.
19573 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19575 * mplayer.cpp: AdvanceFrame: only return true if we actually processed
19576 any frames. SeekCallback: clear the queue of audio frames as well.
19577 * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
19578 Don't change previous_position while we're seeking, and don't make
19580 * audio.cpp, audio.h: Added AudioSource::ClearFrames.
19582 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19584 * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
19586 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19588 * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
19591 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
19593 * canvas.h, canvas.cpp:
19594 * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
19595 from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
19597 * panel.cpp, collection.cpp: related changes.
19599 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
19601 * uielement.h: change the generator instructions so the
19602 NameProperty is generated in FrameworkElement.
19604 2008-08-19 Chris Toshok <toshok@ximian.com>
19606 * dependencyobject.h,
19607 dependencyobject.cpp (DependencyObject::GetContent): ripped this
19608 out of a hack, should prove useful for the work coming up.
19610 2008-08-19 Chris Toshok <toshok@ximian.com>
19612 * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
19614 2008-08-19 Chris Toshok <toshok@ximian.com>
19616 * control.h, control.cpp (class Control): generate a binding for
19617 Control::InitializeFromXaml and drop the 2 manual C bindings.
19619 * cbinding.h, cbinding.cpp: regen.
19621 2008-08-19 Chris Toshok <toshok@ximian.com>
19623 * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
19624 autogenerate our binding for it.
19626 * cbinding.h, cbinding.cpp: regen.
19628 2008-08-19 Chris Toshok <toshok@ximian.com>
19630 * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
19631 real class, and remove the implementation of
19632 keyboard_get_modifiers. instead, provide a c++ method (both a
19633 getter and setter) and annotate the Getter with
19634 GenerateCBinding/GeneratePInvoke.
19636 * collection.h, collection.cpp: reorder the class decls (why do
19637 people put private first?) and make CollectionIterator a real
19638 class, with annotated methods. Also, move
19639 double_collection_from_str and point_collection_from_str to
19640 DoubleCollection::FromStr and PointCollection::FromStr
19641 respectively. move double_garray_from_str out of here (to
19644 * utils.h, utils.cpp: new (hopefully last) home for
19645 double_garray_from_str.
19647 * point.h, point.cpp (struct Point): rename point_from_str to
19648 Point::FromStr. no reason to have a C method for that.
19650 * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
19652 * window-gtk.h (class MoonWindowGtk): mark the ctor and
19653 GetWidget() with GenerateCBinding/GeneratePInvoke.
19655 * window-gtk.cpp: and remove their implementations.
19657 * xaml.cpp: convert over to all the new ::FromStr methods.
19659 * thickness.cpp: track new home of double_garray_from_str.
19661 * cbinding.h, cbinding.cpp: regen.
19663 2008-08-19 Chris Toshok <toshok@ximian.com>
19665 * uielement.h, uielement.cpp: make almost all data
19666 private/protected. Add a couple of methods to aid in
19667 this (IsLoaded, ClearLoaded, TransformPoint). Get rid of the
19668 cbinding for transform_point - it's never used. Also, re-order
19669 the header to put public things first, then protected then
19672 * runtime.cpp: use IsLoaded.
19674 * panel.cpp: use ClearLoaded.
19676 * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
19679 2008-08-19 Chris Toshok <toshok@ximian.com>
19681 * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
19682 lists, as we will almost always have identical lists. compare the
19683 head of the new list to focused_element to determine if focus
19686 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19688 * pipeline.cpp: Beautify error messages.
19690 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19692 * media.cpp: test-inexistent-media(s) were failing due to ISP's
19693 tendency to return search pages for failed dns lookups. Fixed tests
19694 after testing with sane DNS settings and did the appropiate change
19695 in code (raise correct error message/number).
19697 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
19699 * runtime.h: Make RUNTIME_INIT values sequential.
19701 2008-08-19 Chris Toshok <toshok@ximian.com>
19703 * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
19704 of the object before parsing so that objects don't switch from the
19705 loader's surface to NULL as they're added to the hierarchy while
19708 2008-08-19 Larry Ewing <lewing@novell.com>
19710 * shape.cpp (Shape::InsideObject): check the extents first, then
19711 reorder the stroke/fill tests to test for the most likely first.
19713 Helps speed up sliverlight.net/world a bit.
19715 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19717 * mplayer.h, pipeline.h: No need to surround GetTypeName with
19718 OBJECT_TRACKING anymore.
19720 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19722 * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
19723 audio-pulse.h: Added, our new audio abstraction/implementation.
19724 * Makefile.am, src.mdp, type-generated.cpp: Updated.
19725 * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
19726 * runtime.cpp, runtime.h: Add runtime overrides for audio.
19728 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
19730 * xap.cpp (xap_unpack): Fixed compiler warning.
19732 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19734 * media.cpp: Include headers mplayer.h doesn't include anymore.
19735 MediaElement::SetMedia: only set audio data on the MediaPlayer if
19736 the media has audio. TImelineMarkerCollection::Add: don't call the
19737 base class' Add, call base's Insert instead. Fixes a stack overflow
19738 since base class' Add calls Insert, which TimelineMarkerCollection
19739 overrides to call Add.
19741 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19743 * enums.cpp: Wrap 2.0-only code in SL_2_0.
19745 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
19747 * zip/unzip.c: Get rid of unused variable.
19749 * value.cpp (Value::ToString): Get rid of unused variable.
19751 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19753 * dependencyobject.h: EventObject::ref: print a stack trace before the
19754 abort if we can, and fix typo in the abort message.
19756 2008-08-19 Geoff Norton <gnorton@novell.com>
19758 * xap.cpp: Ensure we can actually enter the directory we're creating.
19760 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
19762 * mplayer.cpp: Silence the compile warning.
19764 * color.cpp (color_from_str): Got rid of unused variable.
19766 * xaml.cpp (dependency_object_set_attributes): Don't need to use
19767 strlen(str) == 0 to figure out if the string is empty, just check
19769 (wrap_type): Removed. Doesn't seem to be used any longer.
19770 (get_type_for_property_name): Same.
19771 (panel_add_child): Same.
19772 (dependency_object_set_property): Made static.
19773 (dependency_object_set_attributes): Same.
19774 (dependency_object_hookup_event): Same.
19775 (dependency_object_missed_property): Same.
19777 * dependencyproperty.cpp (resolve_property_path): Use proper
19778 integer types and avoid calling strlen if all we care to know is
19779 if the string is empty.
19781 * runtime.cpp (Surface::Paint): Get rid of an annoying debug
19783 (Surface::HandleMouseEvent): Removed unused variable.
19785 2008-08-19 Chris Toshok <toshok@ximian.com>
19787 * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
19788 robust - handle Type.Event notation, making sure that the type is
19789 valid for the target.
19791 2008-08-19 Larry Ewing <lewing@novell.com>
19793 * runtime.cpp|h: add override to use sofware fallbacks for
19796 2008-08-19 Chris Toshok <toshok@ximian.com>
19798 * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
19799 1.0 and 2.0 cases. big oops.
19801 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
19803 * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
19804 of a warning that is no longer valid.
19806 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19808 * downloader.h, downloader.cpp: Add a request field to
19809 DownloaderResponse, and a response field to DownloaderRequest. When
19810 a request is aborted, also abort the response. This fixes a crash
19811 when we aborted the request before receiving a response, the
19812 response had no idea the request had been aborted (since the
19813 request didn't store the response after creating it, it couldn't
19814 notify the response of the abort), and happily accessed deleted
19817 2008-08-18 Chris Toshok <toshok@ximian.com>
19819 * runtime.cpp (Surface::CreateArgsForEvent): new method, create
19820 the right kind of args for a given event. we should probably
19822 (Surface::EmitEventOnList): use CreateArgsForEvent. Only create
19823 one instance of the event args that we use to bubble along the
19824 element list. If it's a RoutedEventArgs subclass, set the source
19825 to be the first element in the list, and check the "Handled"
19826 attribute after every emit to see if we should finish early (this
19827 provides for 2.0 semantics).
19828 (Surface::FocusElement): unfortunately the event generation is
19829 async, so add a tick call if we need to. if we already have a
19830 tick call (meaning >= 1 focus change has happened already in this
19831 tick), we drop the intervening change(s). This is likely wrong.
19832 (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
19833 the proper element lists.
19834 (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
19835 silverlight2 (and we have a focused element), emit the event on
19836 the list of elements from the focused element back up to the root.
19837 Otherwise just emit it on the toplevel.
19839 * runtime.h (class Surface): add GetFocusedElement/FocusElement
19840 methods, which are used to implement
19841 FocusManager.GetFocusElement() and Control.Focus().
19843 * uielement.h, uielement.cpp (class UIElement): remove a bunch of
19844 Emit$Event() methods that were never used.
19846 * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
19847 not just "Loaded". there are parsing rules that we can't make use
19848 of here, so more work will likely have to happen in the parser.
19850 * trigger.h (class EventTrigger): add registered_event_id.
19852 * cbinding.h, cbinding.cpp: regenerate.
19854 2008-08-18 Geoff Norton <gnorton@novell.com>
19856 * type-generated.cpp, cbinding.cpp|h: Rengerated
19857 * dependencyobject.h: Bind DependencyObject .ctor
19859 2008-08-18 Geoff Norton <gnorton@novell.com>
19861 * deployment.h: Move CrossDomainAccess to
19862 * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
19863 can specify values from the enum.
19865 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
19867 * cbinding.cpp, cbinding.h, uielement.h: Mark
19868 UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
19870 2008-08-18 Larry Ewing <lewing@novell.com>
19872 * panel.cpp|h: remove SetSurface override, the
19873 DependencyObjectCollection::SetSurface does the work already.
19875 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19877 * uielement.cpp: Autogenerate more of the bindings, make
19878 desired_size private, etc.
19880 2008-08-18 Geoff Norton <gnorton@novell.com>
19882 * eventargs.cpp|h: Change the return type to int, fix the build.
19884 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19886 * uielement.cpp (uielement_get_surface): Removed.
19887 (uielement_invalidate): Removed.
19888 (uielement_set_transform_origin): Removed.
19890 * transform.cpp: Removed manual c-bindings.
19892 * text.cpp: Removed manual c-bindings for property accessors.
19894 2008-08-18 Geoff Norton <gnorton@novell.com>
19896 * type-generated.cpp, cbinding.cpp|h: Rengerated
19897 * uielement.cpp|h, type.h, value.h: Keyboard->Key
19898 * runtime.cpp|h: Move key translation to eventargs, and pass the
19899 raw GdkEventKey to KeyEventArgs.
19900 * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
19901 and remove the old KeyboardEventArgs.
19903 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19905 * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
19907 * size.cpp: Removed manual ctor c-binding.
19909 * shape.cpp: Removed manual c-bindings for property accessors.
19911 2008-08-18 Geoff Norton <gnorton@novell.com>
19913 * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
19914 from managed Streams.
19916 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19918 * runtime.cpp: Removed manual c-bindings for Surface and renamed
19919 Get/SetTrans() to Get/SetTransparent().
19921 * panel.cpp: Removed manual c-bindings for property accessors.
19923 * media.cpp: Removed manual c-bindings for property accessors and
19924 other methods that are now autogenerated.
19926 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19928 * dependencyobject.h: Make the generator happy.
19930 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
19932 * geometry.cpp: Removed manual c-bindings for property accessors.
19934 2008-08-18 Michael Dominic K. <mdk@mdk.am>
19936 * runtime.h: Caller is "in main thread" also when the main_thread
19937 pointer equals NULL (no surface has been created).
19939 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19941 * debug.cpp: Fix a leak found by valgrind.
19943 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19945 * dependencyobject.h: Make GetTypeName virtual if we're tracking
19946 objects, enables better output of lost objects.
19948 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
19950 * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
19951 more objects to be enqueued for unref, loop until there are none
19954 2008-08-17 Geoff Norton <gnorton@novell.com>
19956 * downloader.cpp|h: Add a method for DownloaderResponse to
19957 support a Header Visitor.
19959 2008-08-17 Geoff Norton <gnorton@novell.com>
19961 * uielement.h: Expose desired_size as public to fix the build.
19963 2008-08-17 Chris Toshok <toshok@ximian.com>
19965 * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
19967 2008-08-17 Chris Toshok <toshok@ximian.com>
19969 * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
19970 INCLUDE_MANAGED_CODE.
19972 2008-08-15 Larry Ewing <lewing@novell.com>
19974 * clock.cpp|h: add methods Jeff removed back.
19976 2008-08-15 Chris Toshok <toshok@ximian.com>
19978 * stylus.h (class DrawingAttributes): all managed DP fields are
19980 (class Stroke): DrawingAttributesProperty and StylusPointsProperty
19981 are private in managed-land.
19983 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
19985 * grid.h: Autogenerate bindings for GetActualWidth/Height
19987 * grid.cpp: Removed manual c-bindings.
19989 * frameworkelement.cpp: Removed manual c-bindings.
19991 2008-08-15 Chris Toshok <toshok@ximian.com>
19993 * eventargs.h (enum CollectionChangedAction): change Reset to
19994 Cleared, and add Clearing to handle the old functionality in
19995 DependencyObject::OnCollectionClear.
19997 * dependencyobject.h (class DependencyObject): remove
19998 OnCollectionClear. we handle that case in OnCollectionChanged
20001 * panel.h, panel.cpp (Panel::OnCollectionChanged): move
20002 OnCollectionClear code to here.
20004 * uielement.cpp (UIElement::OnCollectionChanged): add
20005 ActionClearing code here.
20007 * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
20009 * collection.cpp (Collection::Clear): use
20010 EmitChanged (CollectionChangedActionClearing,...) instead of
20013 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20015 * eventargs.cpp|h: Same.
20017 * control.cpp: Same.
20019 * contentcontrol.cpp: Removed manual property accessor c-bindings.
20021 * clock.cpp: Removed manual c-bindings for things that can be
20024 * brush.cpp|h: Removed manual c-bindings for property accessors.
20026 * animation.cpp|h: Added some convenience c++ property accessors and
20027 got rid of all of the manual c-bindings. Fixed them to be
20030 * stylus.cpp: Added c++ property accessors and updated the code to
20031 use them (cleans up some code) and also got rid of the c binding
20032 accessors. We'll autogenerate these.
20034 2008-08-15 Sebastien Pouliot <sebastien@ximian.com>
20036 * layout.cpp: Don't add kerning before a dot (.). This match SL
20037 behavior (i.e. it's not a "sliding dot" algorithm like I expected)
20038 and the effect is visible in a few DRT (like #184).
20040 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20042 * uielement.cpp (UIElement::GetTriggers): Added for convenience.
20043 (UIElement::Dispose): Use the new convenience method.
20045 2008-08-15 Chris Toshok <toshok@ximian.com>
20047 * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
20048 (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
20050 (Panel::OnCollectionChanged): simplify this since the code moved
20051 to ChildAdded/ChildRemoved.
20053 * panel.h, panel.cpp (Panel::Dispose): loop over our children
20054 setting their visual parent to NULL.
20056 * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
20057 trigger collection removing ourselves as the target.
20058 (UIElement::OnPropertyChanged): handle TriggersProperty here -
20059 remove target from the old triggers and set target on the new
20061 (UIElement::OnCollectionChanged): new method, handle
20062 TriggersCollection.
20064 * dependencyobject.cpp: be consistent in our treatment of
20065 LogicalParent - clear it in every place we're removing a DO. Warn
20066 if we're setting it again on the same DO.
20068 * collection.h, collection.cpp: remove triggercollection's
20069 added/removedfromcollection, adn remove uielementcollection's
20070 removedfromcollection. Also, stop using a separate closure. The
20071 collection's LogicalParent always has the same value - use that.
20073 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20075 * clock.cpp (TimeManager::SourceTick): Instead of always using up
20076 to 1/30 of a second for flushing the async queue, use only the
20077 time remaining in our render pass to flush it.
20079 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20081 * animation.h: KeyTimeProperty isn't nullable in managed code.
20083 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20085 * cbinding.cpp, cbinding.h: Regenerated.
20086 * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
20087 to at least open the source.
20088 * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
20090 2008-08-15 Jackson Harper <jackson@ximian.com>
20092 * xaml.cpp: Need to advance after F.
20094 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20096 * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
20099 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20101 * dependencyproperty.g.cpp: Regenerated.
20103 2008-08-14 Larry Ewing <lewing@novell.com>
20105 * animation.h (class KeyFrame): remove the KeyTime DP and make
20106 the ctor private this is an abstract class.
20108 * animation.cpp: retrieve the property via name.
20110 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20112 * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
20113 many times as we can in 1/30th of a second. Major visual
20114 performance improvement for bug #395160.
20116 2008-08-14 Jackson Harper <jackson@ximian.com>
20118 * xaml.cpp|h: We need to pass a pointer to the top level control
20119 when hooking up a managed event, the managed code uses this to
20120 find the method to invoke.
20122 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20124 * uielement.cpp: Implemented property accessors for ZIndex
20126 * collection.cpp (UIElementZIndexComparer): Use
20127 UIElement::GetZIndex(). If, in the future, we make GetZIndex()
20128 return a cached value, now we'll automagically benefit from it.
20130 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20132 ZIndex sorting optimization for bug #395160
20134 * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
20135 over the z_sorted list, it might not yet be
20136 populated (e.g. ResortZIndex() may not have been called yet).
20137 (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
20138 new collection is non-null.
20139 (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
20140 (Panel::OnLoaded): Queue a resort here too.
20142 * collection.cpp (UIElementCollection::AddedToCollection):
20143 Removed. We don't want to do the zindex sortign here anymore. Too
20144 slow. Instead, we'll have Panel::OnCollectionChanged() set the
20145 DirtyChildrenZIndices dirty flag so that the renderer forces a
20147 (UIElementCollection::Insert): Removed, no need to override
20148 anymore since we won't be resorting by zindex here anymore.
20149 (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
20150 maintained as items are added/inserted, we need to always init the
20151 z_sorted array here even if we only have 1 item.
20153 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20155 * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
20157 * playlist.cpp: Use DependencyObject::SetName instead of the C method.
20158 * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
20159 well as Name accessors.
20160 * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
20161 * runtime.cpp: Updated according to new method names.
20163 2008-08-14 Jackson Harper <jackson@ximian.com>
20165 * xaml.cpp: We now create property instances from the property's
20166 type info not the property's parent type. This will allow us to
20167 have a managed attached property on a native object.
20169 2008-08-14 Chris Toshok <toshok@ximian.com>
20171 * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
20173 * thickness.h, thickness.cpp: add thickness_from_str.
20175 * xaml.cpp: add thickness parsing.
20177 2008-08-14 Jackson Harper <jackson@ximian.com>
20179 * xaml.cpp: Need to lookup property element name's in their
20180 namespace so that managed attached properties can be set.
20182 2008-08-14 Jackson Harper <jackson@ximian.com>
20184 * xaml.cpp: If there is a dot in the element name we can assume
20185 it's a property (or at least not an element). This should prevent
20186 some extra calls into managed code to try to create types from
20189 2008-08-13 Geoff Norton <gnorton@novell.com>
20191 * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
20192 calls into the time manager.
20194 2008-08-13 Geoff Norton <gnorton@novell.com>
20196 * runtime.cpp|h: Add a binding for g_idle_add.
20198 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20200 * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
20201 MouseEventArgs methods.
20203 2008-08-14 Jackson Harper <jackson@ximian.com>
20205 * type-generated.cpp: Value types.
20207 2008-08-13 Jackson Harper <jackson@ximian.com>
20209 * xaml.cpp: Make sure we set content properties.
20211 2008-08-13 Jackson Harper <jackson@ximian.com>
20213 * xaml.cpp: Add support for parsing value types.
20215 2008-08-13 Chris Toshok <toshok@ximian.com>
20217 * panel.cpp (Panel::OnCollectionChanged): we only need to call
20218 OnLoaded on the new child.
20220 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20222 * stylus.h: StylusInfo doesn't have a managed equivalent.
20224 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20226 * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
20227 * cbinding.cpp, cbinding.h: Regenerated.
20229 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20231 * type.cpp: Remove spew.
20232 * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
20233 we're trying to get values, not set them.
20235 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20237 * dependencyproperty.g.cpp: Regenerated.
20238 * geometry.h: Added IsFilled property.
20240 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20242 * brush.h: Set correct managed DP access and property types.
20244 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20246 * *.h: Added GeneratePInvoke attribute to each ctor
20248 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20250 * text.cpp: s/Inlines/InlineCollection/g
20252 * xaml.cpp: s/Inlines/InlineCollection/g
20254 * collection.h (class InlineCollection): Renamed from Inlines.
20256 * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
20257 and also the ctor. Needed to prevent a crash in test-props.html
20259 2008-08-13 Geoff Norton <gnorton@novell.com>
20261 * runtime.cpp|h: Reuse the old html_timer infrastructure for the
20262 intial DispatcherTimer implementation.
20264 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20266 * media.h (class MediaElement): Make MarkersProperty internal for
20269 * grid.h (class Grid): Make Column/RowDefinitionsProperties
20270 internal for managed-side.
20272 * text.h (class TextBlock): Make InlinesProperty internal for
20275 * panel.h (class Panel): Update ChildrenProperty managed property
20278 Also added newlines to the end of some files to silence compile
20281 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20283 * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
20284 cbinding.cpp, cbinding.h: Regenerated.
20285 * geometry.h: Annotation fix.
20286 * Makefile.am, src.mdp: Added tilesource.h
20287 * tilesource.h: Added.
20289 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20291 * src.mdp, Makefile.am: Added animation2.h
20292 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
20293 dependencyproperty.g.cpp: Regenerated.
20294 * animation.h: Added missing 2.0 DPs and more annotations.
20295 * animation2.h: Added, contains 2.0 animation classes.
20296 * clock.h: There are no managed equivalent of TimelineGroup and
20297 ParallelTimeline, remove their Namespace annotation.
20299 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20301 * shape.h: Fix warning.
20303 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20305 * shape.h: The managed Shape class must be constructable, so make all
20306 pure virtual methods from the native Shape class just virtual.
20307 * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
20309 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20311 * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
20312 dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
20313 text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
20314 annotations to make gui-compare happier.
20316 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20318 * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
20319 style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
20322 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20324 * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
20325 dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
20326 type-generated.cpp, value.h: Added a native StackPanel class and
20327 generate the managed StackPanel.
20329 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20331 * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
20332 namescope.h, stylus.h, transform.h: Tweak some annotations.
20334 2008-08-12 Chris Toshok <toshok@ximian.com>
20336 * style.h (class Style): make the "Setters DP" field private.
20338 * template.h (class ControlTemplate): add TargetType DP
20340 * dependencyproperty.g.cpp: regen.
20342 2008-08-12 Chris Toshok <toshok@ximian.com>
20344 * style.h (class Setter): hack for the DependencyProperty valued
20345 property. we need to parse a string DP name in a context where we
20346 don't know the type to apply to it, so we need to have a string
20349 * dependencyproperty.g.cpp: regen.
20351 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20353 * collection.h: Annotate Collection.
20355 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20357 * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
20358 size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
20360 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20362 * src.mdp: Updated.
20364 2008-08-12 Chris Toshok <toshok@ximian.com>
20366 * collection.cpp (Collection::Clear): make a temporary copy of the
20367 array so we can zero out the ptrarray before calling
20368 RemovedFromCollection.
20370 2008-08-12 Jackson Harper <jackson@ximian.com>
20373 * xaml.cpp: Hydrate now passes in the default assembly name and
20374 path (we can probably do away with path's I think that's just a
20375 holdover from 1.1). If no assembly name is specified in the
20376 custom xmlns, the default's are used.
20378 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20380 * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
20381 style.h, uielement.h, grid.h, media.h: Tweaked annotations to
20382 support managed DP accessor generation.
20384 2008-08-12 Jeffrey Stedfast <fejj@novell.com>
20386 * collection.cpp (Collection::SetCount): Convenience function.
20387 (Collection::Clear): Use SetCount().
20388 (Collection::Insert): Same.
20389 (Collection::RemoveAt): Same.
20391 * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
20392 parent class rather than base class - while the
20393 DependencyObjectCollection might not currently override Add/Insert
20394 methods, if at some later point overrides are added, then we need
20395 to do no work here.
20397 * collection.cpp (DependencyObjectCollection::SetValueAt):
20398 Removed (not used anywhere).
20399 (Collection::SetValueAtWithError): This needs to call
20400 SetValueAt(), not GetValueAt().
20401 (Collection::SetValueAt): Delete the removed Value after emitting
20402 the event so we don't leak it.
20404 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20406 * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
20407 deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
20408 trigger.h, uielement.h: Use string instead of char* as
20411 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20413 * animation.h, brush.h, canvas.h, clock.h, collection.h,
20414 contentcontrol.h, control.h, dependencyobject.h, deployment.h,
20415 downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
20416 namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
20417 transform.h, trigger.h, uielement.h, usercontrol.h: Added
20418 @Namespace annotations, and changed @PropertyType which were
20419 declared as gint32 (and are enums) to use the actual enum type.
20420 * dependencyproperty.g.cpp: Updated.
20422 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20424 * src.mdp: Updated.
20426 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20428 * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
20429 DependencyProperty to the Kind enum.
20431 2008-08-11 Chris Toshok <toshok@ximian.com>
20433 * deployment.h (class Application): add ResourceProperty.
20435 * style.h: add ValueProperty.
20437 * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
20438 after adding the Version=2.0 stuff to the collection api.
20440 * dependencyproperty.g.cpp: regen.
20442 2008-08-11 Chris Toshok <toshok@ximian.com>
20444 * error.h, error.cpp: add an enum to MoonError that lets us
20445 specify which exception to raise.
20447 * collection.h, collection.cpp: a few changes:
20449 1. make most methods take Value* now instead of Value, to ease the
20450 autogenerated bindings. Leave in Add/Remove taking (Value v) so
20451 we can let c++ do some implicit conversion lifting for us. Leave
20452 the (Value) variants as non-virtual, and make the Value* ones
20455 2. Make ::Add call ::Insert, instead of duplicating all the code.
20457 3. Move all calls of AddedToCollection and RemovedFromCollection
20458 to *after* the work has been done (they're past-tense, so do what
20459 their name implies.) This means subclasses can assume the item is
20460 already in the array (or removed from it) when those methods are
20461 called. The one holdout to this utopian ideal is Clear(). we
20464 4. Switch from overriding GetValue to handle CountProperty (and
20465 leaking a Value* every time we get it) to setting the
20466 CountProperty whenever we need to (in Insert/RemoveAt).
20468 5. Add special GetValueAtWithError, SetValueAtWithError, and
20469 RemoveAtWithError methods, that allow us to effectively raise
20470 exceptions from the unmanaged code. Use the new
20471 MoonError::ErrorKind enum to specify which exception.
20473 6. remove a bunch of C api, which is now autogenerated.
20475 * dependencyproperty.g.cpp (dependency_property_g_init): regen to
20476 pick up Collection::CountProperty's default value.
20478 * cbinding.h, cbinding.cpp: autogen'ed collection api.
20480 * stylus.h, media.h, media.cpp: track collection changes.
20482 * dependencyobject.cpp: track MoonError enum change.
20484 2008-08-11 Chris Toshok <toshok@ximian.com>
20486 * dependencyproperty.g.cpp: regen.
20488 * control.h (class Control): add StyleProperty.
20490 2008-08-11 Sebastien Pouliot <sebastien@ximian.com>
20492 * layout.cpp: Compute line's height with more precision. This
20493 removes the cumulative difference (over multiple lines) with
20494 Silverlight implementation. Fix DRT#209 (enough to PASS) and
20495 improve several other ones (already passing but imperfect).
20497 2008-08-11 Chris Toshok <toshok@ximian.com>
20499 * style.h: comment out 2 problematic DP's for now.
20501 * dependencyproperty.g.cpp: regen
20503 2008-08-11 Chris Toshok <toshok@ximian.com>
20505 * style.h, style.cpp: add Style, SetterBase, Setter, and
20506 SetterBaseCollection unmanaged types.
20508 * Makefile.am: add them to the 2.0 build.
20510 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
20511 dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
20513 2008-08-11 Jeffrey Stedfast <fejj@novell.com>
20515 * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
20517 (Polygon::OnCollectionChanged): Same.
20519 * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
20520 the TextDecorationsProperty changes too. Fixes the "underline
20521 hyperlinks" portion of bug #412986.
20523 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20525 * xaml.cpp: Remove debug spew.
20527 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20529 * array.cpp, array.h: Removed, no longer needed.
20530 * collection.cpp, collection.h: Moved double_garray_from_str to
20532 * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
20533 shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
20534 xaml.cpp: Remove the double and point arrays, no longer needed.
20535 * type-generated.cpp: Remove the double and point arrays, no longer
20536 needed. Implement support for 2.0 events.
20538 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20540 * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
20543 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
20545 * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
20547 2008-08-09 Jeffrey Stedfast <fejj@novell.com>
20549 * *.h: Removed *_new() prototypes which are autogenerated in
20552 2008-08-08 Chris Toshok <toshok@ximian.com>
20554 * template.h, template.cpp: new file, stub implementations for
20555 FrameworkTemplate and ControlTemplate.
20557 * Makefile.am: add template.h/cpp.
20559 * control.h: add Template property.
20561 * frameworkelement.h: add some 2.0 events.
20563 * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
20564 value.h, type-generated.cpp: regenerate.
20566 2008-08-08 Chris Toshok <toshok@ximian.com>
20568 * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
20569 parser around in various methods (starting from the public
20570 xaml_set_property_from_str and value_from_str*) in order to get it
20571 down to where it's needed for the enum_* calls.
20573 * enums.h, enums.cpp: add a "sl2" argument so we can resolve
20574 sl1/sl2 specific enum values, and add the 2.0 specific
20575 Horizontal/VerticalAlignment mappings.
20577 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
20579 * runtime.cpp: Remove comments to self :)
20581 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
20583 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20584 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20585 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20586 animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
20587 control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
20588 clock.cpp, uielement.h, collection.h, geometry.h,
20589 contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
20590 collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
20591 frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
20592 namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
20593 registration from *_init methods, and remove *_init methods which
20594 turned out to be empty after that.
20596 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
20598 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20599 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20600 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20601 animation.h, grid.cpp, downloader.h, shape.h,
20602 dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
20603 control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
20604 Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
20605 clock.cpp, uielement.h, collection.h, geometry.h,
20606 contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
20607 grid.h, collection.cpp, geometry.cpp, shape.cpp,
20608 dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
20609 brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
20610 usercontrol.h: Generate dependency property registration.
20612 2008-08-07 Chris Toshok <toshok@ximian.com>
20614 * collection.h, collection.cpp (double_collection_from_str): new
20616 (point_collection_from_str): new method.
20618 * xaml.cpp (value_from_str): add support for
20619 DoubleCollection/PointCollection properties. leave
20620 DoubleArray/PointArray in for now, although nothing should use it.
20622 * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
20623 PointArray/DoubleArray properties to using
20624 PointCollection/DoubleCollection. This is unfortunately a
20625 necessity due to the 2.0 changes, but it should be transparent for
20628 2008-08-07 Larry Ewing <lewing@novell.com>
20630 * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
20631 on ShiftPosition interaction with the shape cache to fix the
20632 droppings we were seeing in AnimationMatrix and
20633 StoryBoard_ModifyProperty.htm.
20635 2008-08-07 Geoff Norton <gnorton@novell.com>
20637 * media.cpp: When the MediaElement source changes set the
20638 BufferingProgress back to 0 otherwise we may never emit a
20639 BufferingProgressChangedEvent for the new source.
20641 2008-08-07 Sebastien Pouliot <sebastien@ximian.com>
20643 * layout.cpp: Handle negative horiBearingX correctly. This gives
20644 better visual results in DRT #47 (same width value, up to 2
20645 decimal) and #209 (not enough to make it PASS but I doubt the
20646 master is ok, since I can't duplicate its output).
20648 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
20650 * dependencyobject.cpp: HasProperty: accept attached properties for
20653 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
20655 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20656 control.h, deployment.h, text.h, thickness.h, trigger.cpp,
20657 canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
20658 transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
20659 shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
20660 text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
20661 point.h, collection.h, geometry.h, contentcontrol.cpp,
20662 frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
20663 geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
20664 rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
20665 instructions to generate c constructors in headers and remove *_new
20666 implementations from cpp files.
20667 * dependencyobject.h: Typedef function pointer to avoid making the
20668 generator understand function pointer syntax. Update comments to
20670 * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
20671 * type.h, type.h.in: Updated comments to new syntax.
20672 * mms-downloader.h: Use C++ syntax.
20673 * dependencyproperty.h, dependencyproperty.cpp: Make
20674 dependency_property_register_managed_property a method on the type
20675 and update comments to new syntax.
20676 * type-generated.cpp: Updated by new generator, which did actually
20677 catch a few errors.
20679 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
20681 * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
20684 2008-08-06 Geoff Norton <gnorton@novell.com>
20686 * dependencyproperty.cpp: When registering a clashing DP
20687 return the original so that the code can act on it as it
20688 expects. Fixes about 18 DRT regressions.
20690 2008-08-06 Chris Toshok <toshok@ximian.com>
20692 * uielement.h, uielement.cpp: add GetTransformToUIElement, the
20693 unmanaged equivalent to the managed UIElement.TransformToVisual.
20695 Also change the signature of HitTest to take a Point, not two
20696 doubles. Add a HitTest overload that takes a Rect in
20697 preparation for 2.0.
20699 * panel.h, panel.cpp: track HitTest signature change.
20701 * control.h, control.cpp: track HitTest signature change.
20703 2008-08-06 Chris Toshok <toshok@ximian.com>
20705 * transform.h, transform.cpp: add a convenience ctor for Matrix
20706 that takes a cairo_matrix_t*.
20708 2008-08-06 Chris Toshok <toshok@ximian.com>
20710 * type-generated.cpp (type_infos): fix ctors for UIElement and
20711 UIElementCollection.
20713 2008-08-06 Chris Toshok <toshok@ximian.com>
20715 * frameworkelement.h, frameworkelement.cpp: add
20716 DataContextProperty.
20718 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
20720 * type.cpp: Fix for old glib in sled.
20722 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
20724 * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
20725 type-generated.cpp: Add custom properties to a GSList instead of
20726 the hash table given that several custom properties can be
20727 registered on the same type with the same name.
20729 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
20731 * src.mdp: Make src and plugin projects build.
20733 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
20735 * src.mdp: Updated.
20737 2008-08-05 Chris Toshok <toshok@ximian.com>
20739 * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
20740 superclass of Transform, and move all the current Transform stuff
20743 * type.h, type-generated.cpp, value.h: resync
20745 2008-08-05 Chris Toshok <toshok@ximian.com>
20747 * uielement.h, uielement.cpp, frameworkelement.h,
20748 frameworkelement.cpp: move the UIElement DPs back - the move to
20749 FrameworkElement breaks tests.
20751 * collection.cpp (TriggerCollection::AddedToCollection): quiet
20753 (TriggerCollection::RemovedFromCollection): same.
20755 2008-08-05 Chris Toshok <toshok@ximian.com>
20757 * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
20758 DependencyProperties. we need a way to limit access to these to
20761 * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
20762 TagProperty, TriggersProperty are moved to
20763 frameworkelement.h/.cpp.
20765 * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
20766 moved from UIElement to FrameworkElement.
20768 * size.h, size.cpp: add SizeChangedEventArgs.
20770 * thickness.h: move this type here
20772 * control.h: #include thickness.h
20774 * type.h, value.h, type-generated.cpp: regenerate for
20775 SIZECHANGEDEVENTARGS.
20777 2008-08-05 Chris Toshok <toshok@ximian.com>
20779 * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
20781 * enums.h: add comment about keeping MouseCursors enum in sync
20784 * enums.cpp: make all the mappings use symbols instead of integer
20785 constants. Also, rename enums.c to enums.cpp so it can include
20786 the .h files for enums not in enums.h.
20788 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20790 * src.mdp: Remove visual.cpp|h from here too.
20792 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20794 * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
20795 type-generated.cpp, uielement.cpp, uielement.h, value.h,
20796 visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
20797 libmoon.h: Deleted Visual (moved content into UIElement), and
20798 renamed VisualCollection to UIElementCollection.
20800 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20802 * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
20803 GetValueWithError: Add a parameter to specify the exact type
20804 (including managed subclassing) of the object. HasProperty: use
20805 that parameter to determine if the type has the specified property
20807 * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
20808 a is_custom field to determine if the property is our own or not.
20810 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
20812 * cbinding.cpp, cbinding.h: Updated.
20813 * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
20814 dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
20815 type.h.in, type-generated.cpp: Create a Types class which may
20816 contain additional types. Change the DP/DO/Type overloads
20817 containing a Surface to take a Types argument instead.
20819 2008-08-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
20821 * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
20823 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20827 * clock.h: Adding method to store a manual target (instead of a named target)
20828 for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
20830 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20833 * animation.h: A little bit of C API for KeySpline.
20835 2008-08-04 Michael Dominic K. <mdk@mdk.am>
20837 * runtime.cpp: _get_surface can only be called from the main thread.
20839 2008-08-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
20841 * src.mdp, cbinding.h, cbinding.cpp: Updated.
20842 * Makefile.am: Include error.cpp.
20843 * error.h, error.cpp: Added MoonError.
20844 * dependencyproperty.h: Make RegisterFull 2.0 only.
20845 * dependencyobject.h, dependencyobject.cpp: Added and implemented
20846 Get[[No]Default]ValueWithError and a HasProperty method which takes
20847 into account properties registered on a surface.
20849 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20851 * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
20852 * media.cpp: Use property accessors instead of GetValue.
20854 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20856 * cbinding.cpp, cbinding.h: Update.
20857 * dependencyproperty.cpp: RegisterFull: Only wrap method code in
20858 SL_2_0, fixed 1.0 build.
20860 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20862 * dependencyproperty.h: Make GetName return a const char*, and rename
20863 parameters from readonly to read_only (to not conflict with C#
20866 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
20868 * src.mdp: Updated.
20869 * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
20870 DependencyProperty's C methods.
20871 * cbinding.cpp, cbinding.h: Added.
20872 * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
20873 moon/generators, and add methodgen to generate pinvokes, and cgen
20874 to generate c bindings.
20876 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20878 * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
20879 Implement property changed callbacks.
20881 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20883 * contentcontrol.h, control.h: Fix includes.
20885 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20887 * pipeline-ffmpeg.cpp: Fix warning.
20889 2008-08-01 Jeffrey Stedfast <fejj@novell.com>
20891 * dependencyobject.cpp (EventObject::Dispose): Call
20893 (EventObject::unref): Don't call SetSurface() here anymore.
20895 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20897 * runtime.cpp|h: Adding few utility functions to modify the flags
20898 at runtime -- provided that there are no surfaces currently
20899 present. Would be nice to be able to somehow do it before calling
20902 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20904 * runtime.cpp|h: Adding an expose handoff custom
20905 function that can be set on surface. It's called just after
20906 render_cb when something has been updated on the screen.
20908 2008-08-01 Michael Dominic K. <mdk@mdk.am>
20910 * runtime.cpp|h: Adding a global surface list and an
20911 ability to access it. I have a bad feeling we need some locking
20912 in the _get_surface_list function.
20914 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
20916 * src.mdp: Updated.
20918 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20920 This is the proper fix for bug #412443
20922 * visual.cpp (VisualCollection::Dispose): Implement Dispose()
20924 (VisualCollection::RemovedFromCollection): Now that we know we are
20925 disposing, we can unset VisualParent here instead of in our
20926 dtor/Dispose() method, saving us from having to interate over our
20929 * collection.cpp (Collection::Dispose): Implement a Dispose()
20930 method which does what the dtor used to do.
20932 * dependencyobject.cpp (EventObject::unref): Call Dispose() just
20933 before deleting the object.
20935 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20937 * dependencyobject.cpp (struct Listener): Comment out the listener
20938 reffing from previous commit. I don't think this is correct.
20940 * visual.cpp (VisualCollection): Set z_sorted to NULL after
20941 freeing it so that parent class dtor calling
20942 RemovedFromCollection() will not poke at free'd memory.
20944 2008-07-31 Geoff Norton <gnorton@novell.com>
20946 * Makefile.am: Undo part of the recent Makefile changes as they broke
20949 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20953 * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
20955 (DependencyObject::RemovePropertyChangeListener): Unref the listener.
20957 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
20959 * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
20960 this needs to chain up to
20961 DependencyObjectCollection::RemovedFromCollection() rather than
20962 AddedToCollection(). Duh.
20964 2008-07-30 Jeffrey Stedfast <fejj@novell.com>
20966 * contentcontrol.cpp|h: Added.
20968 * enums.h: Moved some font/text enums here from font.h
20970 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20972 * dependencyproperty.cpp: Fix build.
20974 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20976 * runtime.cpp: Fix 1.0 build.
20978 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20980 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
20981 type.cpp, type.h, type.h.in, typegen/typegen.cs,
20982 type-generated.cpp: Store DependencyProperties in the Type* instead
20983 of a hashtable keyed on the kind.
20985 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
20987 * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
20988 given that since we might not have access to the surface where the
20989 type was registered, it's not possible to do any type checking
20990 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
20991 Implement registration of managed properties on a surface.
20992 * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
20993 types registered on a surface, added a Type::MANAGED enum value.
20994 * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
20997 2008-07-29 Jeffrey Stedfast <fejj@novell.com>
20999 * text.cpp (inline_new): Added.
21001 2008-07-29 Jackson Harper <jackson@ximian.com>
21003 * xaml.cpp: Add a set_parent call, I need to do some fanagling
21004 there so collection items don't have their parents set.
21005 - Managed items that are being hydrated or created using x:Class
21006 need to get content properties from the managed world.
21008 2008-07-28 Chris Toshok <toshok@ximian.com>
21010 * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
21011 type-generated.cpp: Add Size foo.
21013 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
21015 * value.cpp (Value::FreeValue): Oops, free Thickness.
21017 2008-07-28 Chris Toshok <toshok@ximian.com>
21019 * control.h (struct Thickness): reorder fields to match managed
21022 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
21024 * typegen/typegen.cs: Added Thickness.
21026 * value.h.in, type.h.in: Added Thickness.
21028 * value.cpp: Implemented Thickness value ctor/etc.
21030 * enums.h: Added more 2.0-specific enums.
21032 * control.cpp|h: Implemented property accessors/bindings and
21035 2008-07-28 Michael Dominic K. <mdk@mdk.am>
21037 * animation.cpp: When starting an SB that has been started already make sure to
21038 remove the Completed handler before the teardown. Fixes #405518.
21040 2008-07-28 Chris Toshok <toshok@ximian.com>
21042 * collection.cpp (collection_iterator_next): move the check for
21043 index-in-range to after the increment of it. that way managed
21044 code doesn't step off the end of the list.
21046 2008-07-26 Chris Toshok <toshok@ximian.com>
21048 * eventargs.h, eventargs.cpp: some 2.0 event stuff. Make the
21049 MouseEventArgs and KeyboardEventArgs classes subclasses of a new
21050 class - RoutedEventArgs. Also, add a "Handled" field to both
21051 MouseEventArgs and KeyboardEventArgs. Lastly add a "Keyboard"
21052 class to map to the 2.0 static Keyboard class. it exposes nothing
21053 but a Modifiers property, which isn't updated at present, but will
21054 be by the Surface code (in the key event handler).
21056 * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
21059 2008-07-26 Chris Toshok <toshok@ximian.com>
21061 * enums.h (enum ModifierKey): 2.0 specific enum for use by the
21064 2008-07-26 Jackson Harper <jackson@ximian.com>
21066 * xaml.cpp: If there isn't a managed content property, try looking
21067 for an unmanaged one.
21069 2008-07-26 Jackson Harper <jackson@ximian.com>
21071 * xaml.h|cpp: Create elements for imported managed namespaces.
21073 2008-07-25 Chris Toshok <toshok@ximian.com>
21075 * runtime.h, runtime.cpp: reformat the class decl to put public:
21076 stuff first. add "bool silverlight2" to the surface ctor so we
21077 can start to use it for behavioral differences (routed event
21078 handlers, key events, focus, etc).
21080 2008-07-25 Jeffrey Stedfast <fejj@novell.com>
21082 * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
21083 multiple StrokeCollections at a time but they cannot be added to
21084 the same collection multiple times. Do not default to
21085 DependencyObjectCollection::CanAdd()'s behavior because it checks
21086 that the logical parent is unset (which will not be accurate for
21088 (StylusPointCollection): Same as StrokeCollection.
21090 * xaml.cpp (dependency_object_add_child): Set the logical parent
21091 of items to NULL before adding them to a collection.
21093 * collection.h (class Collection): Removed 'unique' field, it's
21094 not necessary afterall.
21095 (Collection::CanAdd): New virtual method to check if the value can
21096 be added to the collection (by default always returns true).
21097 (DependencyObjectCollection::CanAdd): Override CanAdd() by
21098 checking if the object being added has a logical parent. If it
21099 already has a parent, it cannot be added (this is how Silverlight
21102 * collection.cpp (Collection::Add): There's no such thing as
21103 'unique' anymore. Don't check if the value is already contained
21104 within our collection like the old code used to do, instead call
21105 our new virtual method CanAdd() to see if we can add it.
21106 (Collection::Insert): Check CanAdd().
21107 (Collection::SetValueAt): Check CanAdd().
21109 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21111 * collection.cpp (collection_add): Fixed.
21113 * collection.h: Get rid of convenience wrappers that aren't even
21114 used. Also removes the need for previous commit.
21116 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21118 * collection.h (class DependencyObjectCollection): Add virtual
21119 Add(), Clear() and Insert(). This makes it possible for subclasses
21120 to chain up if they need to override any of these.
21121 (class DoubleCollection): Same.
21122 (class PointCollection): Here too.
21124 * visual.cpp (VisualCollection::Clear): Chain up to
21125 DependencyObjectCollection::Clear() rather than
21126 Collection::Clear().
21127 (VisualCollection::Insert): Don't bother resizing the z_sorted
21128 array here, it will be done inside ResortByZIndex() anyway.
21129 (VisualCollection::Insert): Chain up to
21130 DependencyObjectCollection::Insert() rather than
21131 Collection::Insert()
21133 2008-07-24 Geoff Norton <gnorton@novell.com>
21135 * downloader.cpp: When a downloader is reused reset the completed
21136 state when we get the new Open call.
21138 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21140 * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
21142 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21143 Unregister the NameScope the same way the old Collection::Remove()
21144 way did it. This way seems the most correct (RemoveAt() was
21145 totally broken and SetVal() doesn't seem right afterall).
21147 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21149 * collection.cpp: Added c-wrappers for creating new
21150 collections. Also changed the c-bindings for
21151 setting/adding/inserting/etc items to the collection to take
21152 Value* instead of Value. Should make it simpler for the managed
21155 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21157 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21158 Unregister the NameScope the same way it was done in the more
21159 common case in the old code (why were there different ways?).
21161 * text.cpp (TextBlock::OnCollectionChanged): Chain up.
21162 (TextBlock::OnCollectionItemChanged): Same.
21164 * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
21165 (GradientBrush::OnCollectionItemChanged): Chain up and notify
21168 * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
21169 (GeometryGroup::OnCollectionItemChanged): Chain up and notify
21171 (PathGeometry::OnCollectionChanged): Chain up.
21172 (PathGeometry::OnCollectionItemChanged): Chain up and notify
21174 (PathFigure::OnCollectionChanged): Chain up.
21175 (PathFigure::OnCollectionItemChanged): Chain up and notify
21178 * shape.cpp (Polygon::OnCollectionChanged): Chain up.
21179 (Polygon::OnCollectionItemChanged): Same.
21180 (Polyline::OnCollectionChanged): Same.
21181 (Polyline::OnCollectionItemChanged): Same.
21183 * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
21184 call NotifyListersOfPropertyChange().
21186 * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
21187 call NotifyListersOfPropertyChange().
21189 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21191 * collection.cp|h: Reworked Collections a lot. Collection is now a
21192 generic collection of Values. Added 3 new collections:
21193 DependencyObjectCollection (which holds DO's like the old
21194 Collection class did), DoubleCollection and PointCollection.
21196 * dependencyobject.h (DependencyObject::OnCollectionChanged):
21197 Changed the way this works to reflect the managed API.
21199 *.cpp|h: Updated to reflect above changes.
21201 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21203 * utils.cpp (g_ptr_array_insert): New utility function.
21204 (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
21205 find the index where we want to add the item.
21207 2008-07-23 Chris Toshok <toshok@ximian.com>
21209 * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
21210 transform.cpp, grid.cpp, animation.cpp, text.cpp,
21211 dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
21212 geometry.cpp, shape.cpp, dependencyobject.cpp,
21213 frameworkelement.cpp, media.cpp, brush.cpp: a couple of
21214 DependencyPropertyChanges:
21216 1. switch to the Silverlight/WPF naming of the two Types.
21217 type/value_type change to owner_type/property_type.
21219 2. go all gtk-3.0, and make things private with accessors.
21221 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
21223 * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
21224 dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
21225 dependencyproperty.h, deployment.cpp, downloader.cpp,
21226 frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
21227 namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
21228 text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
21229 usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
21230 GetDependencyObject from DependencyObject to DependencyProperty.
21232 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
21234 * dependencyobject.h, dependencyproperty.h, Makefile.am,
21235 dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
21236 DependencyProperty to its own file before it grows bigger.
21238 2008-07-21 Jackson Harper <jackson@ximian.com>
21240 * xaml.cpp: Add back in the ability to create elements from
21241 managed elements using the x:Class syntax.
21243 2008-07-21 Jackson Harper <jackson@ximian.com>
21246 * type-generated.cpp: The UserControl's Content Property name is
21247 Content not ContentProperty.
21249 2008-07-21 Jeffrey Stedfast <fejj@novell.com>
21251 * collection.cpp (collection_add): Fixed to return int.
21253 2008-07-21 Jackson Harper <jackson@ximian.com>
21255 * xaml.cpp: Add support for parsing GridLength attribute values.
21257 2008-07-19 Geoff Norton <gnorton@novell.com>
21259 * mms-downloader.(cpp|h): Ensure that we always stream-select a marker
21260 stream when there is one available. Fixes drt #2.
21261 Refactor some code duplication into a utility method.
21263 2008-07-19 Jackson Harper <jackson@ximian.com>
21265 * xaml.cpp: We can't blindly assume an object has a content
21268 2008-07-19 Jackson Harper <jackson@ximian.com>
21270 * type-generated.cpp: UserControl has a content property.
21271 * value.h|.h.in|.cpp: Add GridLength to Value.
21273 2008-07-18 Geoff Norton <gnorton@novell.com>
21275 * media.cpp: Revert InitialBuffer work around as it has some unexpected
21278 2008-07-18 Geoff Norton <gnorton@novell.com>
21280 * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
21281 get a new burst from the mms server with AccelBW.
21283 2008-07-18 Geoff Norton <gnorton@novell.com>
21285 * media.cpp: If we're using a mms source we can attempt to start playing the
21286 first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
21287 Fixes c9 stream start lag.
21289 2008-07-18 Geoff Norton <gnorton@novell.com>
21291 * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
21292 our initial buffer quickly.
21294 2008-07-18 Geoff Norton <gnorton@novell.com>
21296 * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
21297 * Makefile.am: Add mp3.(cpp|h) to the build.
21298 * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
21299 together, so we need to split them up and pass them to avcodec_decode_audio2
21300 one at a time. Its also possible that we could get a partial frame, so we need
21301 to buffer that data. Fixes mms+mp3.
21303 2008-07-18 Jeffrey Stedfast <fejj@novell.com>
21305 Fix for bug #410206
21307 * text.h (TextBlock::GetBoundingHeight): Return the larger of the
21309 (TextBlock::GetBoundingWidth): Same.
21311 2008-07-18 Chris Toshok <toshok@ximian.com>
21313 * Makefile.am (libmoon_include_HEADERS): add window.h and
21315 (libmoon_la_SOURCES): add window-gtk.cpp
21317 * window.h: abstract class for windows, that surface will use to
21318 deal with window/widget level operations.
21320 * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
21323 * runtime.h, runtime.cpp: factor out all the widget stuff from
21324 this file, along with all "width" and "height" fields. now
21325 Surface knows nothing about widgets or windowless. It speaks to
21326 MoonWindow implementations instead. Add several public methods
21327 that the window implementations can call (anything HandleUI*) to
21328 communicate events back to the surface.
21330 * canvas.cpp: surface->Get{Width,Height} ==>
21331 surface->GetWindow()->Get{Width,Height}.
21333 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21336 * media.cpp: Reverting prev change, different solution: process the tick calls
21337 before processing the render.
21339 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21341 * media.cpp: If the downloader is already completed, don't do an extra async
21342 call when setting source. Fixes the downloader-set-source... testcase.
21344 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21346 * media.cpp: Fixing a crasher in case bad parameters passed from js.
21348 2008-07-18 Jackson Harper <jackson@ximian.com>
21350 * xaml.h: New delegates and functions for the loader. We need to
21351 call back into managed code when we import a xaml namespace so
21352 that it knows which objects are available and we need a new
21353 function for creating those objects.
21355 2008-07-18 Jackson Harper <jackson@ximian.com>
21357 * usercontrol.cpp|h: Add C functions for accessing the Content
21360 2008-07-17 Jackson Harper <jackson@ximian.com>
21364 * type-generated.cpp:
21365 * deployment.cpp|h: Add an Application type. This doesnt directly
21366 map to the managed Application because it inherits from
21367 DependencyObject, but it allows us to parse Application XAML files
21368 and then we can pull the values we need.
21370 2008-07-17 Jackson Harper <jackson@ximian.com>
21372 * libmoon.h: Add usercontrol.h, I want access to this in the
21375 2008-07-17 Jackson Harper <jackson@ximian.com>
21377 * xaml.cpp: Had a backwards IsSubclassOf here causing
21378 UserControl's content property to not get set (and I imagine many
21379 other content properties).
21380 * usercontrol.h: Add the ContentProperty metadata.
21382 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
21384 * downloader.h|cpp: provide hooks for DownloadeRequest
21386 2008-07-17 Jeffrey Stedfast <fejj@novell.com>
21388 * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
21390 * runtime.cpp (surface_create_downloader): We need to actually
21391 return the downloader here or our caller will just get garbage ;-)
21393 2008-07-17 Michael Dominic K. <mdk@mdk.am>
21395 * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
21397 * runtime.h: On desktop and browser by default use idle hinting.
21399 2008-07-17 Michael Dominic K. <mdk@mdk.am>
21401 * runtime.cpp: Adding "idlehint" to moonlight overrides that will
21402 control the use of idle hint in the clocks.
21404 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
21406 * runtime.h|cpp: add surface_get_downloader
21408 2008-07-16 Larry Ewing <lewing@novell.com>
21410 * runtime.cpp: try to get the resize logic correct for all cases,
21411 including popfly, ControlState.htm and fullscreen tests.
21413 Fixes the (non)rendering issues in the popfly game creator.
21415 2008-07-16 Geoff Norton <gnorton@novell.com>
21417 * mplayer.cpp: Its possible that extremely small audio files will
21418 never fill the sound buffer enough causing us to never call snd_pcm_open.
21419 Ensure that we open the buffer to play the sound before shutting down
21422 2008-07-16 Geoff Norton <gnorton@novell.com>
21424 * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
21426 2008-07-16 Sebastien Pouliot <sebastien@ximian.com>
21428 * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be
21429 greater than Width. Fix MS DRT#184 and #208. ALso makes #206
21430 looks better (but it already passed)
21432 2008-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
21434 * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
21435 class doesn't do anything live/mms anymore. LiveSource: removed
21436 completely, never used. Added MemoryNestedSource to wrap another
21437 MemorySource without messing with its current position pointer.
21438 MemoryQueueSource: store already parsed packets instead of
21439 MemorySources in the queue, saves a memory allocation and prevents
21440 parsing each packet twice when buffering (once for the code which
21441 determines the last available pts, and again for the normal
21442 demuxing code path).
21443 * mms-downloader.cpp: Updated to not delete asf parser, unref it
21445 * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
21446 wait a bit longer before ending up waiting for more data (which
21447 causes the MediaElement to go into buffering mode).
21448 * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
21451 2008-07-15 Larry Ewing <lewing@novell.com>
21453 * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
21454 fix a regression in the fullscreen message code.
21456 2008-07-15 Jb Evain <jbevain@novell.com>
21458 * deployment.cpp|h: start updating Deployment to sl2b2.
21460 2008-07-15 Jb Evain <jbevain@novell.com>
21462 * deployment.h: remove SupportedCulture and SupportedCultureCollection
21463 as they no longer exist.
21464 * value.h, type.h, type-generated.cpp: regenerate.
21466 2008-07-15 Jb Evain <jbevain@novell.com>
21468 * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
21470 2008-07-15 Jb Evain <jbevain@novell.com>
21472 * list.cpp: set pointers to NULL instead of 0.
21474 2008-07-14 Geoff Norton <gnorton@novell.com>
21476 * mplayer.cpp: If we've already reached the EOF in the audio stream
21477 don't keep processing GetNextBuffer. This was causing us to emit
21478 MediaEnded more than once, causing failures in the test suite.
21480 2008-07-14 Geoff Norton <gnorton@novell.com>
21482 * downloader.cpp: Change completed to check a bool instead of
21483 filename, as filename can now be set before the downloader is in fact
21486 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
21488 * media.cpp: Initialize Media with our downloader.
21489 * pipeline.cpp: Media::Open: Check if the source has ended while
21490 waiting for an asfparser. Remove print_stack_traces.
21492 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
21494 * internal-downloader.h: Add InternalDownloader::GetType to allow the
21495 derived internal downloader to tell what kind of internal
21497 * file-downloader.h: Implement InternalDownloader::GetType.
21498 * downloader.h: Make the internal downloader publicly accessible. Add a
21499 Downloader::IsAborted method.
21500 * mms-downloader.h, mms-downloader.cpp: Implement
21501 InternalDownloader::GetType. Store the ASFParser we create in the
21502 class instance, so that the pipeline can get it. No need to write
21503 the header packet to the stream anymore.
21504 * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
21505 calculation of buffering progress to take into account that the
21506 currently available pts might be before the last played pts.
21507 * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
21509 * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
21510 argument and access the internal mms downloader on that Downloader
21511 to get the asf parser. Remove Read/Seek support from
21512 MemoryQueueSource, and just add a Pop method which returns a
21513 MemorySource for the next packet in the queue. Also add support to
21514 return all the packets in the queue as an array so that the
21515 ASFParser can easily determine the last pts available.
21516 * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
21517 g_mutex. Also make TickCall take a ref to the data parameter until
21518 the tick call has been made. This also ensures that the data
21519 parameter gets unreffed correctly when the tick call is never made
21520 (such as when we skip calls due to the TimeManager getting shut
21522 * dependencyobject.cpp: Don't ref in AddTickCall anymore.
21524 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
21526 * playlist.cpp: Fix warning.
21528 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
21530 * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead
21531 of horiAdvance since the later is rounded to an integer. FixMS
21532 DRT#45 and get better results (less differences) on many font
21535 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21537 * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
21539 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
21541 * font.cpp: (font_conic_to) Directly use moon_quad_curve_to
21542 instead of doing it's own second to third order calculation.
21544 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21546 * mplayer.cpp: Don't store target pts from audio thread if we're paused
21547 (audio thread might not have gotten the pause request yet).
21549 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21551 * pipeline.cpp: Don't Signal more than once. I have no idea why the
21552 waiting thread doesn't wake up though.
21553 * mplayer.cpp: Comment out a printf, and always break the play loop
21554 when we're doing rw access.
21556 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
21558 * geometry.cpp|h: Remove useless code for computing bounds on
21559 PathFigure (now all handled at PathGeometry level).
21561 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21563 * mplayer.cpp: Fix a couple of leaks.
21565 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21567 * pipeline.cpp: There's no need to call AudioPlayer::Initialize
21569 * runtime.cpp, runtime.h: Added
21570 RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
21571 * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
21572 addition to the already supported MMAP access mode for alsa. This
21573 also required a major refactoring to only call alsa on the audio
21574 thread due to buggy pulseaudio hanging us (and the rest of the
21575 machine) otherwise.
21577 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
21579 * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
21580 inside each type (and out of the general case).
21582 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21584 * dependencyobject.cpp: Fix leak.
21586 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
21588 * debug.cpp: Make valgrind happy.
21590 2008-07-09 Geoff Norton <gnorton@novell.com>
21592 * media.cpp: Ensure that we clear our old loader when we set
21595 2008-07-09 Fernando Herrera <fherrera@novell.com>
21597 * pipeline.cpp: Always set MemoryQueueSource element's size
21598 based to offset+n even for live sources.
21600 2008-07-09 Jeffrey Stedfast <fejj@novell.com>
21602 Fixes for bug #406934
21604 * text.cpp (Glyphs::SetSurface): Override so that we can start
21605 downloading the font as soon as the element gets (re)attached.
21606 (Glyphs::OnPropertyChanged): If we aren't attached, set
21607 uri_changed to true so that when we are (re)attached, we can start
21610 * media.cpp (MediaBase::MediaBase): Init new state variable
21611 'source_changed' to false.
21612 (MediaBase::SetSurface): If source_changed and we are being
21613 attached to a surface, initiate a download.
21614 (MediaBase::SetSource): Set source_changed to false.
21615 (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
21617 (MediaElement::OnPropertyChanged): Don't handle SourceProperty
21618 changes anymore, let MediaBase do that for us.
21619 (Image::OnPropertyChanged): Same.
21621 2008-07-09 Geoff Norton <gnorton@novell.com>
21623 * mms-downloader.cpp: Remove the guard we had against copying
21624 random memory and provide the correct amount of data to the
21625 pipeline from each packet.
21627 2008-07-09 Geoff Norton <gnorton@novell.com>
21629 * downloader.(cpp|h): NotifyFinished is now the finished
21630 event. The filename will be set (if available) in SetFilename.
21631 * media.(cpp|h): Change to progressivly loading the image
21632 where available (fixes popfly). We still fallback to file loading
21633 for the JS downloader case for now.
21635 2008-07-09 Larry Ewing <lewing@novell.com>
21637 * runtime.cpp (Surface::motion_notify_callback): don't call
21638 get_pointer when in windowless mode, I don't think we can trust
21641 * runtime.h (class Surface): make widget public so that we can
21642 peek at it in windowless mode.
21644 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
21646 * xaml.cpp: Always do a move after closing a path. Fix DRT test
21647 #138 (even if it was passing too!) for a bad (extra) arc.
21649 2008-07-08 Larry Ewing <lewing@novell.com>
21651 * runtime.cpp, runtime.h: remove a bunch of code rot relating to
21652 temporary cairo surfaces that is no longer used.
21654 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
21656 * shape.cpp: Consider PenLineCap when computing bounds using
21657 cairo. Fix (even if it was passing) some corners in DRT test #7
21659 2008-07-08 Jeffrey Stedfast <fejj@novell.com>
21661 * xaml.h: Reorganized a bit.
21663 2008-07-07 Chris Toshok <toshok@ximian.com>
21665 * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
21666 list if they lack a visual parent (and aren't the toplevel.)
21669 2008-07-07 Larry Ewing <lewing@novell.com>
21671 * shape.cpp (Rectangle::BuildPath): handle some special case
21672 degenerates slightly differently.
21674 Fixes most of test-shape-rectangle-matrix.xaml.
21676 2008-07-07 Larry Ewing <lewing@novell.com>
21678 * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
21679 degenerates in drawing, use the workaround there too.
21681 Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
21683 2008-07-03 Larry Ewing <lewing@novell.com>
21685 * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
21686 rectangle geometry computation. It matches in the sl
21687 implementation now.
21689 * shape.cpp: simplify rectangle and ellipse drawing and bounds so
21690 that they match the sl implementation and deal with degenerate
21691 cases better. Try to avoid setting up a clip rectangle when it
21694 2008-07-07 Chris Toshok <toshok@ximian.com>
21696 [ fixes the media element not showing up in flowers-for-you, bug
21698 * media.h, media.cpp: move Image::use_img_{width,height} and
21699 Image::updating into MediaBase and rename then
21700 use_media_{width,height} and updating_size_from_media.
21701 (MediaElement::OnPropertyChanged) duplicate the
21702 WidthProperty/HeightProperty stuff here (c&p from
21703 Image::OnPropertyChanged - this should probably just be refactored
21704 to MediaBase. will do this later).
21705 (MediaBase::ComputeBounds): we don't need the subclass
21706 ComputeBounds methods. Just put it here, as they share the same
21708 (MediaElement::SetMedia): remove the call to ComputeBounds here,
21709 since the new block of use_media_{width,height} checks will call
21710 UpdateBounds if they need to.
21712 2008-07-07 Fernando Herrera <fherrera@novell.com>
21716 * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
21717 we don't wait for new packets when the downloader has finished.
21718 Also calculate size based on offset + n for mms streams, so the
21719 ASFReader can check Eof based on positions.
21721 2008-07-05 Chris Toshok <toshok@ximian.com>
21723 * dirty.cpp: remove the down_dirty_node_succ and
21724 up_dirty_node_pred code from here. it arguably helped speed up
21725 insertions into the dirty lists, but at the cost of lots of
21726 dangling pointers. we always walk up the tree looking for a
21727 down/up node. works, and is much simpler. and fixes bug #362561.
21729 * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
21730 up_dirty_node_pred code.
21732 2008-07-04 Sebastien Pouliot <sebastien@ximian.com>
21734 * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
21735 when the atchname is invalid.
21737 2008-07-04 Chris Toshok <toshok@ximian.com>
21739 * runtime.cpp (Surface::EmitEventOnList): don't leak the event
21742 2008-07-03 Chris Toshok <toshok@ximian.com>
21744 * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
21745 values need to be initialized in the ctors, not in animation_init.
21747 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
21749 * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
21750 since they are needed for stretching.
21752 2008-07-03 Jeffrey Stedfast <fejj@novell.com>
21754 * text.cpp (TextBlock::Render): Check to see if we need to
21755 calculate layout before painting.
21757 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
21759 * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
21760 Also remove the closing point since it's not needed (but that was
21761 not the problem, just a small memory saving).
21762 [Re-fix bug #391684]
21764 2008-07-02 Jeffrey Stedfast <fejj@novell.com>
21766 * text.h (TextBlock::GetBoundingWidth/Height): Use
21767 GetValueNoDefault() so we don't get 0.0 for the width/height if
21770 Fixes for bug #404858
21772 * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
21774 * layout.cpp: Don't keep track of bbox_width and height anymore,
21775 it was never actually set to anything other than
21776 actual_width/height anyway.
21778 * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
21779 bounding box around the text (this is to aid in debugging text
21780 which may have a transform applied to it).
21782 * text.h (class TextBlock): Removed bbox_width and
21783 bbox_height. These were never anything other than
21784 actual_width/height respectively anyway.
21785 (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
21786 if set, else the ActualWidth.
21787 (TextBlock::GetBoundingHeight): Same.
21789 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
21791 * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
21792 since their callers already do this. Simplify a bit Shape::
21793 InsideObject to check ret only if a Clip is present (instead of
21794 always checking it).
21796 2008-07-02 Chris Toshok <toshok@ximian.com>
21798 * runtime.h, runtime.cpp: get rid of the cursor_func,
21799 invalidate_func, render_func stuff. Instead use 3 virtual
21800 methods: SetCursor(GdkCursor*), Invalidate(Rect), and
21801 ProcessUpdates(). That way the plugin can instantiate a
21802 WindowlessSurface which overrides those methods instead of having
21803 the stupid callback mechanism we had.
21805 2008-07-02 Chris Toshok <toshok@ximian.com>
21807 * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
21808 override the behavior.
21810 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
21812 * moon-path.c: Revert ordering change I made in r105586 to fix
21813 a clipping issue (fillrule bug) as this breaks stroke dash (which
21814 confirm the original behaviour was the correct one).
21815 [Fix most of #404858]
21817 2008-07-01 Jeffrey Stedfast <fejj@novell.com>
21819 Fixes for bug #405514.
21821 * text.cpp (TextBlock::Layout): If the Text property is empty,
21822 default the actualHeight to the font's height.
21823 (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
21824 property changes, we need to set dirty to true (in most cases) so
21825 that the actual width/height values are recalculated.
21827 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
21829 * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect
21830 this change Polyline and Polygon to use Cairo instead of (faster
21831 but less acurate) custom code. In reality PathGeometry (PML) is
21832 much more used than those Poly[line|gon] and (upcoming) caching
21833 negate much of the impact.
21834 * geometry.cpp: Use the more precise (and surviving)
21835 calc_line_bounds function that accept PenLineCap.
21837 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21839 * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
21840 chanegs between null and an actual brush (in either direction),
21841 invalidate the cached path because the shape may need to
21842 recalculate the stroke offsets.
21844 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
21846 * xaml.cpp: Move reading the first point of C|Q beziers into the
21847 loop. Fix quite a few misrendering for http://xmldocs.net/ball
21848 [Partial fix for #404858]
21850 2008-06-30 Chris Toshok <toshok@ximian.com>
21852 * dirty.cpp: add all the ordering smarts to keep the two dirty
21853 lists partially sorted. hopefully this won't be a huge
21856 * uielement.h, uielement.cpp: add 2 new dirty pointers. a "succ"
21857 pointer for the down dirty list, and a "pred" for the up dirty
21860 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21862 * list.cpp (List::InsertBefore): Handle a NULL @before.
21864 2008-06-30 Geoff Norton <gnorton@novell.com>
21866 * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
21867 more sane while we determine how to fix this properly.
21869 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
21871 * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
21873 (Ellipse::ComputeShapeBounds): Same.
21875 2008-06-30 Michael Dominic K. <mdk@mdk.am>
21877 * animation.cpp: Make sure our default KeySplines parameters are correct
21878 to generate a linear dynamics curve as Silverlight. Fixes #404850.
21880 2008-06-30 Fernando Herrera <fherrera@novell.com>
21882 * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
21884 2008-06-30 Fernando Herrera <fherrera@novell.com>
21887 * pipeline.cpp: Implement the packet writer MemoryQueueSource.
21891 * media.cpp: Use MemoryQueueSource for all mms streams
21892 * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
21894 2008-06-29 Chris Toshok <toshok@ximian.com>
21896 * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
21897 child changes, invalidate them here.
21899 * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
21900 subtree invalidate from the zindex processing here.
21902 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21904 * pipeline-ffmpeg.cpp: Add debug spew.
21905 * media.cpp: Remove debug spew.
21907 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21909 * media.cpp, media.h: Add streamed markers to the media element on the
21912 2008-06-28 Geoff Norton <gnorton@novell.com>
21914 * downloader.h: The finished event raises a success condition now
21915 so that we can notify failure on unsuccessful downloads.
21917 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
21919 * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
21920 has stored, now called by the MediaPlayer when seeking. Execute the
21921 'seeking complete' logic on the main thread (marshalling
21922 SeekCallback to the main thread). Always use the thread-safe
21923 AddTickCallSafe instead of AddTickCall, and override
21924 EventSurface::SetSurface to lock/unlock the required locks.
21925 * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
21926 has stored, now called by the MediaPlayer when seeking. Execute the
21927 'seeking complete' logic on the main thread (marshalling
21928 SeekCallback to the main thread), and set the previous_position on
21929 the MediaElement to the seeked-to position when the seek is
21930 finished. Always use the thread-safe AddTickCallSafe instead of
21931 AddTickCall, and override EventSurface::SetSurface to lock/unlock
21932 the required locks.
21933 * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
21934 thread-safe version (AddTickCallSafe) and don't do any locking in
21935 AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
21936 SetSurface can do the proper locking.
21937 * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
21938 comparing to/from pts, MediaPlayer will now set previous_position
21939 correctly when seeking. AdvanceFrame: only check markers if we
21940 advanced or if we're not seeking. SetSurface: add proper locking,
21941 and use AddTickCallSafe where appropiate.
21943 2008-06-27 Larry Ewing <lewing@novell.com>
21945 * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
21946 affects the subtree as well.
21948 2008-06-27 Larry Ewing <lewing@novell.com>
21950 * uielement.cpp (UIElement::OnPropertyChanged): on things that can
21951 potentially be trapped by the Invalidate visibility check we need
21952 to invalidate the whole subtree before we start processing the
21953 dirty lists to avoid ordering issues.
21955 Fixes test/xaml/assorted/rendering-glitches2.html.
21957 2008-06-27 Chris Toshok <toshok@ximian.com>
21959 * panel.cpp (Panel::FrontToBack): add a special case for
21960 non-translucent (but NULL background) panels - we don't render
21963 2008-06-27 Larry Ewing <lewing@novell.com>
21965 * panel.cpp (Panel::FrontToBack): treat opacity specially for
21966 panel since we need the right subtree render region in PreRender.
21968 2008-06-27 Jeffrey Stedfast <fejj@novell.com>
21970 * downloader.cpp (dummy_downloader_create_web_request): Return
21971 NULL to fix a compile warning about control reaching the end of a
21974 2008-06-27 Stephane Delcroix <sdelcroix@novell.com>
21976 * downloader.[h|cpp]: move browserrequest/response from the plugin
21977 as downloaderrequest/response.
21979 2008-06-26 Chris Toshok <toshok@ximian.com>
21981 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
21984 * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
21985 condition that was keeping small surfaces from being cached, so
21986 bubblemark gets a win from this (from ~38 to 70+ fps on my
21988 (Shape::ShiftPosition): if we have a cached surface, set the
21989 device offset to mirror the new bounds x/y.
21991 2008-06-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
21993 * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
21994 dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
21995 Change AddTickCall to take a TickCallHandler (EventObject*)
21996 function pointer and a EventObject * tick_data instead of untyped
21997 function pointer/tick_data.
21999 2008-06-26 Chris Toshok <toshok@ximian.com>
22001 * dependencyobject.h,
22002 dependencyobject.cpp (DependencyProperty::DependencyProperty):
22003 convert the name to downcase prior to registering and prior to
22004 calling g_hash_table_lookup to remove the casecmp overhead from
22005 our key comparisons. store the converted name in DP::hash_key.
22007 * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
22010 * type.cpp: strcase_equal -> g_strcasecmp.
22012 * playlist.cpp (PlaylistParser::OnStartElement): same.
22014 2008-06-26 Jeffrey Stedfast <fejj@novell.com>
22016 * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
22017 logic/compiler warning and at the same time simplified.
22019 * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
22020 thickness into consideration. Fixes bug #400657.
22021 (Ellipse::ComputeShapeBounds): Same.
22023 2008-06-26 Chris Toshok <toshok@ximian.com>
22025 * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
22026 re-sort the children by zindex.
22028 * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
22030 * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
22031 here. just add it to the dirty list.
22033 * transform.h, transform.cpp: move the OnSubPropertyChanged method
22034 to MatrixTransform, so we can notify our listeners with the right
22037 2008-06-26 Chris Toshok <toshok@ximian.com>
22039 * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
22040 need this to deal with sub-dependencyobjects of transforms (in
22041 this case, MatrixTransform's Matrix object.) when you set
22042 properties on these subobjects, we need to update the transform.
22044 2008-06-26 Chris Toshok <toshok@ximian.com>
22046 * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
22047 think it used to be there and was removed by me in a flurry of
22048 propertychanged event fixing way back) to take care of brushes
22049 properly causing the uielement to invalidate when the Brush's
22050 transform/relativetransform changes.
22052 2008-06-26 Sebastien Pouliot <sebastien@ximian.com>
22054 * geometry.h: #ifdef out GeometryFlags until we start using it.
22055 * shape.cpp: Remove unused global variable.
22057 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
22059 * mplayer.cpp: AudioFinished: Check if we still have audio when the
22060 callback is reached. Fixes test-double-stop.html.
22062 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
22064 * mplayer.cpp: When calculating start_time take into account current
22065 position. Fixes test-video-only-seek.html (and fox seeking without
22068 2008-06-25 Jeffrey Stedfast <fejj@novell.com>
22070 * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
22073 2008-06-25 Sebastien Pouliot <sebastien@ximian.com>
22075 * geometry.cpp: Cache bounds, both logical and "physical" for
22076 PathFigure. This reduce the number of time we need to call
22077 cairo_[path|stroke|fill]_extents functions and speed up many
22079 * geometry.h: Add stuff needed for geometry.cpp changes.
22080 * xaml.cpp: Change geometry_from_str to directly create a
22081 moon_path and avoid the PathFigure[Collection] DO. This match
22082 how Silverlight handle Path Markup Language (PML) and reduce
22083 memory requirements when huge PML are used.
22085 2008-06-24 Chris Toshok <toshok@ximian.com>
22087 * shape.cpp (calc_offsets): we don't want to divide by the sin,
22088 because as angle approaches either 0, PI, or PI/2, the sin will
22089 approach 0, and therefore the deltas will grow very, very large.
22090 Turns out multiplying is what we want.
22092 2008-06-24 Larry Ewing <lewing@novell.com>
22094 * runtime.cpp (Surface::Resize): set the width and height properly
22095 in the windowless case, let the widget resize logic handle it
22097 (Surface:render_cb): don't process dirty elements if we are in a
22098 zombie state, just clear the dirty lists and move on. Fixes a
22099 crash we were seeing when calling ForceRender on a zombie plugin.
22101 2008-06-24 Chris Toshok <toshok@ximian.com>
22103 * runtime.cpp: in the switch from function pointer to integer in
22104 the HandleMouseEvent stuff, I didn't catch that C++ apparently
22105 doesn't flag NULL as different from 0. This was causing the
22106 "HandleMouseEvent (NULL" to become effectively become
22107 "HandleMouseEvent (UIElement::DestroyedEvent" which of course
22108 breaks all sorts of things. In bug 401884 it was causing the
22109 namescope to drop the named item from its hashtable, causing the
22110 tattoo needle to not move vertically.
22112 2008-06-23 Chris Toshok <toshok@ximian.com>
22114 * uielement.cpp (UIElement::PreRender): comment from the code is
22117 we need this check because ::PreRender can (and will) be called
22118 for elements with empty regions.
22120 The region passed in here is the redraw region intersected with
22121 the render bounds of a given element. For Panels with no
22122 width/height specified in the xaml, this region will be
22123 empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
22124 calling node if either the panel background or any of the children
22125 intersect the redraw region.) We can't clip to the empty region,
22126 obviously, as it will keep all descendents from drawing to the
22129 2008-06-23 Chris Toshok <toshok@ximian.com>
22131 * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
22132 the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
22133 other, more specialized bounds that also need updating.
22135 * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
22136 to UIElement::ShiftPosition and also update bounds_with_children.
22138 * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
22139 chain up to Canvas::ShiftPosition, and also update render_bounds.
22141 2008-06-23 Chris Toshok <toshok@ximian.com>
22143 * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
22144 between UpdatePosition and UpdateTransform according to the
22145 updatepos=yes/no override.
22147 * runtime.h, runtime.cpp: add updatepos=yes/no override.
22149 2008-06-23 Michael Dominic K. <mdk@mdk.am>
22151 * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
22153 2008-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
22155 * media.cpp: Don't check markers if from > to, no markers will ever be
22156 found in that interval. Also detect forward seeks by checking the
22157 difference between from and to, if difference > 1s, behave as a
22158 seek (and don't emit markers in that interval).
22159 * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
22161 2008-06-20 Jeffrey Stedfast <fejj@novell.com>
22163 * animation.h: Added "Property Accessor" comments and grouped the
22164 property accessors, etc.
22166 * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
22168 (EventObject::AddTickCall): Same.
22170 * dependencyobject.h (EventObject::GetSurface): Don't amke this
22171 virtual, nothing overrides it currently.
22173 2008-06-20 Michael Dominic K. <mdk@mdk.am>
22178 * clock.h: When detaching/reattaching to Surface execute a special
22179 handler on clocks that (in case of animation clocks) removes the update
22180 property handler. This fixes the (regressed some time ago)
22181 StoryboardEnterLeave semantics test.
22183 2008-06-19 Jackson Harper <jackson@ximian.com>
22186 * type-generated.cpp: Make sure the content property is set.
22188 2008-06-19 Larry Ewing <lewing@novell.com>
22190 * uielement.cpp (UIElement::PreRender): work around what appears
22191 to be a bug in the ftb logic by not clipping to the render region.
22193 * clock.cpp (SystemTimeSource::Start): make the timer priority
22194 DEFAULT again since otherwise we can get into starvation
22197 * uielement.cpp (UIElement::PreRender): don't save/restore around
22198 the clip changes, they restrict the group bounds and speed up
22199 opacity related masking substantially. (See bubblemark).
22201 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
22203 * font.cpp (FontFace::GetExtents): Only set face pixel size if the
22204 requested size is not what we already have set.
22205 (FontFace::LoadGlyph): Same.
22206 (FontFace::Kerning): Need to set pixel sizes here or our kerning
22209 2008-06-19 Chris Toshok <toshok@ximian.com>
22211 * canvas.cpp (Canvas::OnSubPropertyChanged): call
22212 ui->UpdatePosition instead of UpdateTransform. Since
22213 UpdateTransform calls UpdateBounds, this should save us a
22214 sometimes costly (in the case of Shape's) trip through
22217 * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
22218 node) and ComputePosition (called from ProcessDownDirtyElements.)
22219 (UIElement::ComputePosition): Apply the inverse absolute transform
22220 to the bounds x/y, compute the new transform, then reapply it to
22221 the bounds x/y to compute our new position.
22222 (UIElement::UpdateTransform): clear the DirtyPosition flag.
22223 (UIElement::UpdatePosition): only add the DirtyPosition flag if
22224 the Dirty*Transform flags aren't already set.
22227 * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
22228 Clip, LocalClip, and Position (only Position is implemented).
22230 * dirty.h: clean up the enum some, and add 3 new passes (only one
22231 of which, DirtyPosition, is implemented).
22233 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
22235 * transform.cpp: Started adding property accessor methods.
22237 * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
22238 (Canvas::[G,S]etTop): Same.
22240 * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
22241 (UIElement::[G,S]etTop): Same.
22243 2008-06-19 Chris Toshok <toshok@ximian.com>
22245 * rect.h: add Get{Top,Bottom}{Left,Right} methods.
22247 * point.h, point.cpp: add Transform method.
22249 2008-06-19 Michael Dominic K. <mdk@mdk.am>
22251 * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
22252 keyframes specified the duration is 0, not Automatic. This fixes the
22253 http://www.etonline.com/silverlight/grammys50/ website.
22255 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
22257 * geometry.cpp: Use the new moon-path functions for ArcSegment
22258 and QuadraticBezierSegment
22259 * moon-path.c: Change some validation to use g_return_if_fail
22261 2008-06-18 Jeffrey Stedfast <fejj@novell.com>
22263 * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
22266 * control.cpp (Control::GetTransformFor): Simplified.
22268 * uielement.cpp (UIElement::SetLeft): Added for setting
22269 Canvas.Left property.
22270 (UIElement::GetLeft): Same.
22271 (UIElement::SetTop): Same.
22272 (UIElement::GetTop): Same.
22274 * canvas.cpp (Canvas::GetTransformFor): Simplified.
22276 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
22278 * shape.cpp: When possible (i.e. if we won't change the bounds
22279 anyway) avoid the second pass inside Shape::ComputeStretchBounds.
22280 This reduce (but does not eliminate) a BIG bottleneck for SL
22281 applications with many path using stretch (e.g. SL world).
22283 2008-06-18 Geoff Norton <gnorton@novell.com>
22285 * media.cpp: The state when Seeking should not be changed to Stopped.
22286 Fixes another test.
22288 2008-06-17 Jeffrey Stedfast <fejj@novell.com>
22290 Partial fix for bug #400657.
22292 * dependencyobject.cpp (DependencyObject::IsValueValid): If the
22293 value is a null dependency object, don't check that the types
22294 match - it doesn't matter.
22296 * color.cpp (color_to_string): New convenience utility function to
22297 aid in debugging. Returns a pointer to a static string buffer, so
22300 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22302 * playlist.cpp, playlist.h: Only unref/null out the media in
22303 PlaylistEntry::Stop if we're a playlist and not if we're a single
22306 2008-06-17 Sebastien Pouliot <sebastien@ximian.com>
22308 * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
22309 can be reused without a PathFigure-derived instance. Refactor
22310 code to expand/realloc paths to reduce duplication.
22312 2008-06-16 Chris Toshok <toshok@ximian.com>
22314 * uielement.cpp (UIElement::OnPropertyChanged): call
22315 Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
22317 (UIElement::OnSubPropertyChanged): same.
22319 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22321 * playlist.cpp: When Merging items only merge duration if the source
22323 * media.cpp: MediaElement::MediaOpened: when setting the media on the
22324 current item in the playlist, make sure we set the media on a
22325 PlaylistEntry, not on a (nested) Playlist.
22327 2008-06-16 Jeffrey Stedfast <fejj@novell.com>
22329 * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
22330 g_error() with g_warning(). There's really nothing else we can do
22332 (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
22333 allocating it again? Maybe some resources have been released since
22334 the ctor was called?
22336 * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
22337 g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
22339 * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
22340 g_warning() and return fail.
22342 2008-06-16 Michael Dominic K. <mdk@mdk.am>
22344 * clock.cpp: Don't do the ExtraRepeat action when seeking.
22346 2008-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22348 * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
22350 * playlist.cpp: When we stop, clear out our media. This fixes an issue
22351 where we didn't correctly download a file if it was stopped after
22352 it was opened, but before fully downloaded, and then restarted.
22354 2008-06-13 Jeffrey Stedfast <fejj@novell.com>
22356 * dependencyobject.cpp (include): stdlib.h for strtol()
22358 Fix for jumping to the last page in PageTurn.
22360 * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
22361 UpdateTotalRenderVisibility() when the clip changes.
22363 2008-06-13 Michael Dominic K. <mdk@mdk.am>
22367 * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
22369 2008-06-13 Michael Dominic K. <mdk@mdk.am>
22375 * moon-curves.h: First version of the new algho for calculating the "y
22376 at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
22377 AnimationMatrix2 test.
22379 2008-06-12 Jackson Harper <jackson@ximian.com>
22381 * xaml.cpp: Remove some cruft.
22382 - Rename Custom to Managed
22383 - We don't need element maps for the namespaces anymore
22384 - Deploy can go into the default list of namespaces.
22386 2008-06-12 Fernando Herrera <fherrera@novell.com>
22388 * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
22389 terminated strings. Also keep any uri paramson the mms Ref.
22391 2008-06-12 Jackson Harper <jackson@ximian.com>
22393 * xaml.cpp: Use the new stuff for creating wrapped types.
22394 - make XamlElementInstance pure virtual.
22396 2008-06-12 Jackson Harper <jackson@ximian.com>
22398 * xaml.cpp: Clean up API for creating wrapped dependency objects.
22400 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
22402 * type.cpp: Fix type verification to not check 2.0 types for 1.0
22405 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
22407 * media.cpp, media.h: Don't AutoPlay playlists which have already been
22408 autoplayed. Make Play/Pause/Stop/Seek async.
22409 * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
22411 2008-06-12 Chris Toshok <toshok@ximian.com>
22413 * control.cpp, control.h, deployment.h, frameworkelement.h,
22414 grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
22415 uielement.h, value.h, xaml.cpp: I was a little too aggressive. we
22416 can't use SL_2_0 in most places in headers (or rather, shouldn't).
22417 It might be a good idea to remove all references to it, but this
22418 at least gets the ms-tests running and passing again --with-mono.
22419 Switch to using SL_2_0 around the #includes in the .cpp files, and
22420 in value.h/type.h just include the 2.0 types.
22422 * usercontrol.h, usercontrol.cpp: split out the code from
22423 control.h, control.cpp here.
22425 * Makefile.am: add usercontrol.[h,cpp]
22427 * typegen/typegen.cs: fix up the header emission.
22429 2008-06-12 Sebastien Pouliot <sebastien@ximian.com>
22431 * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
22432 ComputeBounds to avoid creating/destroying a new cairo context for
22433 each figure (it's now shared). Refactor PathFigure::Build not to scan
22434 the path list twice and rely on moon-path automatic size increase.
22435 Also avoid cairo_fill_extents if the path can't be filled or no fill
22438 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
22440 * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
22441 can't get a surface, nor if the surface is a zombie.
22442 * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
22443 return NULL now, add a null check.
22445 2008-06-11 Jackson Harper <jackson@ximian.com>
22447 * xaml.cpp: Move GetKind to the info. Doesn't make sense for
22448 Instances to have a kind (they can access their kind from their
22451 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
22453 * geometry.cpp: Remove unneeded cairo_save|restore inside Draw
22454 methods (since Shape::Draw already does it) and remove
22455 cairo_set_fill_rule (since Shape::Fill does it).
22457 2008-06-11 Jackson Harper <jackson@ximian.com>
22459 * xaml.cpp: Clean up the namespace map when destroying the parser.
22461 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
22463 * geometry.h: Fix GeometryGround::ComputeBounds so it does
22464 not always returns 0,0,0,0 (from Geometry).
22466 2008-06-11 Geoff Norton <gnorton@novell.com>
22468 * downloader.cpp: Only Abort if we have a surface.
22469 * runtime.cpp: Detach the downloaders when we zombify.
22471 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
22473 * moon-path.c: Reorder ellipse points so the fill rule can be
22474 applied correcly (e.g. filling or clipping).
22476 2008-06-11 Michael Dominic K. <mdk@mdk.am>
22478 * clock.cpp: Fixing seeking on nested storyboards. Fixes
22479 seek-test-nested-storyboard.xaml in assorted and one more
22480 AnimationMatrix2 block. Now only one left to fix...
22482 2008-06-10 Geoff Norton <gnorton@novell.com>
22484 * mms-downloader.cpp: Reset our internal state after seeking so
22485 we can resume the stream in the right place.
22487 2008-06-10 Geoff Norton <gnorton@novell.com>
22489 * mms-downlodaer.cpp: Remove some improperly commited debug code
22491 2008-06-10 Chris Toshok <toshok@ximian.com>
22493 * control.h, control.cpp, deployment.h, uielement.h,
22494 uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
22495 runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
22496 now. I'll be changing that ifdef soon.) Also, mark all 2.0
22497 specific types with the following typegen pragma: /*
22498 @SilverlightVersion="2" */ so that the generated files contain the
22499 proper ifdefs as well.
22501 * type-generated.cpp, type.h, value.h: resync with new ifdefs.
22503 2008-06-10 Jackson Harper <jackson@ximian.com>
22505 * dependencyobject.cpp: Add todo for Name validation.
22507 2008-06-11 Fernando Herrera <fherrera@novell.com>
22509 * xaml.cpp: Accept numbers and strings representing numbers as
22510 values for BOOL properties. Also accept "true" and "false" case
22512 * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
22513 ending uris, so just check for "MSWMExt=.asf".
22514 Fixes hsn.tv, bug #362328.
22516 2008-06-10 Jackson Harper <jackson@ximian.com>
22518 * xaml.cpp: ContentProperty should be on the ElementInfo not the
22519 ElementInstance, since you can only have one content property per
22522 2008-06-10 Geoff Norton <gnorton@novell.com>
22524 * mms-downloader.cpp: Fix some looping logic when seeking (partially
22525 fixed). Fix a typo when enumerating the streams array to not exceed
22528 2008-06-10 Jackson Harper <jackson@ximian.com>
22530 * xaml.cpp: Remove default prefix override check. This must have
22531 only been in one of the early versions of SL because I can't get
22532 SL to do it anymore. This helps fix video page turn.
22534 2008-06-10 Jackson Harper <jackson@ximian.com>
22536 * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
22538 2008-06-10 Chris Toshok <toshok@ximian.com>
22540 * dependencyobject.h, dependencyobject.cpp: split the Emit()
22541 machinery up into 3 methods. StartEmit, DoEmit, and FinishEmit.
22542 StartEmit returns a context object passed to the other two
22545 * runtime.h, runtime.cpp: use the new
22546 EventObject::{Start,Do,Finish}Emit methods to make event bubbling
22547 more transactional - any changes made to the listener list for the
22548 event we're bubbling up, for any element in our input list, are
22549 delayed until after the event has propagated. Fixes our test id
22550 191 (test-bubbling.html) as well as bug #351568.
22552 2008-06-10 Sebastien Pouliot <sebastien@ximian.com>
22554 * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
22555 its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
22556 reuse it's physical bounds for logical instead of computing it
22559 2008-06-10 Michael Dominic K. <mdk@mdk.am>
22564 * clock.h: Replacing CreateClock with AllocateClock implementation and
22565 making sure the latter is called for Storyboards. That fixes the nested
22566 storyboards inside other storyboards...
22567 test-animation-nested-storyboard.xaml and one step more for
22570 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22572 * dependencyobject.h: Another greppable comment.
22574 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22576 * dependencyobject.cpp: Add comment to assert which shows up while
22579 2008-06-06 Geoff Norton <gnorton@novell.com>
22581 * file-downloader.h: Fix a bug between argument sending and class
22582 variables that was causing us to free and strdup the free'd pointer.
22584 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
22586 * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
22589 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
22591 * src.mdp: Updated.
22593 2008-06-06 Jeffrey Stedfast <fejj@novell.com>
22595 * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
22596 members change order (like it did recently).
22597 (wrap_dependency_object): Get rid of unused variables.
22599 * media.cpp (Image): Made bools share a single int.
22601 2008-06-06 Jackson Harper <jackson@ximian.com>
22603 * xaml.cpp: Use the Type system for looking up elements, make
22604 things a little more OOP so we can easily add some of the 2.0
22605 features. Note: This is going to break x:Code and deployment
22608 2008-06-05 Geoff Norton <gnorton@novell.com>
22610 * downloader.cpp, downloader.h: More refactoring to hide the zip related
22611 details in the FileDownloader. NOTE: The exposure of the file downloader
22612 to the Text side is ugly and should be cleaned up.
22613 * text.cpp: Access obfuscated font details thru the FileDownloader API.
22614 * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
22615 the filename thru the downlodaer api.
22616 * downloader.cpp: No longer leak InternalDownloaders.
22618 2008-06-05 Geoff Norton <gnorton@novell.com>
22620 * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
22621 the $P packet pair, and implement and initial algorithm to do proper
22622 bandwidth stream selection.
22624 2008-06-05 Geoff Norton <gnorton@novell.com>
22626 * downloader.cpp: Remove some left over unused variables, and the
22627 is_valid_mms_type inline.
22629 2008-06-05 Geoff Norton <gnorton@novell.com>
22631 * Makefile.am: Add file-downloader and mms-downloader to the build.
22632 * file-downloader.(cpp|h): This class is a implementation of the new
22633 InternalDownloader class utilized by the downloader to differentiate
22634 between MMS and regular requests. We should move the zip logic here.
22635 * mms-downloader.(cpp|h): This class is the MMS implementation of the
22636 InternalDownloader class.
22637 * internal-downloader.h: Route callbacks from the plugin thru this class
22638 to their appropriate file (NPStream) / MMS based implementations.
22639 * downloader.cpp: Update the API to call the InternalDownloader based
22640 representation instead of large if (mms) branches.
22642 2008-06-05 Geoff Norton <gnorton@novell.com>
22644 * downloader.cpp, downloader.h: Initial implementation of MMS inside
22645 libmoon. The API has been extended to register two additional callbacks
22646 to set HTTP headers, and the HTTP body.
22648 2008-06-05 Michael Dominic K. <mdk@mdk.am>
22650 * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
22651 --with-compatibility-bugs mode. It looks like the parsing is fine. The
22652 bug is now "implemented" in clock.cpp.
22654 2008-06-05 Michael Dominic K. <mdk@mdk.am>
22656 * clock.cpp: In ComputeNewTime when we're going over our duration time
22657 and we're AutoReversed, check actually how big the diff is cause it
22658 might be that we need to "wrap around self" and switch to forward time
22659 direction anyways (such is the case with seeking).
22661 In other words, allow to seek into particular interation of
22662 RepeatBehavior="XXXx", not only the first one. Fixes one more
22663 AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
22665 This prolly needs a littlbe bit more work still, similiar mechanism
22666 needs to be present in DoRepeat etc.
22668 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
22670 * stylus.cpp: fixing a bug. stupid me.
22672 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
22674 * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
22675 ExtendTo (double, double) methods.
22677 * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
22678 intersection of bounds and StylusPointCollection::GetBounds in HitTest
22679 to avoid checking for stroke intersection in most of the cases. Speed
22680 up erasing in inkJournal.
22682 2008-06-04 Michael Dominic K. <mdk@mdk.am>
22684 * clock.cpp: Interesting -- looks like in SL the timespan-based
22685 RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
22686 0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
22687 Anyways, implementing this and fixing two more blocks in
22690 2008-06-04 Michael Dominic K. <mdk@mdk.am>
22692 * clock.cpp: Slightly reworking the seek offsett calculations to include
22693 the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
22694 more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
22697 2008-06-04 Michael Dominic K. <mdk@mdk.am>
22699 * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
22700 test-seeking-speed-ratio.xaml from assorted tests and one more block in
22701 the AnimationMatrix2 test.
22703 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
22705 * control.cpp (user_control_new): %p does what %x was trying to do
22706 in this case, but without compile warnings :)
22708 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
22710 Glyphs rendering optimization.
22712 * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
22713 instead of re-looping this logic again in Glyphs::Render().
22714 (Glyphs::Render): Just blit the path.
22716 2008-06-03 Chris Toshok <toshok@ximian.com>
22718 * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
22719 a bunch and remove all the redundant checks.
22721 (DependencyObject::MergeTemporaryNameScopes): merge both DO and
22722 Collection versions into the same method to reduce code
22725 * dependencyobject.h: no need to provide multiple overloads for
22726 MergeTemporaryNameScopes.
22728 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
22730 Text rendering optimization via reduction of font loading.
22732 * font.cpp (FontFace): A new abstraction for FT_Face which is
22733 meant to prevent Moonlight from ahving to load the same font face
22734 multiple times just because the FontSize attributes don't match.
22735 (TextFont): Greatly simplified this class by using FontFace.
22737 2008-06-02 Jackson Harper <jackson@ximian.com>
22739 * xaml.cpp: Make sure we don't try to look up Content Properties
22740 on anything but elments. Property elements are given the
22741 XamlElementInfo of their parent so GetContentProperty on a
22742 PROPERTY element will return the parent's content property.
22744 2008-06-02 Michael Dominic K. <mdk@mdk.am>
22746 * clock.cpp: If we have duration-based RepeatBehavior set the
22747 repeat_count to 1 in bug-mode (--with-compatibility-bugs).
22749 2008-06-02 Michael Dominic K. <mdk@mdk.am>
22751 * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
22754 * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
22755 RepeatBehavior=0:0:0.
22757 2008-06-02 Michael Dominic K. <mdk@mdk.am>
22759 * clock.cpp: Even more timeline validation rules.
22761 2008-06-02 Sebastien Pouliot <sebastien@ximian.com>
22763 * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
22764 by 64.0 since this makes it clear why we're doing it.
22766 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22768 * clock.cpp: Don't validate animations that have Duration of "00:00:00"
22769 and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
22772 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22774 * xaml.cpp: Adding a compatibility option
22775 (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
22776 RepeatBehavior bug.
22778 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22780 * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
22781 protection against the desync's coming from integers (TimeSpan) being
22782 multiplied by floating values (SpeedRatio). Better to be non-precise
22783 forward than backward.
22785 2008-05-30 Michael Dominic K. <mdk@mdk.am>
22787 * clock.cpp: The initial ticking difference needs to be multiplied by
22788 the SpeedRatio as well. This fixes few timing desyncs. Fixes
22789 clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
22790 block from the AnimationMatrix2.
22792 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
22794 * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
22795 you set an Image's Source property to an empty string (or null),
22796 it stops rendering the image.
22798 2008-05-29 Stephane Delcroix <sdelcroix@novell.com>
22800 * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
22802 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
22804 * layout.cpp|h (TextRun::IsUnderlined): Replacement for
22805 TextLayout::IsUnderline().
22806 (TextLayout::IsUnderline): Removed.
22808 * font.h (enum TextDecorations): Add a comment explaining that
22809 this is meant to be used as bit flags and not a normal
22812 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22814 * font.h: Revert TextWrapping change as it regress DRT tests
22815 (it's possible that the value were right, but did not match
22816 the managed value used by Silverlight 1.1).
22818 2008-05-29 Jackson Harper <jackson@ximian.com>
22820 * type.cpp: INVALID types don't have content properties.
22821 * dependencyobject.h: Content properties are stored on the Type so
22822 we don't need to store them here.
22823 * xaml.cpp: Get content properties from the Type system instead of
22824 the parser's internal type map.
22825 - We don't need to do any special handling in the start_element
22826 handler for content properties anymore.
22827 * control.cpp|h: We don't need to expose the content property
22829 - Mark the content property for controls.
22831 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22833 * font.h: Fix enum values for TextWrapping
22834 * layout.cpp: Fix regression (in earlier commit) for wrapping.
22836 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22838 * debug.cpp: Fix an invalid read issue found with valgrind.
22840 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
22842 * layout.h|cpp: Handle invalid values for TextDecorations and
22843 TextWrapping like Silverlight does.
22845 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22847 * runtime.cpp: When setting the background color delete any previoys
22850 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22852 * uielement.cpp: Fix minor leak.
22854 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
22856 * src.mdp: Updated.
22858 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22860 * http-streaming.cpp: Handle quoted feature strings.
22862 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22864 * downloader.cpp: Null out request_position in the ctor.
22866 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22868 * clock.cpp: Reverting the change that invalidates the timelines which
22869 have 00:00:00 duration. It is actually supported by SL.
22871 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22873 * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
22874 Multiply always instead of recursing down into properties.
22876 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22878 * animation.cpp: If "To" and "By" are not specified use the
22879 defaultOriginValue always instead of "start" (which might be "From").
22880 Fixes the test-animation-only-from.xaml and the green block in
22883 2008-05-28 Michael Dominic K. <mdk@mdk.am>
22885 * clock.cpp: When Validating the timeline, if RepeatBehavior is
22886 incorrect make it 1.0 instead of marking the timeline as invalid.
22888 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22890 * downloader.cpp: Fix typo.
22892 2008-05-28 Sebastien Pouliot <sebastien@ximian.com>
22894 * enums.c: Fix None value in style_simulations_map and remove
22895 unneeded one (they exists only in WPF but SL parser does not like
22897 * font.cpp|h: Fix FontStyle and FontWeigth properties when the
22898 supplied value are invalid. Add new constants specific to SL.
22899 * text.h: Add simulation_none. Share an integer between all bool
22901 * text.cpp: Invalid values for StyleSimulation does not render
22903 * runtime.cpp: Invalid MouseCursor values hides the cursor.
22905 2008-05-27 Jeffrey Stedfast <fejj@novell.com>
22907 Fixes the Legend (Space Invaders) demo without breaking
22908 storyboard_EnterLeaveSemantics.htm.
22910 * clock.cpp|h (Clock::Completed): New virtual method which gets
22911 called when a clock completes.
22912 (Clock::ComputeNewTime): If a clock completes (has no more
22913 repeats, etc) then call ::Complete().
22914 (ClockGroup::ClockGroup): Changed the name of emitted_complete to
22915 emit_completed which has also changed the meaning a bit.
22916 (ClockGroup::Begin): Updated.
22917 (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
22918 then emit the Completed event and reset emit_completed back to
22919 false so we don't re-emit.
22920 (ClockGroup::Completed): Set emit_completed to true.
22922 2008-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
22924 * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
22925 DownloaderComplete only emit DownloadProgressChangedEvent if we
22928 2008-05-27 Michael Dominic K. <mdk@mdk.am>
22930 * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
22931 Silverlight 1.0/2.0 situation.
22933 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22935 * clock.cpp: Don't validate timelines that have specified duration of
22936 00:00:00. Fixes the test-animation-zero-duration test.xaml.
22938 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22941 * clock.h: When Validating the Timeline also make sure that the
22942 RepeatBehavior is correct, otherwise don't start the anim. Fixes the
22943 test-animation-zero-repeat-behavior test and brings us closer with
22944 AnimationMatrix2 test.
22946 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22948 * clock.cpp: When Validating TimelineGroup don't forget to call parent's
22949 base validation method.
22951 2008-05-26 Michael Dominic K. <mdk@mdk.am>
22953 * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
22954 SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
22955 test-aniamtion-repeat-behavior.xaml test.
22957 2008-05-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
22959 * src.mdp: Updated.
22961 2008-05-23 Sebastien Pouliot <sebastien@ximian.com>
22963 * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
22964 cairo_save/cairo_restore since we don't use the context.
22966 2008-05-23 Stephane Delcroix <sdelcroix@novell.com>
22968 * dependencyobject.[h|cpp]: merge namescopes on SetValue.
22970 2008-05-23 Jeffrey Stedfast <fejj@novell.com>
22972 * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
22974 * text.cpp (Glyphs::Layout): Reverted previous commit and go back
22976 (Glyphs::Render): Same.
22978 2008-05-22 Chris Toshok <toshok@ximian.com>
22980 * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
22981 code. Only include the +2 to each side if the outline color is
22983 (Stroke::AddStylusPointToBounds): same.
22984 (Stroke::OnPropertyChanged): new method. we need to recompute the
22985 bounds if our DrawingAttributes change.
22986 (Stroke::OnSubPropertyChanged): same, if width/height/online-color
22987 of the drawing attributes change.
22989 2008-05-22 Sebastien Pouliot <sebastien@ximian.com>
22991 * brush.cpp: Fix defaults when wrong values are being used for
22992 enumerations from Javascript.
22993 [Fix part of #340799]
22995 2008-05-22 Jackson Harper <jackson@ximian.com>
22997 * dependencyobject.cpp: Only merge temp namescopes.
22999 2008-05-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
23001 * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
23002 surrounding event emission with ref/unref, set a flag specifying
23003 that we're doing event emission, and catch unrefs which would cause
23004 object destruction replacing them with a delayed unref.
23006 2008-05-21 Chris Toshok <toshok@ximian.com>
23008 * collection.cpp (Collection::Add): remove the check for AddToList
23009 returning -1. It never will. Also, call SetSurface() on the new
23010 child *before* we create the Collection::Node for it, so we can
23011 tell (in SetSurface) if it's being added individually to the
23012 surface, or as part of a subtree. This is required to fix
23013 storyboard_EnterLeaveSemantics.
23015 * animation.cpp (Storyboard::SetSurface): resume the clock when
23016 we're reattached to the surface, but *only* if we're being added
23017 as part of a subtree (that is, we already have a logical parent
23018 when we hit this method.)
23020 * clock.cpp (Clock::Begin): revert the previous
23021 change (has_started needs to be initialized to false). Required
23022 to fix storyboard_EnterLeaveSemantics.htm. We'll need to figure
23023 out another way to fix the site (or a better way that fixes one
23024 without breaking the other.)
23026 2008-05-21 Jeffrey Stedfast <fejj@novell.com>
23028 * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
23029 hard-coding the EM units ourselves.
23030 (Glyphs::Render): Same.
23032 * font.cpp (TextFont::PixelsPerEM): New convenience function.
23034 * clock.cpp (Clock::Begin): Init has_started to true. Fixes
23035 http://www.tek.co.jp/Legend
23037 * animation.cpp (Storyboard::storyboard_completed): Merged
23038 teardown_clockgroup() and invoke_completed() into a single
23039 callback. Also makes it so that we don't have to remove 2
23040 CompletedEvent handlers (which we were not doing properly afaict
23041 in Storyboard::Stop).
23042 (Storyboard::Stop): After unregistering the CompletedEvent handler
23043 and stopping the root_clock, tear down the clock group.
23045 2008-05-21 Larry Ewing <lewing@novell.com>
23047 * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
23048 ellipses a little better.
23049 (Shape::ComputeStretchBounds): modify the needs_clip logic a
23050 little to catch the degenerate ellipse cases we were running into.
23052 Fixes test-shape-ellipse-stroke*.xaml.
23054 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23056 * clock.cpp: Include the offsett coming from the BeginTime in the
23057 seek_time calculations. Fixes seek-test-begin-time and
23058 seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
23060 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23062 * clock.cpp: Actually do set the seek_time before using it.
23064 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23066 * clock.cpp: When seeking ClockGroup, don't seek children as weel
23067 (results in cumulative behavior).
23069 2008-05-21 Sebastien Pouliot <sebastien@ximian.com>
23071 * font.cpp: (TextFont::Path) Avoid expensive save of cairo
23072 context since only the transform is changed (current point
23073 location is not part of the context).
23075 2008-05-20 Larry Ewing <lewing@novell.com>
23077 * runtime.cpp (Surface::motion_notify_callback): always return
23078 true in the windowed motion handler otherwise we something steals
23079 mouse events from us.
23081 Fixes most of MouseInput.htm
23083 2008-05-20 Michael Dominic K. <mdk@mdk.am>
23085 * clock.cpp: Fixing a problem where timeline with BeginTime set do not
23086 respond at all to Seek. Brings us closer with AnimationMatrix2.
23088 2008-05-19 Jackson Harper <jackson@ximian.com>
23090 * xaml.cpp: Only do the type wrapping if we are dealing with
23091 collection types, otherwise we just ignore the property decl.
23093 2008-05-19 Jackson Harper <jackson@ximian.com>
23095 * xaml.cpp: When we wrap a property we need to ignore the property
23096 element so that the children get added to the wrapped object
23098 * dependencyobject.cpp: We also need to merge the collection's
23099 namescope because collections can be created with their own temp
23100 namescope using createFromXaml.
23102 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23107 * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
23110 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23113 * animation.h: Adding an implementation for ExtraRepeatHandler to
23114 AnimationClock that fetches target value and sets it on
23115 AnimationStorage. Fixes clock37.xaml test.
23117 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23120 * animation.h: Adding helper methods to get target value out of the
23121 given AnimationTimeline. We're still missing implementations for
23122 keyframe-based anims. Coming soon.
23124 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23127 * animation.h: Adding two helper methods to AnimationStorage:
23128 GetStopValue (get's current base or (if set) stop value) and
23129 UpdatePropertyWithValue to manually force prop to a given state.
23131 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23134 * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
23135 repeat. By default does nothing.
23137 2008-05-19 Jackson Harper <jackson@ximian.com>
23139 * xaml.cpp: When createFromXaml ('<some property>...</property>')
23140 is called, we need to create and return an object that represents
23141 that property. ie createFromXaml ('<Canvas.Triggers>...); should
23142 return a ResourceDictionary object.
23144 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23146 * downloader.cpp: Fix warnings.
23148 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23150 * clock.cpp: Added comment.
23152 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23154 * runtime.cpp: Destroy EventObject::objects_alive upon runtime
23157 2008-05-16 Miguel de Icaza <miguel@novell.com>
23159 * dependencyobject.h (DependencyObject::GetContentProperty):
23160 returns a DependencyProperty that is the target for the content of
23161 a XAML content assignment.
23163 * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
23164 Class attribute as the object has already been created.
23166 (start_element): Add support for the ContentPropertyAttribute on
23167 DependencyObjects to the XAML parser. This is very primitive
23168 support at this point, and does not support collections, or type
23169 conversions as specified on the docs.
23171 * control.cpp (Control::SetContent): Refactor setting the
23172 real_object into its own routine. Currently takes a Surface
23173 parameter, not clear that this is even needed, but kept for
23174 compatibility with the old code.
23176 (UserControl::OnPropertyChanged): Hook up setting the Content
23179 * runtime.cpp (Surface::Attach): Let the widget be UIElement.
23181 2008-05-16 Larry Ewing <lewing@novell.com>
23183 * shape.cpp: draw ellipses with no width/height specified as the
23186 Fixes StretchAndShapes.xaml.
23188 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23190 * media.cpp: Abort the downloader when we emit MediaFailed, and always
23191 emit a DownloadProgressChangedEvent with 1.0 when we're finished
23192 downloading (we won't get any writes if the file has already been
23193 downloaded and mozilla just gives us the filename).
23195 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23197 * src.mdp: Updated.
23199 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23201 * downloader.cpp: Don't emit any events if we don't have a surface. Add
23202 warnings to Send(Internal) when we have no surface (the plugin is
23203 already checking for it, so if the warning is printed we're doing
23204 something else wrong).
23205 * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
23206 create, and when the toplevel canvas changes or the surface is
23207 destroyed clear the downloader's surface pointer.
23209 2008-05-16 Jeffrey Stedfast <fejj@novell.com>
23211 * downloader.cpp (Downloader::Abort): Set download progress to 0.
23213 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23215 * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
23216 NotifySize, mozilla calls NotifySize for every write.
23218 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23220 * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
23222 2008-05-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
23224 * playlist.cpp: If we're stopping a playlist, reopen the first entry.
23225 * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
23226 so that Playlist can call them.
23228 2008-05-15 Larry Ewing <lewing@novell.com>
23230 * runtime.cpp (Surface::button_press_callback): stop firefox from
23231 stealing our focus in the widget case by always returning true on
23232 button press events. There may be a better way to handle this by
23233 only returning true if the press lands on and element but this at
23234 least improves the situation.
23236 Fixes FullScreenKey.htm.
23238 2008-05-15 Michael Dominic K. <mdk@mdk.am>
23240 * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
23241 Filling state, this makes the idle optimization cover all the cases. Big
23242 perf boost expected.
23244 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
23246 Fix for tests/xaml/test-directory-in-zip.html
23248 * media.cpp (Image::Image): Initialize some new state variables to
23249 keep track of whether or not the FrameworkElement::Width and
23250 Height values are ever manually set.
23251 (Image::DownloaderComplete): Properly set the Width/Height
23252 property values based on whether a particular Width/Height have
23253 been requested. Use the image's native width/height if not.
23254 (Image::OnPropertyChanged): Listen for changes to Width/Height
23257 2008-05-14 Larry Ewing <lewing@novell.com>
23259 * src/uielement.cpp (UIElement::PostRender): clear any existing
23260 paths when rendering the bounds rectangle.
23262 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
23264 * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
23265 of the more complex GetValue API.
23267 * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
23268 error, return -1 (since this is an int32 return value, not bool).
23270 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23272 * media.cpp, media.h: Added MediaElement::IsLive, and move
23273 initialization of this field to before our MediaPlayer is opened.
23274 * mplayer.cpp, mplayer.h: For live sources the first frame might not
23275 come with pts = 0, so store that pts so that later we can correctly
23276 calculate how much we've actually played.
23278 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23280 * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
23281 * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
23282 and skip entries with zero duration.
23284 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23286 * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
23287 the read lock if don't have a surface or timemanager.
23289 2008-05-14 Michael Dominic K. <mdk@mdk.am>
23291 * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
23292 children) on DoRepeat (). Fixes a small regression in clock21.xaml
23293 introduced with last commit.
23295 2008-05-14 Michael Dominic K. <mdk@mdk.am>
23298 * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
23299 it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
23301 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
23303 * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
23304 crashes when javascript removes the plugin in an eventhandler.
23306 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
23308 * media.cpp (MediaElement::DownloaderFailed): Make this more
23311 2008-05-13 Fernando Herrera <fherrera@novell.com>
23313 * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
23315 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
23317 * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
23318 corruption of the source.* variables by creating local references
23319 to them and setting source.* to NULL before calling
23320 SetSourceInternal().
23322 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
23324 * clock.cpp, clock.h: Remove InvokeOnMainThread.
23325 * dependencyobject.cpp, dependencyobject.h: EventObject: added
23326 AddTickCall. Requred when adding ticks from other than the
23328 * downloader.cpp: Send: use a TimeManager to add the timeout.
23329 * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
23330 TimeManager::InvokeOnMainThread anymore, add the timeouts using a
23331 TimeManager instance.
23333 2008-05-12 Jeffrey Stedfast <fejj@novell.com>
23335 * list.cpp (List::List): Init length to 0.
23336 (List::Clear): Reset length to 0.
23337 (List::Append): length++
23338 (List::Prepend): length++
23339 (List::Insert): length++
23340 (List::InsertBefore): length++
23341 (List::Unlink): length--
23342 (List::Length): Fixed to be O(0) instead of O(n)
23344 * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
23345 instead of comparing List::Length() to 0.
23346 (Stroke::HitTest): Same.
23348 2008-05-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
23350 * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
23351 prevents us from emitting the event again as a consequence of what
23352 any of the event handlers do.
23354 2008-05-12 Michael Dominic K. <mdk@mdk.am>
23357 * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
23359 2008-05-12 Michael Dominic K. <mdk@mdk.am>
23363 * dependencyobject.cpp:
23364 * dependencyobject.h: Float the AnimationStorage only when it's the
23367 2008-05-12 Michael Dominic K. <mdk@mdk.am>
23370 * animation.h: Introduce floating state for animation storage that has
23371 it's clock destroyed but it hasn't been stopped before. We need to keep the
23372 animation storage (reffed from the DependencyProperty hash) around to be
23373 able to get proper value for the next (continous) Storyboard on same
23374 property. Fixes #383879 and #375275.
23376 2008-05-09 Geoff Norton <gnorton@novell.com>
23378 * mplayer.cpp, pipeline.cpp, pipeline.h: When iterating streams
23379 ensure that we select the stream with the highest available bit
23380 rate, opposed to the first stream that we come across.
23382 2008-05-09 Jeffrey Stedfast <fejj@novell.com>
23384 * dependencyobject.cpp (DependencyObject::FindName): Don't need
23387 * namescope.cpp (NameScope::FindName): Simplify.
23389 2008-05-08 Larry Ewing <lewing@novell.com>
23391 * shape.cpp: silence some warnings.
23393 2008-05-08 Larry Ewing <lewing@novell.com>
23395 * shape.h: remove ClipOnWidthAndHeight method, replace with
23396 needs_clip variable.
23398 * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
23399 the actual size of the object before and after the stretch and the
23402 Speeds up Sprawl and a lot of other applications that use stretch
23405 2008-05-08 Larry Ewing <lewing@novell.com>
23407 * runtime.cpp (Surface::expose_to_drawable): fill the background
23408 instead of painting and don't create the clip until the rendering
23410 2008-05-08 Miguel de Icaza <miguel@novell.com>
23412 * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
23413 existing DependencyObject with the contents of a XAML string.
23415 Needed for Silverlight 2.0 support, for the new model:
23416 create object then do LoadComponent on it.
23418 2008-05-08 Sebastien Pouliot <sebastien@ximian.com>
23420 * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
23423 2008-05-07 Jeffrey Stedfast <fejj@novell.com>
23425 * font.cpp: Removed old layout code.
23426 (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
23427 conversion macros to make understanding the code easier. Also,
23428 added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
23429 of broken fixed-width CJK fonts.
23431 * clock.cpp (TimeManager::Stop): Added for convenience.
23432 (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
23433 can make sure it is init'd properly via SetTimerFrequency() before
23436 * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
23437 not it's source's Start(). We need things like frequency to be
23438 setup and other values to be initialized properly.
23439 (Surface::Attach): After calling canvas->OnLoaded(), check that we
23440 are not zombied - if we are, return.
23442 2008-05-07 Larry Ewing <lewing@novell.com>
23444 * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
23445 objects that the surface is undead.
23447 2008-05-06 Jeffrey Stedfast <fejj@novell.com>
23449 * animation.cpp (animation_shutdown): Renamed from
23450 animation_destroy().
23452 * text.cpp (text_shutdown): Renamed from text_destroy().
23454 * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
23455 include glib.h and use g_timeout_add() instead.
23456 (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
23457 not -1 (the timeout ids are uint, not int).
23458 (SystemTimeSource::SetTimerFrequency): Updated.
23459 (SystemTimeSource::Start): Updated.
23460 (SystemTimeSource::Stop): Updated.
23462 * list.cpp (List::Remove): Don't need to search for the node, we
23463 already have a pointer to it.
23465 2008-05-07 Larry Ewing <lewing@novell.com>
23467 * runtime.cpp (Surface::Resize): handle a resize in windowless mode
23470 Fixes part of windowless resizing.
23472 2008-05-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
23474 * media.cpp: Handle the rtsp protocol too.
23475 * playlist.cpp, playlist.h: Store base and source_name as Uris.
23476 Implement GetFullSourceName better, and do some uri validation.
23477 * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
23478 disables canonicalization of trailing directory separators since
23479 asx playlists may treat urls differently depending on the presence
23480 or absence of any trailing directory separators. Added Clone ().
23482 2008-05-06 Michael Dominic K. <mdk@mdk.am>
23485 * animation.h: When attaching new animation storage and previous storage
23486 exist, flag it as non-resetable (meaning that the storage will never
23487 reset animated property to base/stop value). This fixes the
23488 storyboard-stopping-two.html test.
23490 2008-05-06 Michael Dominic K. <mdk@mdk.am>
23492 * dependencyobject.cpp:
23493 * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
23494 returns the previously attached AnimationStorage.
23497 * animation.h: When attaching new animation storage try to inherit the
23498 resetValue from the previously attached storage. Reset value is the
23499 value that we reset to when storyboard is stopped (originally it always
23500 used to be the base value of the current AnimationStorage).
23502 This replicates the bahavior of SL where starting a new (second)
23503 storyboard on a property renders the prev storyboard useless
23504 (non updating the prop) but keeps it's "starting value" for storyboard
23505 reset. In other words we can say that starting a new storyboard on a
23506 prop makes this new storyboard a "continuation" of the prev storyboard.
23508 2008-05-05 Larry Ewing <lewing@novell.com>
23510 * runtime.cpp (Surface::render_cb): only call ForceRender if we
23513 2008-05-05 Larry Ewing <lewing@novell.com>
23515 * runtime.cpp: update the (almost unused) frame count where it can
23516 get hit in windowless. Clear existing paths before rendering the
23519 Minor cleanups to help with debugging the expose regions.
23521 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
23523 * clock.cpp (TimeManager::Shutdown): Renamed from
23524 TimeManager::Stop() and also updated to remove all registered
23527 * runtime.cpp (Surface): We no longer keep track of signal ids, we
23528 simply remove all signals on the widgets with 'this' as the user
23531 * clock.cpp (TimeManager::Stop): Added. New method to stop the
23534 * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
23535 emission of timeout events.
23537 2008-05-05 Michael Dominic K. <mdk@mdk.am>
23539 * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
23542 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
23544 * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
23545 playing playlists, we only emit MediaEnded if we're playing the
23546 last entry in the playlist. Call Playlist::OnEntryEnded manually
23547 instead of letting the playlist rely on the MediaEnded event, since
23548 the MediaEnded event isn't raised for all entries. Playlist: Added
23549 IsCurrentEntryLastEntry.
23551 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
23553 * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
23554 until the pipeline got all the data it was waiting for.
23556 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
23558 * media.cpp, media.h: Add an EmitMediaOpened method and emit
23559 MediaOpened somewhat more aggressively, but only once.
23561 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
23563 * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
23564 this->height for the brush size - fixes TextTransforms.xaml once
23567 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
23569 * media.cpp: Don't emit any BufferingProgressChanged events in
23572 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
23574 * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
23575 ffmpeg won't decode any wma audio.
23577 2008-05-05 Stephane Delcroix <sdelcroix@novell.com>
23579 * shape.cpp: draw the line caps with the stretch_transform matrix.
23580 Finetune the stretch computation again.
23582 2008-05-05 Miguel de Icaza <miguel@novell.com>
23584 * src/control.cpp: Add a skeleton UserControl, to get a bit
23585 further on the loading of a Silverlight 2 application.
23587 See the TODO, there are still many limitations.
23589 2008-05-04 Larry Ewing <lewing@novell.com>
23591 * runtime.cpp: restrict invalidations to the active windowless
23594 Fixes massive drawing issues on http://my.liveatedu.com/ where
23595 were creating invalidations with a negative coords.
23597 2008-05-04 Miguel de Icaza <miguel@novell.com>
23599 * xap.cpp: Expose xap_unpack, include when Mono runtime is
23602 * deployment.cpp: Small fixups.
23604 * xaml.cpp (deploy_namespace): New namespace used to parse
23605 AppManifest.xaml files that start with a <Deployment> tag on the
23606 http://schemas.microsoft.com/client/2007/deployment namespace.
23608 (xaml_init): Register the deployment classes.
23610 * type.cpp (type_is_dependency_object): Add new helper method
23611 to determine if a Kind is a DEPENDENCYOBJECT, the list is no
23612 longer separated in value-types and DependencyObjects, so its not
23613 possible to do a fast lookup from managed code.
23615 2008-05-04 Chris Toshok <toshok@ximian.com>
23617 [ fixes #361906, while simultaneously keeping halo3,
23618 ControlLife.htm, and ControlState.htm happy ]
23620 * runtime.h, runtime.cpp, type-generated.cpp: move back to the
23621 LoadEvent instead of the broken Attaching event, reverting
23624 * panel.h, panel.cpp: add a "emitting_loaded" guard around the
23625 body of OnLoaded so we don't end up re-entering this method.
23626 Also, revert r102196 as the ordering of parent-to-child was
23627 correct originally, there were just other ordering constraints we
23630 * control.h, control.cpp: same.
23632 * dependencyobject.h, dependencyobject.cpp: add a count field to
23633 EventClosure so we can support the "only_unemitted" arg in
23634 EventObject::Emit. The idea is that the Loaded event seems to
23635 only be emitted on those events that haven't yet been emitted.
23636 This may also be implemented just by making Loaded event handlers
23637 one-shot (removing themselves after they fire), but this is easy
23638 enough and works. The only event with this odd behavior (that I
23639 know of) is Loaded.
23641 * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
23642 flag (which may actually be useless now, given the Emit change)
23643 but don't emit Loaded only when the flag is unset.
23645 * collection.cpp: remove the last bit of closure access from
23646 VisualCollection. The OnLoaded call now happens in
23647 Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
23648 spots in VisualCollection.
23650 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
23652 * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
23653 [Complete the fix for #383870]
23655 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
23657 * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
23658 glyphs into account when calculating extents. Fix usage of OriginX
23659 and OriginY as far as extents goes.
23660 (Glyphs::GetOriginPoint): Don't leak the TextFont.
23661 (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
23662 RenderTransformOrigin, Microsoft's implementation for Glyphs
23663 doesn't seem to take into account the width/height of the bounding
23665 (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
23666 rather than MIN (OriginX, 0), Min (OriginY, 0)
23668 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
23670 * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
23671 [Partial fix for #383870, bounds are not always correct]
23673 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
23675 * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
23676 rather than copying it from the cairo context for the same reason
23677 we did this for TextBlock segment path caching.
23679 2008-05-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
23681 * playlist.h, playlist.cpp: Implemented ClientSkip.
23682 * media.cpp: Handle playlists entry with ClientSkip set correctly.
23684 2008-05-02 Michael Dominic K. <mdk@mdk.am>
23687 * animation.h: For the KeySpline: getting rid of the ugly lookup-table
23688 with x -> y values and instead using a two-way curve approximation
23689 methodology for calculating the Spline progress. This is not 100% accurate
23690 (same as original bezier) for fine-grained values but removes all the
23691 precision problems and greatly improves the quality for long KeySpline
23692 animations (no more jags).
23694 2008-05-01 Larry Ewing <lewing@novell.com>
23696 * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
23697 invalidate here as changes in the upstream opacity could make us
23698 unable to invalidate later.
23700 Fixes invalidation of last hex in a sprawl run.
23702 2008-05-01 Larry Ewing <lewing@novell.com>
23704 * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
23705 Previously there were no time manager handlers listening to events
23706 in windowless mode so we were missing expose events. Make all
23707 invalidations go throw Invalidate so that they get picked up in
23708 windowless. Take into account that exposes go to a full size
23709 window in windowless mode so we don't need to subtract the device
23712 Fixes most of the issues with
23713 http://silverlight.r2musings.com/weatherwidget/default.aspx and
23714 fixes the harness failure on ZIndex.htm.
23716 2008-05-01 Chris Toshok <toshok@ximian.com>
23718 * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
23719 AttachingEvent, which is emitted after the toplevel control is set
23720 on the surface, but before UIElement::LoadedEvent is emitted on
23721 it. Used by the plugin for hooking up the plugin onLoad handler.
23723 2008-05-01 Jeffrey Stedfast <fejj@novell.com>
23725 * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
23726 from the cairo_t after pathing out all of the glyphs for a segment
23727 of text, keep our own moon_path for caching. Apparently the path
23728 gotten from cairo_copy_path() has whatever transforms are on the
23729 context pre-applied which is the cause for the breakage in bug
23732 * font.cpp (TextFont::AppendPath): New method to append a glyph's
23733 path to a moon_path for caching purposes.
23735 2008-04-30 Fernando Herrera <fherrera@novell.com>
23737 * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
23738 stream, fallback to http:// uri
23740 2008-04-30 Michael Dominic K. <mdk@mdk.am>
23743 * panel.h: Adding the panel_add_child helper method used by the ancient
23744 demo. It actually makes sense.
23746 2008-04-30 Michael Dominic K. <mdk@mdk.am>
23751 * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
23752 the install. This way we don't need to bundle the zip includes.
23754 2008-04-30 Stephane Delcroix <sdelcroix@novell.com>
23756 * shape.cpp: calc_line_bounds: compute the start|end caps in the
23759 2008-04-30 Sebastien Pouliot <sebastien@ximian.com>
23761 * panel.cpp: Emit Loaded on Canvas before it's child.
23762 [Fix part #361906 - i.e. back to original issue]
23764 2008-04-30 Fernando Herrera <fherrera@novell.com>
23767 * downloader.h: export downloader_get_downloaded_file without the
23770 2008-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23772 * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
23773 correctly, and calculate file duration as MS seems to be doing it.
23774 SkipFrame: when seeking don't take into account the size of the
23775 mpeg header, since we only peaked it.
23777 2008-04-29 Michael Dominic K. <mdk@mdk.am>
23779 * shape.cpp: Clipping is not taken into account with cairo_in_*
23780 functions therefore do the hit-test in two steps -- first check if
23781 within clipping bounds and then check if within shape bounds. Fixes
23782 #383894 and test-shape-cursor-clipping.xaml test.
23784 2008-04-28 Chris Toshok <toshok@ximian.com>
23786 * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
23787 before we emit our own Load event (and trigger the plugin's onLoad
23790 2008-04-28 Chris Toshok <toshok@ximian.com>
23792 * runtime.cpp (Surface::Attach): always emit Resize on Attach.
23793 fixes ControlState.htm.
23795 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23797 * typegen/typegen.cs: Minor fix to support C constructors immediately
23799 * type-generated.cpp: Regenerated (includes a lot more C constructors
23802 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23804 * geometry.h: Include glib.h before using glib macros.
23806 2008-04-28 Michael Dominic K. <mdk@mdk.am>
23808 * xaml.cpp: Silently skip the attributes that are empty instead of
23809 throwing an error. Fixes the test-parser-empty-property.xaml and
23812 2008-04-28 Michael Dominic K. <mdk@mdk.am>
23814 * brush.cpp: Make sure to use proper width for image stretching params.
23815 Fixes the image-brush-stretch-set.html and bug #383938.
23817 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23819 * shape.cpp: Added property accessors.
23821 2008-04-25 Chris Toshok <toshok@ximian.com>
23823 * type-generated.cpp: add the Surface Loaded event.
23825 * runtime.cpp (Surface::widget_destroyed): null out s->widget if
23826 it matches too. no more dangling pointers.
23828 * runtime.h, runtime.cpp: give the Surface class a Load
23829 event (used to run the JS OnLoad event in the plugin) and an
23832 * xaml.cpp (dependency_object_hookup_event): raise a parser error
23833 if an event is specified with a javascript: prefix.
23835 2008-04-25 Larry Ewing <lewing@novell.com>
23837 * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
23838 changed logic inside a type check.
23840 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23842 * xaml.cpp (geometry_from_str): Use the new gemoetry property
23845 * geometry.cpp: Added property accessor methods
23847 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23849 * media.cpp: Always emit DownloadProgressEvents, even if we're
23852 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
23854 * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent
23855 method, so the Canvas.Top, Canvas.Left properties are read. Fixes
23858 2008-04-25 Geoff Norton <gnorton@novell.com>
23860 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: Support using ffmpeg's
23861 new libavcodec/avcodec.h
23863 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
23865 * runtime.cpp (runtime_init): No longer need to call
23866 assembly_part_init().
23868 * deployment.cpp (assembly_part_init): Moved into
23871 * deployment.h: Added missing virtual dtors.
23873 * collection.cpp (Collection::GetCount): Added.
23875 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23877 * media.cpp: Set DownloadProgress to 0 when media fails to load.
23879 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
23881 * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
23882 stream, emit it even if we missed it by up to 0.1 s. Refactored
23883 parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
23884 after we've either started playing or finished buffering. Emit
23885 MediaFailed/InvalidFileFormat if we failed to initialize the media.
23886 Reinitialize the media synchronously in SetSource.
23889 2008-04-25 Michael Dominic K. <mdk@mdk.am>
23893 * uielement.h: Also include the IsHitTestVisible status when checking
23894 our input_list after handling the mouse event. This fixes the
23895 mouse-enter-leave-hit-test-visibility.html test.
23897 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
23899 * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
23901 2008-04-24 Jeffrey Stedfast <fejj@novell.com>
23903 * clock.cpp: Added property accessor methods for TimelineMarker
23904 and added c-bindings.
23906 * downloader.cpp: Same.
23908 * media.cpp: Added property accessors so that it isn't
23909 necessary to use long-winded c-function names to get property
23910 values. Also made all c-wrappers call the c++ property accessor
23913 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23915 * mplayer.cpp: When a video-only media reaches its end, set target_pts
23916 to the last rendered pts, since that's what is reported as our
23919 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23921 * mplayer.cpp: When a video-only media reaches its end, set target_pts
23922 to the last rendered pts, since that's what is reported as our
23925 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23929 * uielement.h: Renaming UIElement::GetActualRenderVisibility to
23930 UIElement::GetActualTotalRenderVisibility for better name matching.
23932 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23934 * runtime.cpp: Another perf fix for the fix -- make it a corner case
23935 when the new_input_list needs to be copied. In most cases we can just
23938 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23942 * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
23943 the perf/sanity point of view. Here goes a better refactor.
23945 Adding UIElement::GetActualRenderVisibility which returns the visibility
23946 (like UIElement::ComputeTotalRenderVisibility) without setting the
23949 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23951 * runtime.cpp: After emitting the events make sure to update our
23952 input_list since it can be changed -- as a result of somebody ie.
23953 changing element's visibility in the enter/leave callback. Fixes the
23954 #375220 (Microsoft downloads index chars).
23956 2008-04-24 Michael Dominic K. <mdk@mdk.am>
23958 * animation.cpp: Do a slightly more precise generation of key-spline
23959 tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
23961 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23963 * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
23964 and raise MediaFailed.
23966 2008-04-24 Stephane Delcroix <sdelcroix@novell.com>
23971 * shape.h: override some Compute[Shape]Bounds method to pass a matrix
23972 argument. Allows measuration of transformed Pathes and a 2nd pass to
23973 refines the guesses we're doing for Stretches.
23975 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23977 * src.mdp: Updated.
23979 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23981 * media.cpp, pipeline.cpp, pipeline.h: Addded
23982 ProgressiveSource::NotifyFinished to notify that the download has
23983 finished. This is required for streaming downloads which download 0
23984 bytes, otherwise the pipeline will hang waiting for data.
23986 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23988 * collection.cpp, collection.h: TimelineMarkerCollection needs to be
23989 sorted at all times, added a virtual Collection::AddToList method
23990 which appends the item to the list (and overriden by
23991 TimelineMarkerCollection to add it in the correct position to keep
23992 the collection ordered).
23994 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
23996 * clock.cpp, clock.h: Added property accessors to TimelineMarker.
23998 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
24000 * panel.cpp: Add property accessors and added c-bindings.
24002 2008-04-23 Geoff Norton <gnorton@novell.com>
24004 * Makefile.am: Fix make dist when building with ffmpeg.
24006 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
24008 * frameworkelement.cpp: Added property accessors so that it isn't
24009 necessary to use long-winded c-function names to get property
24010 values. Also made all c-wrappers call the c++ property accessor
24013 * text.cpp: Added property accessors to all text classes so that
24014 it isn't necessary to use long-winded c-function names to get
24015 property values. Also made all c-wrappers call the c++ property
24017 (TextBlock::LayoutSilverlight): Removed, logic moved into
24020 * animation.h: Make sure all c-API _new() functions take void as
24023 * uielement.cpp: Added some property accessors.
24025 * text.cpp: Use the new SolidColorBrush ctor.
24027 * brush.cpp: Added property accessors to all brush classes so that
24028 it isn't encessary to use long-winded c-function names to get
24029 property values. Also made all c-wrappers call the c++ property
24031 (SolidColorBrush::SolidColorBrush): New .ctor to make life
24034 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24036 * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
24037 MediaPlayer with a negative pts.
24039 2008-04-23 Geoff Norton <gnorton@novell.com>
24041 * libmoon.h: Drop mango.h
24043 2008-04-23 Geoff Norton <gnorton@novell.com>
24045 * runtime.cpp: Remove pango support.
24047 2008-04-23 Geoff Norton <gnorton@novell.com>
24049 * Makefile.h, text.cpp, text.h, mango.cpp, mango.h: Remove pango
24052 2008-04-23 Geoff Norton <gnorton@novell.com>
24054 * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
24055 include swscale and ffmpeg cpp files in the build if their configure
24058 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24060 * type.cpp: When looking for types use case-insensitive type
24061 comparison. Fixes #375230 and #375231.
24063 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24065 * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
24066 don't take a ref to the context, and add a context_refcounted field
24067 to keep track of refcounting. This is required for long-living
24068 closures which would otherwise cause circular references. Add and
24069 implemetn a ASFMarkerDecoderInfo class, and implement notification
24070 of found markers back to listeners.
24071 * src.mdp: Updated.
24072 * downloader.cpp, downloader.h: Downloader: Add a streaming_features
24073 field, so that the plugin can return information about mms streams.
24074 * http-streaming.cpp, http-streaming.h: Added
24075 parse_http_streaming_features.
24076 * mplayer.h: Add property accessors for CanSeek and CanPause, and
24077 implement them. Select any marker streams.
24078 * media.h, media.cpp: MediaElement: store the marker closure in the
24079 instance, so that we can delete it upon destruction. Read the
24080 streaming features from the downloader in order to set
24081 CanSeek/CanPause properly. TryOpen: if we don't have a filename,
24082 but we do have a downloaded file, use the downloaded file as the
24083 source (might happen if streaming stops before TryOpen is called).
24084 * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
24085 implement them. Select any marker streams. Don't check if we can
24086 pause in Pause (), since MediaElement implements Buffering calling
24087 Pause on us. MediaElement is already checking if media can be
24089 * Makefile.am: Added http-streaming.h|cpp.
24091 2008-04-22 Stephane Delcroix <sdelcroix@novell.com>
24093 * rect.h: overrides for Union and IsEmpty to take a logical bool,
24094 allowing logical bounds computation.
24095 * geometry.cpp: use the overrided Union () in Computebounds
24096 * shape.cpp: This is the stretches' Holy Grail !
24098 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
24100 * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
24101 event->device non-NULL.
24103 2008-04-22 Larry Ewing <lewing@novell.com>
24105 * playlist.h: remove expat references from public symbols.
24106 * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
24107 from the plublic headers.
24109 Start cleaning things up for ff3.
24111 2008-04-22 Chris Toshok <toshok@ximian.com>
24113 * runtime.h, runtime.cpp: add Zombify() which sets the zombie
24114 flag. basically this allows us to unwind gracefully from an event
24115 that has caused the surface to be destroyed. when the flag is
24116 set, we basically stop emitting UI events that we're in the
24117 process of emitting.
24118 (Surface::widget_destroyed) simplify this, and zero out the
24119 widgets here so we don't destroy them again in ~Surface().
24121 * dependencyobject.h, dependencyobject.cpp: make unref_delayed
24122 public again, and don't warn about calling it on the main thread.
24123 we need it in the plugin.
24125 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
24127 * shape.cpp (Shape::DoDraw): Cast extents to int for
24128 AddToCacheSizeCounter().
24129 (Shape::IsCandidateForCaching): Same for
24130 VerifyWithCacheSizeCounter().
24132 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24134 * animation.cpp: Safely allow now the KeyTime property to be nullable.
24135 Fixes the Animation_NegativeTst.htm test.
24137 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24140 * animation.h: Making the Storyboard::Begin return bool (true if
24141 storyboard started correctly, false otherwise).
24143 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24148 * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
24149 to validate the Timeline before starting it. Timelines are always valid
24150 by default except for KeyFrame-based animations where we perform a
24151 check on the keyframes.
24153 Storyboard doesn't start if any of it's timelines are not valid. This
24154 fixes the test-animation-invalid-keyframe-keytime.xaml test.
24156 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24158 * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
24159 value, make it be NULL by default. This currently causes a segfault in
24160 the just-added test-animation-invalid-keyframe-keytime.xaml which is
24163 2008-04-22 Fernando Herrera <fherrera@novell.com>
24166 * pipeline.cpp: set the new read position after Seeking to pts.
24167 Added ProgressiveSource::SeekInternal that refuses to Seek to a
24168 non-filled position.
24170 2008-04-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
24172 * dependencyobject.cpp, dependencyobject.h: Added another SetValue
24173 overload, to enable calling all SetValues with stack objects.
24174 * xaml.cpp: Fix a Value leak.
24176 2008-04-21 Jeffrey Stedfast <fejj@novell.com>
24178 Fixes a double-destroy bug in FullScreen.htm
24180 * runtime.cpp (Surface::Surface): Initialize normal_widget - never
24181 let it be NULL unless we are in windowless mode.
24182 (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
24183 'widget_normal' instead, this way we can't accidently destroy the
24184 fullscreen widget twice (e.g. if we are in fullscreen mode).
24185 (Surface::ConnectEvents): Record the unrealize signal id so that
24186 we can later disconnect from it.
24187 (Surface::DestroyWidget): Now takes a SignalIds argument so that
24188 we can disconnect from unrealize/destroy signals which may fire in
24189 response to destroying the widget.
24190 (Surface::InitializeWidget): Now takes a SignalIds argument so
24191 that we can save the destroy signal id.
24193 2008-04-21 Geoff Norton <gnorton@novell.com>
24195 * runtime.cpp: Guard against freeing a list in a sub-event
24196 loop when crossings are invoked. Fixes bug#378902
24198 2008-04-20 Miguel de Icaza <miguel@roxanne.site>
24200 * deployment.cpp: new dependency property objects for the
24203 * xap.cpp: XAP loader, unpacks and instantiates deployment, but
24204 does not load assemblies in VM. Not sure if this should be done
24205 here (and add a VM dependency) or in the plugin and later as well
24208 * runtime.cpp: Deployment initialization.
24210 * downloader.cpp Moved some code from here into utils.cpp: Expose
24211 CreateTempDir instead of MakeTempDir that takes care of creating
24212 the directory with a unique signature.
24214 2008-04-21 Geoff Norton <gnorton@novell.com>
24216 * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
24217 to the C implementation.
24219 2008-04-18 Larry Ewing <lewing@novell.com>
24221 * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
24222 changes invalidate our parents bounds to notify them that their
24223 subtree may have changed.
24225 Fixes the status boxes on MouseInput.htm
24227 2008-04-18 Jeffrey Stedfast <fejj@novell.com>
24229 * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
24230 and focus-out-event.
24231 (Surface::focus_in_callback): If we have a toplevel canvas, emit a
24232 GotFocus event on it.
24233 (Surface::focus_out_callback): If we have a toplevel canvas, emit
24234 a LostFocus event on it.
24235 (Surface::Attach): If our widget has focus, emit GotFocus event on
24236 our canvas right after we emit the Loaded event.
24238 * uielement.cpp (UIElement::EmitGotFocus): New method.
24239 (UIElement::EmitLostFocus): New method.
24241 2008-04-18 Geoff Norton <gnorton@novell.com>
24243 * yuv-converter.cpp: It seems that ffmpeg will occasionally
24244 over-pad the YUV buffers with a SIMD aligned amount (see
24247 2008-04-18 Michael Dominic K. <mdk@mdk.am>
24249 * animation.cpp: Make sure we always return targetValue when
24250 progress >= 1.0 for Spline*KeyFrame's.
24252 This fixes the clock36.xaml test and PopFly bug of "line dirt
24253 leftovers" when collapsing block list or tutorial list.
24255 2008-04-17 Larry Ewing <lewing@novell.com>
24257 * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
24259 2008-04-17 Larry Ewing <lewing@novell.com>
24261 * src/eventargs.cpp:
24263 * src/type-generated.cpp:
24264 * src/value.h: add a default ctor for MouseEventArgs.
24266 2008-04-17 Larry Ewing <lewing@novell.com>
24268 * typegen/typegen.cs: don't require an svn repo for proper
24269 functioning, try to make the error messages functional still.
24271 2008-04-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
24273 * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
24274 before trying to play/pause, otherwise nothing will happen (if
24275 coming from the Opening state). Fix printf.
24277 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24279 * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
24280 for DependencyProperty, if a property has this flag, it will always
24281 be changed, even if the new value is the same as the old value.
24282 DependencyObject::SetValue: honor the new always_change flag.
24283 * media.cpp: Set the always_change flag to true for
24284 MediaBase::SourceProperty.
24286 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24288 * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
24289 MediaOpened, so that it also happens when TryLoadFinished opens the
24290 media. Fixes media not starting to play when the media was
24291 downloaded between the moment we tried to open it and it was
24292 successfully opened.
24294 2008-04-17 Jeffrey Stedfast <fejj@novell.com>
24296 * color.cpp (color_from_str): Handle uint32 color values that are
24299 2008-04-17 Larry Ewing <lewing@novell.com>
24301 * dependencyobject.cpp (DependencyProperty::DependencyProperty):
24302 initialize is_nullable.
24304 Fixes random failure of ParserErrors.htm.
24306 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24308 * media.cpp: MediaElement::TryOpen: always unref the FileSource we
24309 create when we're done with it.
24311 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24313 * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
24314 remember how many events the current type has, since in our
24315 destructor we can't get that information anymore. Add a new
24316 EventLists class which does the book-keeping.
24318 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24320 * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
24321 in the destructor. MediaElement::SetMedia: call ComputeBounds at
24322 the end. Fixes xaml/test-canvas-no-size.html
24324 2008-04-17 Michael Dominic K. <mdk@mdk.am>
24326 * animation.cpp: It turns out that KeyFrames doesn't have default Value
24327 of NULL but rather 0/Black/etc.
24329 This fixes the the test-animation-null-defaults-*.xaml tests and the bug
24330 in PopFly where clicking the block list collapser wouldn't do anything
24331 (it collapses now properly like the tutorial right pane).
24333 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24335 * src.mdp: Updated.
24337 2008-04-16 Larry Ewing <lewing@novell.com>
24339 * type.cpp: avoid an infinite recursion in LookupEvent.
24341 Fixes a crash in RuntimeErrors.htm.
24343 2008-04-16 Larry Ewing <lewing@novell.com>
24345 * shape.cpp (Shape::ComputeStretchBounds): get another test working.
24347 2008-04-16 Larry Ewing <lewing@novell.com>
24349 * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
24350 try to resolve the regression in stretch that had crept in. Still
24351 working on a more complete patch.
24353 2008-04-16 Larry Ewing <lewing@novell.com>
24355 * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
24358 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
24360 * dependencyobject.cpp (free_value): value argument may be NULL.
24362 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24364 * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
24365 decreasing refcount, so that ref in event emission doesn't abort.
24366 Reenable ref/unref in event emission.
24368 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
24370 * dependencyobject.cpp (set_surface): value argument can be NULL.
24371 (DependencyObject::IsValueValid): Fixed compile warnings.
24373 * downloader.cpp: Properly set/reset Status and StatusText
24375 (Downloader::Open): Properly reinitialize all state.
24376 (Downloader::Write): Clamp progress to 1.0 (altho it should never
24377 go above, especially not that I've fixed resetting 'total' state).
24379 * enums.c (initialize_enums): Don't cast arrays using
24380 GINT_TO_POINTER(), doesn't make any sense.
24382 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24384 * collection.cpp: Collection::EmitChanged: don't create a
24385 ChangeEventArgs if we don't need one, and unref it when we're
24388 2008-04-16 Michael Dominic K. <mdk@mdk.am>
24390 * clock.cpp: Add protection against division by 0.
24392 2008-04-16 Michael Dominic K. <mdk@mdk.am>
24395 * animation.h: Don't detach the ClockGroup from parent on the Completed
24396 event. This is now finally no longer needed. While keeping the
24397 clockgroup means little perf difference it makes the whole thing much
24398 more simple to read (there is just one place that explains why Filling
24399 groups are no longer processed after Completed).
24401 2008-04-16 Larry Ewing <lewing@novell.com>
24403 * shape.cpp: tweak the origin tweak again. This should pass
24404 test-shape-path-stretch[34].xaml.
24406 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
24408 Fix for OMPackagingSource.htm
24410 * media.cpp (MediaElement::OnPropertyChanged): If the new source
24411 is empty, Invalidate().
24412 (MediaElement::Render): Render nothing if our downloader is NULL.
24414 2008-04-16 Larry Ewing <lewing@novell.com>
24416 * shape.cpp: don't adjust the origin unless we are adjusting that
24419 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24421 * playlist.cpp: Simplify printf.
24423 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24425 * src.mdp: Updated to (mostly) compile.
24427 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24429 * src.mdp: Updated.
24431 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24433 * typegen/typegen.sh: Updated to work correctly independently of
24434 the current directory when executed.
24436 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
24438 * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
24439 collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
24440 downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
24441 type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
24442 uielement.cpp, uielement.h: Initialize our type system statically.
24443 * dependencyobject.cpp: Initialize our type system statically. Comparing a
24444 Kind value to another to determine type hierarchy isn't supported
24445 anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
24447 * src.mdp: Updated.
24448 * type.cpp.in: Removed, no longer required.
24449 * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
24450 determine type hierarchy isn't supported anymore, use Value::Is or
24451 Type::IsSubclassOf, which are doing the right thing.
24453 2008-04-16 Larry Ewing <lewing@novell.com>
24455 * shape.cpp (Shape::ComputeStretchBounds): fix typo.
24457 2008-04-16 Larry Ewing <lewing@novell.com>
24459 * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
24460 that got accidentally lost when fixing other bits.
24462 Fixes regression in StretchAndShapes.xaml.
24464 2008-04-16 Jackson Harper <jackson@ximian.com>
24466 * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
24467 we need to check if the property is Nullable and raise an error if
24470 2008-04-16 Jackson Harper <jackson@ximian.com>
24472 * dependencyobject.h|cpp: SetValue now validates values and
24473 returns false with a GError when invalid values are used.
24474 Subclasses can (and should) override IsValidValue to do their own
24476 * xaml.cpp: Use new SetValue that returns errors.
24478 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
24480 * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
24481 don't have a surface anymore. We're probably executing after the surface
24482 has been destroyed.
24484 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
24486 * src.mdp: Updated to include typegen/*.
24487 * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
24488 Behaviour/Behavior inconsistency.
24490 2008-04-15 Jeffrey Stedfast <fejj@novell.com>
24492 * media.cpp (MediaElement::OnPropertyChanged): Moved the
24493 PositionProperty seek logic into here so we could get rid of
24494 MediaElement::SetValue() overload.
24496 * dependencyobject.h (class DependencyObject): SetValue() is no
24497 longer a virtual method.
24499 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24501 * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
24504 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24506 * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio
24507 into account also when moving back in time.
24509 Fixes the clock34.xaml test.
24511 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24513 * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
24514 calculating it ourselves (instead of using the CalcProgress). Otherwise
24515 we're bypassing the clamping and extending animations/values beyond
24518 This is a real fix for the Popfly #378390 (cannot configure the box in
24519 Popfly). Also fixes the clock34.xaml test-case.
24521 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24523 * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
24524 when previous OR current state is Clock::Active.
24526 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24528 * clock.cpp: Reverting the change that was supposed to fix popfly. It's
24529 actually totally bad. I knew I was too fast with this one.
24531 2008-04-15 Michael Dominic K. <mdk@mdk.am>
24533 * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
24534 configure the box in Popfly). Whoah, that was a nasty one.
24536 2008-04-14 Chris Toshok <toshok@ximian.com>
24538 * runtime.cpp (Surface::Attach): don't clear the up/down dirty
24539 lists here. Calling toplevel->SetSurface(NULL) ensures that all
24540 elements from the previous tree have their dirty elements removed,
24541 so what's left will correspond to 1) things that are about replace
24542 the current hierarchy, or 2) things that haven't actually been
24543 added to the hierarchy yet, but need to be associated with a
24546 * collection.cpp (Collection::Clear): emit
24547 CollectionChangeTypeChanging event before we do the actual change
24548 so the owner can do something with the children if it needs to.
24549 (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
24551 (VisualCollection::Add): remove call to VisualAdded. that
24552 behavior will be handled by Panel in its OnCollectionChanged
24554 (VisualCollection::SetVal): same.
24555 (VisualCollection::Insert): same.
24556 (VisualCollection::Remove): same, but with VisualRemoved.
24557 (VisualCollection::RemoveAt): same.
24558 (VisualCollection::Clear): remove the loop calling VisualRemoved.
24559 this will be handled by the additional
24560 CollectionChangeTypeChanging handling in panel.cpp.
24562 * enums.h (enum CollectionChangeType): add
24563 CollectionChangeTypeChanging.
24565 * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
24566 where the ChildrenProperty is changed, by calling ChildRemoved on
24567 all the old children, and ChildAdded on all the new ones.
24568 (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
24569 (Panel::ChildRemoved): new home for
24570 VisualCollection::VisualRemoved.
24571 (Panel::OnCollectionChanged): add support for
24572 CollectionChangeTypeChanging, so we can remove all children. this
24573 change type is generated by Collection::Clear.
24575 * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
24576 CollectionChangeTypeChanging.
24577 (InkPresenter::OnCollectionChanged): same.
24579 2008-04-14 Jeffrey Stedfast <fejj@novell.com>
24581 * media.cpp (Image::CreateSurface): Robustification of image
24584 2008-04-14 Michael Dominic K. <mdk@mdk.am>
24587 * clock.h: When calculating the new time in DoRepeat use modulo on new
24588 value. Otherwise we're 'losing' a little bit of time on every repeat and
24589 end time doesn't match with parent. This fixes a few more "jags" on
24590 animations ie. clock13.xaml.
24592 2008-04-11 Larry Ewing <lewing@novell.com>
24594 * xaml.cpp (value_from_str): make sure we propogate the error if
24595 color_from_string returns NULL.
24597 * color.cpp (color_from_str): return NULL on invalid color values
24598 rather than simply returning black.
24600 Add an error condition to color_from_string so that we pass the
24601 color tests in ParserErrors test.
24603 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
24605 * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
24607 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
24609 * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
24612 * downloader.cpp (Downloader::Send): Use
24613 TimeManager::InvokeOnMainThread() here like Rolf did in
24614 MediaBase. Simplifies things by not needing a surface.
24616 * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
24617 object as opposed to a DependencyObject.
24619 2008-04-11 Michael Dominic K. <mdk@mdk.am>
24621 * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
24622 we go Filling/Stopped. Without this we never "finish off" our animations
24623 and depending on the framerate we get "jags". Fixes the clock32.xaml
24626 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
24628 * runtime.cpp: Make the dot and eraser cursors const to avoid
24631 2008-04-11 Michael Dominic K. <mdk@mdk.am>
24633 * enums.c: Removing bolox comment and behavior. Always return -1 on
24636 * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
24637 Should make it a little bit easier to spot problems.
24639 2008-04-11 Michael Dominic K. <mdk@mdk.am>
24641 * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
24642 actually recursive (I'm not sure why this was commented out? Toshok?).
24643 Fixes the sprawl end-game animation, #378748.
24645 2008-04-11 Stephane Delcroix <sdelcroix@novell.com>
24647 * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes
24648 bnc #375213. Implemented the MouseCursorNone too.
24650 2008-04-10 Larry Ewing <lewing@novell.com>
24652 * xaml.cpp (start_element): throw an error if there is an xml
24653 attribute on a dependency property.
24655 2008-04-10 Larry Ewing <lewing@novell.com>
24657 * enums.c (enum_from_str): return -1 on an invalid enum string so
24658 that we can catch it as a ParserError fixes
24659 Parser_Invalid_Enum.xaml.
24661 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
24663 * media.cpp: MediaBase::SetSource: no need to get a
24664 Surface/TimeManager instance to do an asynchronous call, just
24665 call TimeManager::InvokeOnMainThread.
24667 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
24669 * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
24670 by the audio thread when the audio finishes.
24672 * media.h, media.cpp: Added MediaElement::AudioFinished, called by
24673 the media player when the audio finishes. Enables us to raise
24674 MediaEnded for audio-only media.
24676 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
24678 * brush.cpp|media.cpp: All SetSource() entry points now take
24679 Downloader objects rather than DependencyObject arguments - the
24680 same as MSDN defines.
24682 * media.cpp (SetSourceInternal): More cleanup /
24683 simplification. Since *::SetSource() already takes steps to be
24684 async, no need to use Downloader::Send() which would introduce
24685 another delay in downloading. It should be plenty safe to call
24686 Downloader::SendNow() in all ::SetSourceInternal()
24687 implementations. Also, we now need to handle NULL downloader which
24688 we get called with if the original SetSource() was passed a NULL
24690 (Image::SetSource): Don't cleanup the surface here, do that in
24691 SetSourceInternal() so that we delay until appropriate.
24692 (Image::SetSourceInternal): If there is a downloader, delay
24693 CleanupSurface() even longer until the new image has been
24695 (Image::DownloaderComplete): Call CleanupSurface() here.
24697 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
24699 * media.cpp: Consolidated Image and MediaElement downloader bits
24700 by putting them into MediaBase.
24702 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
24704 * dependencyobject.cpp: Guard against calling closures which have
24705 been removed during emission of previous events in the same
24706 event list: when we're emitting and a closure is removed, mark
24707 the closure as pending removal, don't call it anymore, and only
24708 remove it when we're finished emitting.
24710 * dependencyobject.h: Guard against calling closures which have
24711 been removed during emission of previous events in the same
24714 2008-04-10 Michael Dominic K. <mdk@mdk.am>
24718 * media.cpp: A straight-forward fix for "gray flashes" in comic and
24719 slideshow (#375275). It's circumventing a change to make downloaders
24720 async for Image. Jeff, maybe you can figure more?
24722 (The commit that broke the the slideshow was r99065, Jeff from
24725 2008-04-10 Michael Dominic K. <mdk@mdk.am>
24727 * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
24728 Showcase and test-shape-path-stretch2.xaml.
24730 2008-04-09 Chris Toshok <toshok@ximian.com>
24732 * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
24733 is invalid, as root_2 might be.
24735 2008-04-09 Chris Toshok <toshok@ximian.com>
24737 [ Fixes some odd behavior in
24738 http://www.thedatafarm.com/silverink/, and also fixes bug
24741 * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
24742 intersect the expose region with our RenderBounds, not our normal
24743 Bounds. This forces us to add the ink presenter to the render
24744 list even when the exposed area is just going to redraw a stroke,
24745 not the actual canvas rectangle. When we go to subtract, however,
24746 we still only subtract the canvas rectangle.
24748 * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
24749 stroke collection's bounds as well as the new stroke collection's
24751 (InkPresenter::OnCollectionChanged): when the collection has
24752 changed, we can't just use Invalidate() since that only
24753 invalidates the canvas bounds. We need to invalidate our render
24754 bounds to get rid of strokes that are outside the canvas bounds.
24755 Also, make sure to also invalidate the new bounds of the stroke
24756 collection (it will usually be empty, but do it anyway).
24757 (InkPresenter::ComputeBounds): add logic to compute the
24758 render_bounds here.
24759 (InkPresenter::GetRenderBounds): new method.
24761 * stylus.h (class InkPresenter): add GetRenderBounds, and also add
24762 an OnPropertyChanged method so we can deal with the stroke
24763 collection being assigned to something else.
24765 * uielement.h (class UIElement): as much as I hate to do this, add
24766 yet another type of bounds (RenderBounds). this is only here for
24767 the special case of the inkpresenter, which has the normal canvas
24768 bounds (the rectangle), the subtree bounds (which unions the
24769 canvas bounds with the bounds of strokes and children) and render
24770 bounds (which unions canvas bounds and stroke bounds.)
24772 2008-04-09 Jeffrey Stedfast <fejj@novell.com>
24774 * dependencyobject.cpp (resolve_property_path): Alias TextElement
24775 to TextBlock to work around some buggy beta versions of Blend.
24777 2008-04-09 Stephane Delcroix <sdelcroix@novell.com>
24779 * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
24780 the logical/shape bounds diff stays the same. It's IMHO as close as we
24781 can go without drawing and recalculating.
24783 2008-04-08 Jeffrey Stedfast <fejj@novell.com>
24785 * xaml.cpp: Cleaned up some of the debugging printf's and and
24786 wrapped them in d() to declutter console spewage when unneeded.
24787 (xaml_create_from_str): ctype functions take int arguments, where
24788 normal char values are in the range 0-255 - in order to work with
24789 non-GNU, need to cast from char to unsigned char.
24791 * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
24792 initializer stuff to be consistent with other classes.
24794 2008-04-08 Sebastien Pouliot <sebastien@ximian.com>
24796 * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks
24799 2008-04-08 Michael Dominic K. <mdk@mdk.am>
24802 * clock.h: SkipToFill the automatic duration clock groups except if
24803 this is the root of all roots clock (the TimeManager's clock). Due to
24804 the idle_hint optimization, we don't process those clocks anyways.
24806 2008-04-08 Michael Dominic K. <mdk@mdk.am>
24811 * dependencyobject.cpp:
24812 * dependencyobject.h: Making sure that each property is animated only by
24813 a single animation at a time (the last one started).
24814 From Silverlight forums:
24816 "Keep in mind Silverlight only supports a single animation on a
24817 property at a time, so if you begin multiple animations on the same
24818 property, the last one will prevail."
24820 This prevents us from overriding Filling/HoldEnd animations by sb's
24823 The implementation is: for each prop we create a hash table (when
24824 needed) which stores objects (keys) + last AnimationStorage attached
24825 (values). When new AnimationStorage is attached to a prop, the last one
24826 is notified to stop updating the target (we don't touch the clock
24827 structure). And then there is some magic to handle destroy's etc.
24829 This fixes PopFly mouse enter/leave problems in the toolbox and the
24830 http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
24831 problems. Fixes #375231, #362363.
24833 2008-04-07 Jeffrey Stedfast <fejj@novell.com>
24835 Fixes needed for Zombomatic
24837 * downloader.cpp (Downloader::GetDownloadedFilePart): When
24838 creating the full pathname for parts we are extracting, convert
24839 everything to lowercase since we need to treat archived filenames
24840 case-insensitively.
24841 (Downloader::GetUnzippedPath): Convert filenames from the zip
24842 archive to lowercase so that it is easier for us to find them
24843 case-insensitively on the filesystem once they are extracted.
24845 2008-04-07 Sebastien Pouliot <sebastien@ximian.com>
24847 * xaml.cpp: Fix parsing properties by ensure they start with the
24848 element name (and not something else). Fix crasher.
24850 2008-04-07 Michael Dominic K. <mdk@mdk.am>
24853 * src/shape.h: Compute the origin point as a separate step after
24854 computing the shape bounds and the stretch bounds. This fixes the
24855 recently broken sprawl.
24857 I think it also fixes other things. Before, given the way code was,
24858 the stretch_bounds would affect the origin *only* in the case of Path,
24859 in other cases (Line, Polygon, Polyline...) they would be ignored.
24861 2008-04-04 Chris Toshok <toshok@ximian.com>
24863 * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method. it
24864 was missing a bunch of tests (basically it was intersecting
24865 infinite lines with ellipses, not segments), and some of the math
24868 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
24870 Intended to fix bug #373462, but something else is preventing that
24871 site from working now...
24873 * media.cpp (MediaElement::SetSourceInternal): PartName is no
24874 longer a const char * argument, which means we take ownership of
24875 the PartName string.
24876 (MediaElement::SetSourceAsyncCallback): New method which is the
24877 async callback for SetSource().
24878 (MediaElement::SetSource): Reinitialize() right away.
24879 (MediaElement::SetSource): Clear out any pending SetSource async
24880 data, replacing it with the new downloader/part name info.
24881 (MediaElement::SetSource): Allow a NULL downloader object but make
24882 sure we don't crash in that case either.
24884 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
24886 * dependencyobject.cpp (resolve_property_path): Avoid crash on
24887 invalid syntax and leaks in other error cases. Fix #377039 (more
24888 test cases coming soon).
24890 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
24892 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
24893 immediately if the array len is 0, prevents a crash accessing
24894 sorted_list->pdata[0] when working backwards in the second
24895 for-loop. Fixes one of the crashes I found while investigating bug
24898 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
24900 * runtime.cpp: Don't crash in strcase_hash if the hashtable
24901 contains NULL values.
24903 2008-04-03 Chris Toshok <toshok@ximian.com>
24905 * runtime.cpp (Surface::InitializeWidget): disable the
24906 GDK_POINTER_MOTION_HINT_MASK stuff for now. we're not passing
24907 tests with it enabled.
24908 (Surface::motion_notify_callback): force the emission of a motion
24911 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
24913 * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
24914 the pencil cursor. Also updated Hand (which should be a
24915 left-pointing hand, not right-pointing) and also Eraser (we need
24916 to make our own icon for this, but I suck at art so I'll pass for
24919 2008-04-03 Michael Dominic K. <mdk@mdk.am>
24922 * shape.h: Calculate the logical extents when computing the shape bounds
24923 and pass them to the ComputeStretchBounds. They're currently not used in
24926 2008-04-03 Michael Dominic K. <mdk@mdk.am>
24928 * shape.cpp: Don't init the stretch matrix to identity on each
24929 Shape::ComputeShapeBounds. We want to be able to call it freely.
24931 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24933 * geometry.cpp: Use the cairo_path_extents to calculate the logical
24934 bounds instead of faking small stroke.
24936 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24939 * shape.h: Adding new parameter (bool logical) to all the
24940 Shape::ComputeShapeBounds functions and overrides. See prev commit for
24941 explanation of what is logical bounds.
24943 Currently all clients use logical == false. Just adding this
24946 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24951 * uielement.cpp: Adding new parameter (bool logical) to all the
24952 Geometry::ComputeBounds functions and overrides. Calculating logical
24953 bounds means calculating bounds without stroke included. Ie. a line
24954 (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
24955 what the stroke is.
24957 Not used right now, will be used in just a few commits (all current
24958 ComputeBounds clients call it will logical == false).
24960 2008-04-02 Michael Dominic K. <mdk@mdk.am>
24962 * shape.cpp: Don't automatically compute the stretch bounds when
24963 computing shape bounds. Instead, compute it as a separate step in
24964 Shape::ComputeBounds.
24966 2008-04-03 Chris Toshok <toshok@ximian.com>
24968 * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
24969 contrary to msdn2, MS *is* indeed emitting this event with
24970 non-null eventargs. it's just an EventArgs object, not a
24973 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
24975 * dependencyobject.cpp (EventObject::Emit): Unref the calldata
24976 even in the "no such event" exception case.
24978 2008-04-03 Larry Ewing <lewing@novell.com>
24980 * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
24981 into appropriate error code.
24983 2008-04-03 Larry Ewing <lewing@novell.com>
24985 * xaml.cpp: Generate errors when trying to set readonly properties.
24987 2008-04-03 Larry Ewing <lewing@novell.com>
24989 * xaml.cpp: make sure we set an error if the property name isn't
24992 * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
24995 2008-04-03 Larry Ewing <lewing@novell.com>
24997 * runtime.cpp (Surface::expose_to_drawable): make sure we take
24998 allocation.x and allocation.y into account when deciding not to
24999 draw. Should fix the disappearing gtksilver widget reported on irc.
25001 2008-04-02 Larry Ewing <lewing@novell.com>
25003 * xaml.cpp: flush character data at the end of property elements
25006 2008-04-02 Jackson Harper <jackson@ximian.com>
25008 * xaml.cpp: Add the element name for this error.
25010 2008-04-02 Chris Toshok <toshok@ximian.com>
25012 * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
25013 (Stroke::HitTestEndcapPoint): same.
25014 (point_gte_line): new method.
25015 (point_lte_line): new method.
25016 (Stroke::HitTestSegmentPoint): use point_gte_line and
25017 point_lte_line to determine if the point is inside the segment.
25018 (global): wrap all spew in DEBUG_HITTEST.
25020 2008-04-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
25022 * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
25025 2008-04-02 Jeffrey Stedfast <fejj@novell.com>
25027 * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
25028 integer type when comparing.
25030 * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
25031 debugging printfs. Fixes bug #375273.
25033 2008-04-01 Chris Toshok <toshok@ximian.com>
25035 * xaml.cpp: back out the SetSurface call removal.
25037 * dependencyobject.cpp (EventObject::unref): instead,
25038 SetSurface(NULL) here before we delete the object.
25040 2008-04-01 Chris Toshok <toshok@ximian.com>
25042 * control.cpp (Control::InitializeFromXaml): make sure to call
25043 SetSurface(NULL) on the old real_object since we're detaching it
25044 from the tree. Call SetSurface on ourselves (really, should just
25045 be the real_object, right?) before calling the real_object methods
25046 that would cause dirty stuff to happen.
25048 * xaml.cpp (create_custom_element): don't call SetSurface here, it
25049 will cause problems if there's a parser error (since elements
25050 can/will be on the surface's dirty list after they're destroyed.)
25051 (default_create_element_instance): same.
25053 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25055 * playlist.cpp, playlist.h: A lot of fixes according to the tests.
25056 * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
25057 specify where in the stream we start and (playlists can specify a
25058 starting point which isn't in the beginning), and set the duration from
25059 the playlist (if the playlist has it).
25060 * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
25061 false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
25062 if the recursive playlist couldn't be replaced.
25064 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25066 * media.h: Added MediaElement::GetPlaylist.
25068 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25070 * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
25071 Remove Type::NPOBJ, it's not needed.
25073 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25075 * animation.cpp: Since now the clocks are synced we don't need to
25076 recursively check the states in the teardown on completed.
25078 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25081 * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
25082 manually to Stopped but not touching the state of children).
25084 We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
25085 set, we don't tick the ClockGroup no matter what the state is. Idle_hint
25086 is set when all children of ClockGroup have state != Active (ie. are
25087 filling). This can be seen as "optimization" -- not to dumbly process
25088 filling clocks which keep setting same value all the time (it creates
25089 insane recursion ie. in Showcase making it unusable). Silverlight seems
25090 to do something very similiar.
25092 Before this commit a same effect was achieved by the said "desyncing" --
25093 forcing the ClockGroup to Stopped. This approach however is a bit more
25096 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25098 * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
25100 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25102 * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
25104 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25106 * value.cpp: Remove a few warnings which might give false positives now.
25108 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25110 * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
25111 we're being unreffed on the main thread, if not, call unref_delayed.
25113 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25115 * runtime.cpp, runtime.h: Added a Surface::InMainThread.
25117 2008-04-01 Fernando Herrera <fherrera@novell.com>
25119 * media.cpp: Remove the request position function when aborting the
25122 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25124 * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
25125 MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
25126 being called from the destructor, and if so, null out the element field
25127 of the MediaPlayer, so that we don't access a destructed media element.
25128 Add an async version of MediaPlayer::EnqueueFrames, so that the audio
25129 threads can request more data in a thread-safe manner.
25131 2008-04-01 Fernando Herrera <fherrera@novell.com>
25134 * pipeline.h: Support for live mms streams, that have packet_count as
25135 0 and return false for CanSeekToPts.
25137 2008-03-31 Chris Toshok <toshok@ximian.com>
25139 * namescope.h, namescope.cpp: make no semblance of having a
25140 superior namescope implementation (where they get transported
25141 around with the subtree they're attached to when it's
25142 removed/re-added to the hierarchy.) Instead follow MS's broken
25143 implementation where temporary namescopes are completely removed
25144 when merged into another one.
25146 * collection.h, collection.cpp (Collection::MergeNames): factor
25147 out some common code from Add, Insert, and SetVal. Also, deal with
25148 the fact that merging namescopes now really adds all the names to
25149 the parent namescope, so clear the old namescope.
25150 (Collection::SetVal): don't just unregister the old toplevel name,
25151 but all the names in the subtree.
25152 (Collection::Remove): same.
25153 (Collection::Clear): same.
25154 (Collection::UnregisterAllNamesRootedAt): override DO's method,
25155 recursing into all our children.
25156 (Collection::RegisterAllNamesRootedAt): same.
25157 (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
25158 UIElement::OnLoaded is called again, and <BeginStoryboard>
25159 elements restart when the subtree is added to the hierarchy again.
25161 * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
25162 override and forward onto real_object.
25163 (Control::RegisterAllNamesRootedAt): same.
25165 * dependencyobject.cpp (DependencyObject::ClearValue): add a
25166 parameter to allow us to specify *not* to notify listeners of the
25167 property change. we do this with the NameScope property, which
25168 noone should be listening too. It was causing a tremendous
25169 performance hit when merging a lot of namescopes (as we do in
25170 inkStylusPointCount.htm)
25171 (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
25172 removed from the hierarchy, we need to unregister all the names
25174 (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
25175 added to the hierarchy, if it doesn't have a temporary
25176 namescope (in which case we just merge it).
25178 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
25180 * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
25181 MemorySource owns the memory or not (if it will be freed upon
25182 destruction or not).
25184 2008-03-31 Jeffrey Stedfast <fejj@novell.com>
25186 * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
25187 for-loop would only use every other point as a starting point for
25188 a segment. E.g. if you had points a, b, c, d and e - the code only
25189 checked segments ab, cd, and e when it should have been checking
25190 ab, bc, cd, and de.
25192 2008-03-31 Fernando Herrera <fherrera@novell.com>
25194 * downloader.cpp: Check if aborted before cheking for requested
25197 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
25199 * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
25201 * playlist.cpp: Updated according to pipeline changes.
25202 * mplayer.h: Fix SetState to not overwrite current bits, only current state.
25203 * media.h, media.cpp: Rework buffering progress to use the available time of
25204 media available (pts) instead of doing some funny math on file
25206 * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
25208 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25210 * animation.cpp: Don't Stop the Storyboard root_clock before begining
25211 the Storyboard again, just silently tear it down.
25213 Calling Stop resets the property values to base which is something we
25214 don't want. When Begin () is called on Sb in SL, the last animated
25217 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25220 * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
25221 works similar to Teardown but doesn't destroy the clock/animation
25222 hierarchy. We need this hierarchy to ie. reset prop values to base when
25223 Storyboard::Stop is called manually.
25225 When Storyboard is completed, call DetachClockGroupFromParent (if not
25226 Teardown). Otherwise the Storyboard will ghostly change state with parent
25229 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25231 * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
25232 to check for NULL and report stopped == true when both ClockGroup state
25233 is Stopped and all children are Stopped.
25235 To be honest, this never currently reports Stopped == true as we do
25236 intentional state desync when storyboard reaches end -- setting the
25237 ClockGroup state to Stopped but keeping the children in Active/Filling.
25238 This *has* to go away.
25240 2008-03-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
25242 * src.mdp: Updated.
25244 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
25246 * utils.cpp (TextStream::Read): Better handling of iconv() failure
25249 2008-03-28 Chris Toshok <toshok@ximian.com>
25251 * animation.cpp, animation.h: remove Storyboard::FindSurface -
25252 EventObject::GetSurface() always returns the right thing.
25253 Override SetSurface to check whether we're being detached from or
25254 attached to a surface, and pause or resume the clock in response.
25255 This fixes some issues in storyboard_EnterLeaveSemantics.
25257 2008-03-28 Chris Toshok <toshok@ximian.com>
25259 * dependencyobject.h,
25260 dependencyobject.cpp (DependencyObject::SetSurface): new method,
25261 set the surface for all our DependencyObject subclassed property
25264 * collection.h, collection.cpp (Collection::Add): SetSurface work.
25265 (Collection::Insert): same.
25266 (Collection::SetVal): same.
25267 (Collection::Remove): same.
25268 (Collection::RemoveAt): same.
25269 (Collection::Clear): same.
25270 (Collection::SetSurface): new method, iterate over all children
25271 setting the surface.
25272 (VisualCollection): remove surface logic here.
25273 (VisualCollection::VisualAdded): same.
25274 (VisualCollection::VisualRemoved): same.
25276 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25278 * mplayer.cpp: Clear all queues after a seek has completed.
25280 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
25282 * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
25284 * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
25285 RemoveDir() rename.
25286 (create_unzipdir): Updated for MakeTempDir() rename.
25288 * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
25289 be more consistent with moonlight API naming convensions.
25290 (RemoveDir): Renamed from moon_rmdir().
25291 (CopyFileTo): Renamed from moon_copy_file()
25293 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25295 * debug.cpp: Fix warning.
25297 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25299 * clock.cpp: Fixing the clock repeat for duration-based
25302 Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
25303 passing now (same behavior as in SL).
25305 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25307 * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
25308 the bound decrease the repeat_count no matter what (if auto-reversed or
25309 not). This makes the auto-reversed storyboard work.
25311 Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
25314 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25316 * animation.cpp: Teardown the storyboard in Completed only if the root
25317 clock is stopped AND all the children are stopped too. After teardown we
25318 loose the ability to reset-back the values and Completed is
25319 fired always, even if the clock is filling (a filling clock should reset
25322 This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
25323 the popular methodology of beginning a filling Storyboard on MouseEnter
25324 and stopping it on MouseLeave.
25326 2008-03-27 Michael Dominic K. <mdk@mdk.am>
25328 * runtime.cpp: Ignore the enter/leave crossing events coming as a
25329 result of grab/press started/finished.
25331 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25333 * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
25334 MediaPlayer changes.
25335 * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
25336 private, and add public accessors when required. Remove all boolean
25337 fields and add a single bit/state field with its corresponding enum and
25338 public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
25339 no longer used. Removed unused defines. Made video and audio structures
25340 nested inside MediaPlayer instead of pointers (and queue inside
25341 video/audio), avoids pointer accesses and additional malloc/frees, since
25342 they were always created anyways. Don't seek to anywhere in Stop if
25343 we're stopping because we're closing, since it may cause crashes if
25344 we're closing because the MediaElement is being destructed (it may cause
25345 the MediaElement to be resurrected). Made public methods private
25348 2008-03-28 Fernando Herrera <fherrera@novell.com>
25350 * asf/asf.cpp: Use the pts == 0 optimization before trying to
25354 * downloader.h: Add functions to allow request a remote postition.
25359 * pipeline.h: Implement SeekToPts for mms:// sources.
25361 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25363 * dependencyobject.h: Detect an unrecoverable error condition with
25364 refcounting (reffing an object with refcount of 0), and abort instead of
25365 crashing randomly and insecurely later on.
25367 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25369 * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
25371 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
25373 * downloader.cpp (Downloader::GetResponseText): Use the new
25376 * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
25379 * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
25380 sure to exit the loop ;-)
25382 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
25384 * xaml.cpp (xaml_create_from_file): Use the new TextStream class
25385 instead of doing things the hard way. Might be more performant,
25386 definitely won't malloc/free nearly as much. Also fixed a bug
25387 where leading lwsp might be larger than our read buffer.
25389 * utils.cpp (TextStream): New class for reading text input
25390 streams, converting them to UTF-8 as they are read.
25392 * downloader.cpp (Downloader::Send): Handle the case where the
25393 attached surface is NULL.
25394 (Downloader::GetResponseText): Handle zero-length files. Also,
25395 nul-terminate the returned buffer (which is now a char* rather
25396 than a void*) since it is clear that the javascript expects to be
25397 able to use this value as a string buffer.
25399 2008-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
25401 * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
25402 requested to play audio. Don't hold the lock when polling.
25404 2008-03-26 Jeffrey Stedfast <fejj@novell.com>
25406 * downloader.cpp (Downloader::SendInternal): New method that is
25407 basically the same as the old ::Send().
25408 (Downloader::Send): Queue the SendInternal() call via
25409 TimeManager's TickCall API.
25411 2008-03-26 Chris Toshok <toshok@ximian.com>
25413 * dependencyobject.h, dependencyobject.cpp (class EventObject):
25414 add RemoveMatchingHandlers variants that let you pass in a
25415 predicate to test event handlers with.
25417 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25419 * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
25420 changes. Added a MemoryStream.
25422 * media.cpp: Updated according to API changes.
25424 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25426 * mplayer.cpp, mplayer.h: Add a new state to the audio:
25427 WaitingForData, in which case we don't poll on that audio
25428 node (since the hardware will just tell us it's ready to recieve
25429 data). Fixes audio using 100% cpu after when it runs out of
25430 data (either because of network hiccup or the stream finished).
25432 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25434 * pipeline.cpp, mplayer.cpp, pipeline.h: Made
25435 IMediaStream::selected private and add accessors.
25437 2008-03-26 Stephane Delcroix <sdelcroix@novell.com>
25440 * shape.cpp: set the dash caps for all the shapes, draw start/end caps
25441 on line and polylines.
25443 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25445 * mplayer.cpp: Remove unused fields.
25447 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25449 * debug.cpp: Correctly compute base addresses of libraries, and use a
25450 thread-safe version of strtok.
25452 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25454 * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
25455 - it's now necessary to explicitly disable it in order to get rid of it
25456 instead of relying on a default flag to have the right value in order to
25457 get it. Makes video work with mopen again.
25459 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25461 * pipeline.cpp: Fix a crash.
25463 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25465 * mplayer.cpp: Remove Instance (), it's redundant.
25466 * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
25467 everything in the audio player with one semaphore, it simplifies things
25468 and removes a couple of problems helgrind found.
25469 * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
25470 audio player as well. Use delayed unreffing in destructors which may be
25471 called on worker threads.
25473 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
25475 * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
25476 * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
25477 thread-safe and making it thread-safe isn't worth it. Also use a pthread
25478 mutex instead of a glib mutex, since helgrind reports a lot of false
25479 positives for glib mutexes. Hold the mutex for the smallest amount of
25480 time possible, making it unnecessary to use a recursive mutex.
25482 2008-03-26 Michael Dominic K. <mdk@mdk.am>
25484 * shape.cpp: Reverting the clip changes, it was bolox.
25486 2008-03-25 Jeffrey Stedfast <fejj@novell.com>
25488 * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
25489 the assert - it was only needed during implementation to make sure
25490 the bsearch worked correctly.
25491 (Mp3FrameReader::Seek): Same.
25493 2008-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
25495 * media.cpp: Don't access any TimeManager instance from another thread, just
25496 call the static TimeManager::InvokeOnMainThread.
25498 2008-03-25 Michael Dominic K. <mdk@mdk.am>
25500 * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
25501 if Width/Height was specified. Fixes a bogus warning about infinity
25504 2008-03-25 Michael Dominic K. <mdk@mdk.am>
25506 * src/shape.cpp: When setting the clipping for the shape also include
25507 the transformations coming from stretching. This fixes
25508 test-shape-line-stretch3 test and the missing stripes on Silverlight
25511 2008-03-24 Chris Toshok <toshok@ximian.com>
25513 * runtime.h (class Surface): add
25514 Surface::PropagateDirtyFlagToChildren.
25516 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
25517 duplicated code out of ProcessDownDirtyElements.
25519 2008-03-24 Chris Toshok <toshok@ximian.com>
25521 * panel.cpp (Panel::FrontToBack): remove the tree walking
25522 code (where we walked up the hierarchy looking for cases where we
25523 shouldn't subtract.) Instead, we always subtract if the local
25524 state says we can. Instead of forcing all leaf elements to walk
25525 up to their parent panel, we assume they'll operate on local state
25526 as well, and give them a copy of the region to subtract their
25527 bounds from, instead of the real region. We are sneaky.
25529 * uielement.cpp (UIElement::FrontToBack): Operate on our local
25530 state only, no walking up the tree.
25532 2008-03-24 Jeffrey Stedfast <fejj@novell.com>
25534 * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
25535 was seemingly getting layer 1 and layer 2 backwards.
25536 (mpeg_frame_length): Seems like we are never supposed to add 2
25537 bytes for 16bit crc?
25539 * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
25540 then don't bother applying kerning. Fixes 2 cases in
25541 LineBreakClasses.htm
25542 (TextLayout::LayoutWrap): Disable breaking after a
25543 G_UNICODE_BREAK_AFTER if we can break before the word as this
25544 seems to fix the last test case in LineBreakBasic1.htm
25545 (TextLayout::LayoutWrap): Reverted a fix that introduced a
25546 regression but didn't fix any known test cases.
25548 2008-03-21 Michael Dominic K. <mdk@mdk.am>
25550 * src/runtime.cpp: When calling gdk_window_get_pointer in
25551 motion_notify_ to pop more hints actually use the results as they're
25552 more valid than x,y in the event passed. Without doing so, we're not
25553 getting the last mouse coords.
25555 Fixes the nasty problem that MouseEnter/Leave is not called once in a
25558 2008-03-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
25560 * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
25561 MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
25562 with EventObject::GetSurface.
25564 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
25566 * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
25569 * text.cpp (deobfuscate_font): New helper function used by
25570 TextBlock and Glyphs.
25571 (TextBlock::DownloaderComplete): Check for obfuscated fonts.
25572 (Glyphs::DownloaderComplete): Same.
25574 * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
25575 GUID from a string.
25576 (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
25577 (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
25578 since we no longer get passed zip files. Instead of extracting
25579 fonts from a zip archive, we now index the fonts in the
25580 directory (if they haven't already been indexed) and then try to
25581 find the best matching font from the indexed fonts.
25582 (IndexFontDirectory): New function to index all fonts in a
25583 directory (and all subdirs).
25584 (TextFont::TextFont): Changed for other API changes.
25586 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
25588 * downloader.cpp (Downloader::IsDeobfuscated)
25589 (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
25590 Some new methods for replacing the original downloaded file with
25591 another tmp file that will need to be unlinked when the downloader
25592 is destroyed or a new file is requested.
25594 * utils.cpp (moon_copy_file): New convenience function.
25596 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
25598 * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
25599 and unzipped state variables. Get rid of part_hash, no longer
25601 (Downloader::CleanupUnzipDir): New method to cleanup the files
25602 extracted from any zip files we downloaded.
25603 (Downloader): Call CleanupUnzipDir ().
25604 (Downloader::GetDownloadedFile): New method that gets the original
25605 untouched downloaded file path.
25606 (Downloader::DownloadedFileIsZipped): New method to check to see
25607 if the downloaded file is a zip archive.
25608 (Downloader::GetDownloadedFilePart): A new method that replaces
25609 the old GetResponseFile() API, behaves the same as the old API.
25610 (Downloader::GetUnzippedPath): New method to get the unzip
25611 directory path (and unzip the downloaded file if it hasn't already
25613 (Downloader::Open): Cleanup any extracted zip files.
25615 * utils.cpp (moon_rmdir): New convenience function.
25617 2008-03-20 Larry Ewing <lewing@novell.com>
25619 * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
25620 the surface first so that the changes to the properties cause
25623 2008-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
25625 * src.mdp: Added new files.
25627 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
25629 * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
25631 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
25633 * pipeline.h: Added two more error conditions.
25635 2008-03-19 Jeffrey Stedfast <fejj@novell.com>
25637 * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
25638 caching glyphs. Try to take full advantage of the pre-allocated
25639 glyphs array before clobbering previously loaded glyphs.
25641 2008-03-19 Michael Dominic K. <mdk@mdk.am>
25643 * src/dependencyobject.cpp: Making the prop resolving a bit more
25644 gracefull (smart) in case of common mistakes.
25646 Solves test-crash-gracefull-prop-resolving.xaml.
25648 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
25650 * pipeline.cpp: We need to unlock the mutex before joining the
25651 thread. Fixes a dead-lock.
25653 2008-03-19 Geoff Norton <gnorton@novell.com>
25655 * yuv-converter.cpp: Use xmm0 to store a load value to avoid a
25658 2008-03-19 Geoff Norton <gnorton@novell.com>
25660 * yuv-converter.cpp: More 64-bit fixes
25662 2008-03-19 Geoff Norton <gnorton@novell.com>
25664 * yuv-converter.cpp: Fix the test/cmp on x86-64
25666 2008-03-18 Geoff Norton <gnorton@novell.com>
25668 * yuv-converter.cpp: Fold RESTORE_COLOR_MODIFIERS into
25669 CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
25670 gcc. The aligned load/store version of CALC_COLOR_MODIFIERS was
25671 clobbering (x)mm3 (green coefficient) when processing the high order
25672 pels. I've reordered the method to remove some useless load/calc
25673 patterns that were there simply for readability and fixed the
25676 2008-03-18 Jeffrey Stedfast <fejj@novell.com>
25678 * font.cpp (TextFontDescription::CreatePattern): Always return the
25680 (TextFont::Load): No longer takes a fromFile argument.
25681 (TextFont::TextFont): Cache using the original pattern (which is
25682 what we really wanted to do originally, but were caching the
25683 "closest-match" pattern before which was wrong).
25684 (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
25685 FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
25686 wrapper API that is unnecessary.
25687 (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
25689 2008-03-18 Geoff Norton <gnorton@novell.com>
25691 * yuv-converter.cpp: 768bits != 768bytes. Implement prefetching the
25692 cache lines for the Y plane.
25694 2008-03-18 Andrew Jorgensen <ajorgensen@novell.com>
25696 * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
25697 * plugin-ffmpeg.h: Fix conditional swscale inclusion
25699 2008-03-18 Michael Dominic K. <mdk@mdk.am>
25702 * animation.h: Adding a new virtual method GetValueKind to Animation
25703 that returns the kind/type of values that given animation generates
25704 (doubles, points, etc.).
25706 Modyfying the HookupStorage to check if the animation type matches the
25707 type that the animated property expects. If it doesn't, bail out with a
25708 helpfull warning in the style of:
25710 "Ellipse.Fill property value type is 'Brush' but animation type is
25713 This fixes a crash in test-crash-color-anim-on-solid.xaml and all
25714 crashes where we try to animate ie. a color property using doubles.
25716 2008-03-18 Michael Dominic K. <mdk@mdk.am>
25718 * animation.cpp: Even more smoothing for KeySpline.
25720 2008-03-18 Michael Dominic K. <mdk@mdk.am>
25722 * dependencyobject.cpp: Enabling back the inheritance test for property
25723 resolving but only when dealing with non-attached properties.
25725 2008-03-17 Geoff Norton <gnorton@novell.com>
25728 * pipeline-ffmpeg.cpp:
25729 * pipeline-ffmpeg.h:
25730 * swscale-converter.cpp:
25731 * swscale-converter.h: Refactor the swscale based yuv2rgb converter
25732 out to a seperate file so it can be included optionally in the build.
25734 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
25736 * mplayer.cpp: Show error message, not only error number, upon thread
25739 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
25741 * playlist.cpp, playlist.h: Add a way to determine if the playlist was
25742 created to play a single file, or if it was created from an asx file
25745 2008-03-17 Chris Toshok <toshok@ximian.com>
25747 * dependencyobject.cpp (EventObject::EventObject): reorder things
25750 2008-03-17 Geoff Norton <gnorton@novell.com>
25752 * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
25753 for locals. Use posix_memalign and share the instance for the
25754 lifespan of the converter.
25756 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
25758 * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
25759 index argument, apparently FreeType2 always set face->face_index
25760 to 0 for these type fonts, so don't rely on it being accurate.
25761 (FontPack::CacheFileInfo): Pass the index value as an argument to
25762 FontPackFileFace's ctor.
25763 (TextFont::TextFont): Do hash lookups based on the matched
25764 pattern, not the original pattern passed in.
25766 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
25768 * text.h: Added #include "layout.h"
25770 * font.cpp: Removed font.cpp's layout logic which has been
25771 rewritten in layout.cpp.
25772 (TextFont::HasGlyph): It seems that Silverlight may wrap text
25773 differently depending on whether the glyph is in the font?
25775 * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
25777 2008-03-17 Geoff Norton <gnorton@novell.com>
25779 * yuv-converter.cpp: Ensure that our pointer alignment checks are
25782 2008-03-17 Michael Dominic K. <mdk@mdk.am>
25784 * animation.cpp: Interpolate linearly between keyspline values. This
25785 fixes the jags in test-animation-slow-keyspline.xaml.
25787 2008-03-17 Michael Dominic K. <mdk@mdk.am>
25789 * animation.cpp: Fixes to the way we generate the KeySpline values to be
25790 more smooth an precise.
25792 2008-03-17 Larry Ewing <lewing@novell.com>
25794 * runtime.cpp: go ahead and invalidate the toplevel before
25795 cleaning everything up. remove the disconnect call in
25796 DestroyWidget, all the handlers should be ok with getting called
25797 on fullscreen or the normal widget.
25799 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25801 * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
25802 line breaking logic.
25804 2008-03-14 Geoff Norton <gnorton@novell.com>
25806 * yuv-converter.cpp: Remove some dead code.
25808 2008-03-14 Geoff Norton <gnorton@novell.com>
25810 * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte
25811 bounary. Each pel will expand to 4 bytes. Since we process 16
25812 pels at a time in SSE2 we need 64 output bytes per iteration.
25814 * yuv-converter.cpp: Remove the rest of the unaligned move/stores
25816 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
25818 * xaml.cpp: (flush_char_data) free data inside GString since the
25819 Value constructed around it creates it's own copy.
25821 2008-03-14 Geoff Norton <gnorton@novell.com>
25823 * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
25824 to get a 16byte alignment for SSE2.
25825 * yuv-converter.cpp: Remove most of our unaligned load/stores.
25827 2008-03-14 Larry Ewing <lewing@novell.com>
25831 * eventargs.h, enventargs.cpp:
25832 * type.h, type.cpp: make EventArgs a subclass of DependencyObject
25833 and all that entails. Still need to look over the properties.
25835 * runtime.cpp, runtime.h: expose EmitError for now.
25837 2008-03-14 Larry Ewing <lewing@novell.com>
25839 * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
25840 with a a 16bit alignment for the yuv converter.
25842 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
25844 * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's
25845 own copy of the message.
25847 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25849 * font.cpp (TextRun::TextRun): Can't drop non-printable chars
25850 because soft-hyphen is apparently non-printable.
25852 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25854 * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
25855 happen now if the glyph does not exist in the font).
25856 (Glyphs::Render): Same.
25858 * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
25859 which takes a unichar and index. This is now the main
25860 implementation that the other GetGlyphInfo() and
25861 GetGlyphInfoByIndex() use. The glyph table is now indexed by index
25862 rather than unichar.
25864 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
25866 * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
25867 without a specified index, these are ok.
25869 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25871 * brush.cpp: In ImageBrush, if the image has not been downloaded
25872 yet, draw nothing like SL does -- instead of the grayish shadow.
25874 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25876 * dependencyobject.cpp: Check the types of objects when
25877 resolving_property_paths and some more verbosity to the error
25878 reporting. Now test-crash-non-existing-animation-target-prop3
25879 fails with the proper warning.
25881 Also, terminate first on first error found.
25883 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25885 * dependencyobject.cpp: Even more verbose error reporting in the
25886 resolve_property_path ().
25888 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25890 * animation.cpp: Making the warning report proper error when can't
25891 resolve property on object. Now we're getting:
25894 (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
25895 on object ball, which has type Ellipse!"
25897 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25899 * animation.cpp: Check correctly if we have object and property
25900 before trying to hookup storage.
25902 Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
25903 but the warning message is still incorrect:
25905 "No object named ball!"
25907 The object named "ball" exists but it doesn't have the requested
25910 2008-03-14 Michael Dominic K. <mdk@mdk.am>
25912 * animation.cpp: Changing few printf's to g_warnings.
25914 2008-03-14 Stephane Delcroix <sdelcroix@novell.com>
25916 * shape.cpp: Deal with different [start|end|dash] caps for lines
25919 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
25921 * mplayer.cpp: Comment out printf.
25923 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
25925 * mplayer.cpp: AudioNode::Play: property calculate the delay between the
25926 play position in the hardware and the pts we just sent to alsa, and
25927 subtract it from that pts.
25929 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
25931 * clock.cpp: use a monotonic clock if available to avoid issues with
25932 the system time changing.
25934 2008-03-13 Jeffrey Stedfast <fejj@novell.com>
25936 * layout.cpp (TextRun::TextRun): Don't drop non-printable
25937 chars... somehow soft-hyphen (0xAD) is non-printable according to
25938 glib and so breaks the LineBreakBasic1.htm test.
25939 (TextLayout::LayoutNoWrap): Keep appending words to the line until
25940 a line ends beyond max_width, we don't care where it begins (it
25941 could begin way beyond max_width for all we care).
25943 2008-03-13 Chris Toshok <toshok@ximian.com>
25945 * text.cpp (~Glyphs): don't unref the fill, since we don't take a
25948 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25950 * mplayer.cpp: Make this build on SLED until I find a proper workaround.
25952 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25954 * media.cpp: Update according to MediaPlayer changes.
25956 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25958 * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
25959 thread. Fixes #326902.
25961 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25963 * Makefile.am: Set our G_LOG_DOMAIN.
25965 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25967 * xaml.cpp: default_create_element_instance: Set the surface as soon as
25970 2008-03-13 Michael Dominic K. <mdk@mdk.am>
25972 * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
25973 behavior. When getting the keyframe for time additionally crawl back (if
25974 needed) to find the last non-null keyframe and non-null previous
25975 keyframe. By doing so we silently ignore the frames without values set
25976 and don't crash on nullable types.
25978 Fixes the crash in AnimationMatrix2.html/xaml and in the
25979 test-animation-null-keyframe.xaml test.
25981 Remving the XXX warnings about nullabled types from file since they
25982 don't apply anymore.
25984 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
25986 * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
25987 Visual, we're already storing the surface in the EventObject.
25988 * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
25989 and comment out the warning, since with the current code it's entirely
25990 possible to unref a dependecyobject with no surface.
25992 2008-03-13 Stephane Delcroix <sdelcroix@novell.com>
25994 * brush.cpp: compute relative transform as it's done in SL. We used to
25995 derelativize transform to match the absolute ones. Now we map the brush
25996 to a 1x1 square, apply the transform, and unmap back. It simplify the
25997 computation a lot too. Fixes bnc #354892 and a bad gradient in
26000 2008-03-12 Chris Toshok <toshok@ximian.com>
26002 * media.cpp (expand_rgb_to_argb): use a different codepath if the
26003 rowstride isn't padded out to be divisible by 4 (or else we read
26004 off the end by a byte).
26006 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26008 * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
26010 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26012 * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
26013 * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
26014 pipeline correctly removes registered infos upon shutdown, so if we're
26015 initialized again we should also register again.
26016 * runtime.cpp: Call Media::Shutdown do shut down the media threads before
26017 doing anything else.
26019 2008-03-12 Jeffrey Stedfast <fejj@novell.com>
26021 * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
26023 * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
26024 TextRun's, if the Run contains \n's, break the text into
26025 non-linebreak and linebreak TextRun elements. Allows the
26026 TextLayout::Layout() logic to be simplified considerably.
26028 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26030 * dependencyobject.cpp: DependencyObject: Initialize our surface field to
26033 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26035 * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
26036 reporting so that the errors can easily be bubbled up the pipeline. Add
26037 a 'selected' field to IMediaStream, whether the media player is using
26038 that stream or not.
26039 * error.h: Add a MediaErrorEventArgs class.
26041 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26043 * pipeline.cpp: Propagate the surface from the media element to the media.
26045 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26047 * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
26048 IMediaStream, indicates whether the stream is being played or not.
26050 2008-03-12 Sebastien Pouliot <sebastien@ximian.com>
26052 * dependencyobject.cpp: Add NULL check in method
26053 RemovePropertyChangeListener since a bad XAML input can cause a
26054 NULL entry in the list.
26056 2008-03-12 Michael Dominic K. <mdk@mdk.am>
26060 * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
26062 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26064 * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
26065 don't crash, print an error message. Dup all strings put into
26066 namespace_map, and free them all upon its destruction.
26068 2008-03-11 Larry Ewing <lewing@novell.com>
26070 * collection.cpp (VisualCollection::VisualAdded): make sure we set
26071 the surface as the first step, dirty processing depends on it.
26072 Fixes OM_RemoveClearRemoveAt.htm regression.
26074 2008-03-11 Larry Ewing <lewing@novell.com>
26077 * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
26078 and Left when we are toplevel so that we can recompute our
26081 * uielement.cpp: if we don't have a parent call GetTransformFor on
26082 ourself so that Top and Left are taken into account on toplevel
26083 canvases. Fixes test-canvas-toplevel.xaml
26085 2008-03-11 Chris Toshok <toshok@ximian.com>
26087 * clock.h, clock.cpp: a few changes, the most important
26088 being (ifdefed for now) code to put the timemanager to sleep when
26089 it's not needed for animations, rendering, or tick calls. To do
26090 this we need a couple of changes to the clock code. 1) propagate
26091 the time_manager out to all clocks, so we can force it to tick the
26092 clock hierarchy the first time whenever a storyboard is started.
26093 2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
26094 in need of another tick." Do the same for the tick call stuff,
26095 where the bool return value means "we have more tick calls
26096 pending." Also, add a couple of methods to the
26097 TimeManager (NeedRedraw, NeedClockTick) which will start up the
26098 timemanager if it's asleep, and set the proper flag so it'll do
26099 the right work on the next tick.
26102 * uielement.cpp: notify the timemanager that we have a redraw to
26105 * runtime.cpp (Surface::realized_callback): tell the time manager
26106 to redraw us to get the process moving.
26108 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26110 * xaml.cpp: Work around the fact that it's not always safe to
26111 call some expat functions, like XML_GetCurrentLineNumber, if the
26112 parsing failed early.
26114 2008-03-11 Chris Toshok <toshok@ximian.com>
26116 * namescope.h, namescope.cpp: switch from reffing the objects to
26117 using the DestroyedEvent. Otherwise our toplevel canvas has a ref
26118 cycle with its namescope. Also, short circuit out if we're
26119 registering the same object twice. keeps us from having too many
26120 DestroyedEvents (since RemoveHandler only removes one).
26122 * dependencyobject.h, dependencyobject.cpp: move
26123 GetSurface/SetSurface to EventObject, and add unref_delayed as a
26124 method. If the event object has a surface associated with it, add
26125 it to the surface's pending list of unrefs. otherwise warn us and
26126 add it to the global list. The warnings should be fixed as the
26127 global list really should go away.
26129 Also, before we free a value, make sure to remove our handler and
26132 Also, get rid of OBJECT_TRACK_ID. use an environment variable for
26133 this. So if you compile with OBJECT_TRACKING on, nothing new
26134 happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
26135 variable to the id of the object you want to track. Makes the
26136 turnaround time a little quicker.
26138 shift some things around in the header file while I'm making this
26141 * runtime.h, runtime.cpp: move some more methods to the .cpp from
26142 the .h, and also add the per-surface pending unrefs list. This is
26143 basically a c&p of the global list from dependency.cpp.
26145 * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
26146 using EventObject's.
26148 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26150 * xaml.cpp: Add NULL check in dependency_object_add_child since
26151 parent->parent->item may be NULL in malformed XAML files.
26153 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26155 * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
26156 EstimatePtsPosition and remove the estimate parameter, it's never used.
26158 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26160 * runtime.cpp: No need to scream in printfs.
26162 2008-03-11 Jeffrey Stedfast <fejj@novell.com>
26164 * font.cpp (TextLayout::Layout): More fixes, this is getting
26167 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26169 * xaml.cpp: Avoid crashing if the PML does not start with a
26170 M(ove) instruction.
26172 2008-03-11 Michael Dominic K. <mdk@mdk.am>
26174 * src/: Moving implementations from .h to .cpp, leaving only
26175 setters/getters + simple constructors in .h.
26177 2008-03-11 Larry Ewing <lewing@novell.com>
26179 * xaml.cpp (dependency_object_set_property): throw an error if we
26180 get here without a DependencyObject. Fixes
26181 test-property-parsing.xaml
26183 2008-03-10 Larry Ewing <lewing@novell.com>
26186 * uielement.cpp: add more checks to the parent tree.
26188 2008-03-10 Chris Toshok <toshok@ximian.com>
26190 * dependencyobject.cpp (~DependencyObject): use
26191 g_hash_table_foreach_remove, so the dtor of one value can't access
26192 an already destroyed DO from another value.
26194 2008-03-10 Chris Toshok <toshok@ximian.com>
26196 * namescope.cpp: don't explicitly unref the object when removing
26197 it. instead use base_unref as the value-dtor for the GHashTable.
26198 This will cause unrefs when the hash table is destroyed in the
26199 dtor (a case we were missing before.)
26201 * collection.h, collection.cpp (class Collection): factor out the
26202 body of Collection::Clear into a non-virtual method that we can
26203 call from the dtor.
26205 2008-03-10 Larry Ewing <lewing@novell.com>
26208 * panel.cpp: make sure we don't subtract the region unless non of
26209 our anscestors have a slip mask. This should be implemented in a
26210 more efficient way.
26212 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26214 * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
26216 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26218 * dependencyobject.h, dependencyobject.cpp: Enable object counting when
26220 * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
26221 * pipeline.cpp: Remove printfs.
26223 2008-03-10 Larry Ewing <lewing@novell.com>
26226 * geometry.cpp: make IsBuilt check for actual path data as well
26227 then use it everywhere we need it. Invalidate the path if the
26228 figures change. Fixes test-transform-clip.htm.
26230 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26232 * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
26234 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26236 * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
26239 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26241 * media.cpp: Update according to pipeline changes. TryOpen: our
26242 downloaded_file field may change when we call MediaOpened, so save a
26243 local copy before calling MediaOpened. Unref our playlist upon
26245 * mplayer.cpp: Update according to changes in the pipeline.
26246 * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
26247 rest aren't used. Make the remaining method take the stream as a
26248 parameter, and the resulting frame will be put in the closure. Also
26249 handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
26250 case just try again with the next frame. Make MediaWork ref/unref the
26251 fields that can be ref counted.
26253 2008-03-10 Chris Toshok <toshok@ximian.com>
26255 [ Fixes bug #368460 ]
26256 * collection.cpp (Collection::SetVal): make sure to unregister the
26257 name of the object(s) we remove from the collection.
26258 (Collection::Remove): same.
26259 (Collection::RemoveAt): same.
26260 (Collection::Clear): same.
26262 * namescope.cpp (NameScope::RegisterName): ref the object.
26263 (NameScope::UnregisterName): unref the object.
26265 2008-03-10 Jeffrey Stedfast <fejj@novell.com>
26267 * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
26268 Silverlights TextWrapping="Wrap" bug where it doesn't ever break
26271 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
26273 * src.mdp: Updated.
26275 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
26277 * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
26278 * runtime.cpp: Use GetRefCount, not refcount.
26280 2008-03-10 Chris Toshok <toshok@ximian.com>
26282 * runtime.h, runtime.cpp: add surface_get_time_manager.
26284 * downloader.h, downloader.cpp: add downloader_get_surface.
26286 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26290 * shape.cpp: Making the shape-caching a runtime parameter
26291 (shapecache=yes). Turned off right now.
26293 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26295 * shape.cpp: Tiny refactoring to the surface-size calculation code.
26297 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26300 * shape.cpp: Adding functionality to limit the amount of caching
26301 happening on one surface. Currently set to ~6mb.
26303 2008-03-09 Larry Ewing <lewing@novell.com>
26305 * mplayer.cpp: fix another place that used the wrong stride.
26307 2008-03-09 Geoff Norton <gnorton@novell.com>
26309 * yuv-converter.cpp: Make sure we emms after finishing sse/mmx
26312 2008-03-09 Geoff Norton <gnorton@novell.com>
26314 * yuv-converter.cpp: Detect the CPU features at runtime. We
26315 should now be able to distribute a 32-bit SSE2/MMX build to
26316 non SSE2/MMX machines
26318 2008-03-09 Geoff Norton <gnorton@novell.com>
26320 * yuv-converter.cpp: Implement runtime fallbacks in the Convert
26321 function (TODO: Still need to runtime detect SSE2/MMX)
26323 2008-03-09 Larry Ewing <lewing@novell.com>
26325 * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
26327 2008-03-09 Larry Ewing <lewing@novell.com>
26329 * mplayer.cpp (MediaPlayer::Open): use the proper stride
26330 calculation functions.
26332 2008-03-08 Geoff Norton <gnorton@novell.com>
26334 * yuv-converter.cpp: Implement a SSE2 version of the YUV2RGB
26335 codepath along with some code cleanup. Still some more cleanup
26336 to do for runtime detection of CPU features.
26338 2008-03-08 Geoff Norton <gnorton@novell.com>
26340 * yuv-converter.cpp: Fix some erroneous math. U' != U.
26341 These coefficients are far more sane now and our lum change is
26342 reflected properly.
26344 2008-03-08 Chris Toshok <toshok@ximian.com>
26346 * clock.cpp (TimeManager::SourceTick): larry gets credit for
26347 spotting this problem and suggesting the fix. remove the
26348 hysteresis code, and *always* set a new timeout, based on what our
26349 idea of the timeout and the amount of time we spent rendering the
26350 previous frame. This smooths things out immensely, removes (for
26351 me) the animation stutters induced by audio in sprawl, and results
26352 in fewer dropped frames.
26354 2008-03-08 Geoff Norton <gnorton@novell.com>
26356 * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
26357 and b was pulling the wrong l/h value.
26359 2008-03-08 Chris Toshok <toshok@ximian.com>
26361 * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
26362 accessing dob->refcount.
26363 (Value::CreateUnref): same.
26365 * dependencyobject.h, dependency.cpp (class EventObject): reorder
26366 this class definition so that we don't have multiple
26367 public/protected/private areas. confusing as hell :) Also, move
26368 the implementations of the non-performance critical things into
26369 the .cpp file, as they were making the .h rather cluttered (ctor,
26370 dtor, weak ref/unref.) Lastly, make almost everything private
26371 instead of public (most importantly the refcount.)
26373 * debug.h, debug.cpp: random code cleanup. we don't need to be
26374 concerned with adding some additional stack methods to the plugin
26375 in the DEBUG case, so go ahead and just use DEBUG here instead of
26378 2008-03-08 Chris Toshok <toshok@ximian.com>
26380 * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
26381 extern guint32 moonlight_flags.
26383 * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
26384 converter, otherwise use ffmpeg.
26386 * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
26387 flags, and (my god) put the extern moonlight_flags here.
26389 * runtime.cpp: add yuv converter options. use
26390 MOONLIGHT_OVERRIDES=converter=yuv to enable it. default is
26391 "converter=ffmpeg".
26393 2008-03-08 Geoff Norton <gnorton@novell.com>
26395 * yuv-converter.cpp: Clear the mmx state when we're done
26396 processing. Fixes most problems on x86_32.
26398 2008-03-08 Geoff Norton <gnorton@novell.com>
26400 * pipeline.cpp: Disable YUV converter, its crashing on x86_32
26403 2008-03-08 Geoff Norton <gnorton@novell.com>
26405 * pipeline-ffmpeg.cpp: Dont register YUV converter here.
26406 * pipeline.cpp: Register YUV converter here.
26408 2008-03-08 Geoff Norton <gnorton@novell.com>
26410 * yuv-converter.cpp: Remove some code duplication and refactor
26411 to support register starved implementations.
26413 2008-03-08 Geoff Norton <gnorton@novell.com>
26415 * Makefile.am: Add yuv-converter.cpp to the build
26416 * yuv-conveter.*: Our YUV2RGB 420P converter. Replaces
26418 * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
26420 2008-03-08 Chris Toshok <toshok@ximian.com>
26422 * clock.h, clock.cpp, animation.cpp: a few clock related changes.
26424 1. Revert the change that uses "forward" to tell if we're moving
26425 forward or not. This isn't the only indicator, as a parent clock
26426 might be ticking backward, so we really do need to use "our_delta"
26428 2. Also, we need to not clamp the time of the clock (on either
26429 end) when we're filling, as if the parent's duration is longer
26430 than ours and they autoreverse, there needs to be some padding in
26431 the reverse direction before we start again.
26433 3. Only call ComputeBeginTime() on a newly created clock if the
26434 timeline has a begin time specified. Otherwise, use
26435 BeginOnTick/GetBeginOnTick to make it begin on the next tick.
26436 This fixes the chess animation breakage. The problem was caused
26437 by us computing the begin time immediately in Storyboard::Begin,
26438 which would calculate the clock's begin time relative to the
26439 *previous* tick. on the next tick, the clock was almost always at
26440 1.0 progress, which caused the animations to skip directly to the
26443 2008-03-08 Chris Toshok <toshok@ximian.com>
26445 * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
26446 dirty.cpp, dependencyobject.cpp: more assert removal. we can't
26447 assert in a plugin (even if people are running a debug build it's
26448 not exactly nice to bring down their browser.)
26450 2008-03-07 Chris Toshok <toshok@ximian.com>
26452 * value.cpp (Value::CreateUnrefPtr): don't assert here.
26453 (Value::CreateUnref): same.
26455 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
26457 * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
26458 it's not initialized, print a warning and re-initialize it.
26460 2008-03-08 Fernando Herrera <fherrera@novell.com>
26464 * playlist.h: Add support for ASX2 playlist files returned by
26465 mediaservers when requesting a mmsh file over plain http. Fixes
26466 http://channel9.msdn.com.
26468 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
26470 * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
26471 case-insensitively.
26473 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
26475 * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
26476 derived classes protected.
26477 * media.cpp: Update according to pipeline changes. TryOpen: our
26478 downloaded_file field may change when we call MediaOpened, so save a
26479 local copy before calling MediaOpened.
26481 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
26483 * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
26484 * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
26485 TimeManager instance to add the timeout to.
26487 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
26489 * downloader.cpp: Fix access to Status from JScript.
26491 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26493 * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
26496 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
26498 * brush.cpp: Fix default value for ColorInterpolationMode (js
26500 * parsertest.cpp: Adapt to API change.
26501 * xaml.cpp|h: Change value_from_str[_with_typename] to return a
26502 bool since NULL can be a valid Value in some cases (e.g. empty
26503 stuff that should not reset the DO default values).
26505 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26507 * mplayer.cpp: Add a null check before accessing any time managers.
26509 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26511 * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
26512 accessing the field.
26513 * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
26514 the field. Update according to pipeline changes.
26515 * mplayer.cpp, mplayer.h: Update according to pipeline changes.
26516 * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
26517 can be ref counted. Make MediaClosure more intelligent by ref/unreffing
26518 the context and media fields. All variations of MediaWork has a closure,
26519 so move the closure field out of the union. This simplifies
26520 Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
26521 not cause any reads/seeks which may block. Remove SetQueueCallback, the
26522 request takes a closure now. Implement an ASXDemuxer to read ASX files.
26523 * sizes.cpp: Updated.
26524 * playlist.h, playlist.cpp: First part of the new playlist support.
26526 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26528 * dependencyobject.cpp: Make the output in EventObject::Track print
26529 atomically. Really avoids a lot of confusion if several threads are
26530 printfing at the same time.
26532 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
26534 * debug.cpp: Add a couple of null checks.
26536 2008-03-06 Jeffrey Stedfast <fejj@novell.com>
26538 * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
26539 (TextLayout::Layout): Don't include trailing lwsp in the line
26540 width calculation unless it is the last line.
26541 (TextLayout::Layout): Don't include trailing empty lines in the
26542 height calculation.
26544 2008-03-06 Chris Toshok <toshok@ximian.com>
26546 * clock.h, clock.cpp: some changes to make TimeManager a
26547 per-surface item, instead of a singleton/global. The time manager
26548 creates a root clock group, just like Surface used to, which is
26549 the parent of all storyboards for a surface.
26551 * dirty.h, dirty.cpp: remove the method prototypes and globals -
26552 switch everything to be Surface:: methods.
26554 * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
26555 for the root clock, and create a TimeManager instead. Also, add
26556 the dirty methods/fields to Surface, even though the
26557 implementation still lives in dirty.cpp. Also, call
26558 toplevel->SetSurface(NULL) early in our dtor so that elements can
26559 react before, e.g., the time manager has been destroyed.
26561 * media.h, media.cpp: use the surface's TimeManager instead of a
26562 global one. Also override SetSurface so we can tell if we're
26563 losing access to it, and remove our timeout accordingly.
26565 * mplayer.cpp: use the media element's TimeManager.
26567 * visual.h, visual.cpp: add GetTimeManager() method, which just
26568 does GetSurface()->GetTimeManager().
26570 * dependencyobject.cpp (base_unref_delayed): as much as I hate to
26571 do this, use a g_idle instead of a tick call here, since we have
26572 no access to the surface.
26574 * animation.cpp (Storyboard::Begin): the surface no longer has the
26575 root clock group, the surface's TimeManager does.
26577 * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
26580 * uielement.h, uielement.cpp: translate global dirty calls into
26581 surface calls, and override SetSurface to remove ourselves from
26582 the dirty list if we're losing our surface.
26584 * eventargs.cpp: translate global dirty calls into surface calls.
26586 2008-03-06 Michael Dominic K. <mdk@mdk.am>
26588 * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
26589 child clocks. Othewise children always get a small delta and keep
26590 going beyond the parent Duration bounds. Fixes the contrained
26591 storyboard examples.
26593 Also making the forward/backward ComputeNewTime behavior depend on
26594 'forward' instead of out_delta (which can be 0 if hitting bounds).
26596 2008-03-06 Sebastien Pouliot <sebastien@ximian.com>
26598 * transform.cpp: Fix Matrix default values to match identity
26599 matrix (and fix one js unit test).
26601 2008-03-05 Larry Ewing <lewing@novell.com>
26603 * shape.cpp: drop the code that checks stretch when building the
26604 paths for polyline and polygon. Fix the condition for translation.
26606 2008-03-05 Larry Ewing <lewing@novell.com>
26609 * shape.cpp: refactor the stretch code slightly and fix the
26610 original stretch tests (that passed the harness but are clearly
26613 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26615 * media.h: Made destructors in objects deriving from EventObject protected,
26616 preventing 'delete obj' and stack-allocation for these objects.
26618 * playlist.cpp: Can't delete downloaders anymore, unref it.
26620 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26622 * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
26623 dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
26624 namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
26625 trigger.h, uielement.h, visual.h: Made destructors in objects deriving
26626 from EventObject protected, preventing 'delete obj' and stack-allocation
26628 * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
26629 * dirty.h: Added header.
26631 2008-03-05 Chris Toshok <toshok@ximian.com>
26633 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
26634 front-to-back rendering the default.
26636 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26638 * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
26639 trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
26640 media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
26641 runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
26642 calldata instead of a gpointer.
26643 * error.h: Added EventArgs, a base class for all *EventArgs.
26644 * collection.h: Make ChangeEventArgs inherit from EventArgs.
26645 * uielement.cpp: Create all *EventArgs on the heap and simply the code a
26647 * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
26648 * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
26649 *EventArgs. Added MarkerReachedEventArgs.
26650 * brush.cpp: Updated event handling to take an EventArgs* calldata instead
26651 of a gpointer. ~ImageBrush: don't delete, unref.
26653 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
26655 * value.cpp: Fix warning.
26657 2008-03-05 Larry Ewing <lewing@novell.com>
26659 * shape.cpp: Fix line, polyline and polygon to apply stretches
26660 properly (modulo pesimistic shape bounds bugs). Mostly fixes
26661 test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
26662 and test-shape-polygon-stretch2.xaml.
26664 * shape.h: move stretch transform out of Path and into Shape.
26667 * stylus.cpp: include the strokes in the subtree bounds so that we
26668 will get invalidations and update bounds when the collection
26669 changes. There are still potential bounds issues point changes,
26670 those are being looked into. Fixes invalidation issues in
26671 test-inkpresenter-position and test-inkpresenter-scale.
26673 2008-03-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
26675 * xaml.cpp: Add a null at the end of the namespace array.
26677 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
26679 * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
26680 white space into a simple space.
26681 (TextLayout::Layout): Treat embedded \n's as LineBreaks
26682 (TextLayout::Layout): When calculating the width of a line that
26683 ends in a space, don't include the width of the space char -
26684 Silverlight doesn't seem to.
26685 (TextLayout::Layout): Don't pad the height. Don't pad the width
26686 either, altho it seems like a padding of +2.0 is about right but
26687 ONLY if the text is in a canvas? See OMTextInline.htm's
26688 actualWidth/Height measurements as well as the out-of-tree
26691 * xaml.cpp (char_data_handler): Always create the GString cdata,
26692 we need to note leading lwsp which the old implementation didn't.
26693 (flush_char_data): Try to emulate Silverlight's chug/chomp
26694 behavior more closely.
26696 2008-03-05 Chris Toshok <toshok@ximian.com>
26698 * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
26699 to panel's OnSubPropertyChanged if we don't handle it.
26701 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
26702 make sure we don't call this method with NULL args. Also, remove
26703 larry's g_warning (which wasn't the case, i tested with sprawl!),
26704 and also remove the check for matching property/parent type for
26705 attached properties. this will break controls.
26707 * transform.h, transform.cpp: it used to be that logical parents
26708 of children could rely on OnSubPropertyChanged being invoked for
26709 any property change. This is no longer the case - the only
26710 instance where it still happens is if there's an attached property
26711 involved. All other cases have to use OnCollectionChanged. So,
26712 switch OnSubPropertyChanged to OnCollectionChanged here.
26714 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
26716 * text.cpp (TextBlock::OnCollectionChanged): We need to update
26717 bounds/text even if element_args is NULL (because adding/removing
26718 an item still changes our text).
26719 (Inline::OnPropertyChanged): Use args->new_value.
26721 2008-03-05 Chris Toshok <toshok@ximian.com>
26723 * transform.h, transform.cpp: remove
26724 TransformCollection::OnSubPropertyChanged. it was gumming up the
26727 2008-03-05 Larry Ewing <lewing@novell.com>
26729 * shape.cpp: disable the shape caching code for now unless
26730 USE_OPT_SHAPE_SURFACE_CACHING=1.
26732 2008-03-05 Michael Dominic K. <mdk@mdk.am>
26737 * xaml.cpp: Taking out all the enum->str (and vice versa) code from
26738 xaml.cpp and putting it into a new file -> enum.c + some utilities.
26740 The enum<->str code is not specific to xaml and is usefull from plugin as
26743 2008-03-05 Stephane Delcroix <sdelcroix@novell.com>
26745 * media.cpp: close the pixbuf_loader to load the small images too.
26747 2008-03-04 Chris Toshok <toshok@ximian.com>
26749 * runtime.cpp (Surface::expose_to_drawable): re-enable the
26750 clearing of the cairo surface, but only if we have a
26751 widget (i.e. not in the windowless plugin case.) Should fix
26752 translucent desklets without breaking the plugin.
26754 2008-03-04 Chris Toshok <toshok@ximian.com>
26756 [ rather large change, reworking much of the property change event
26757 system to be a little smaller api surface-wise, and also cleaning
26758 up uses of it to remove some of the accumulated cruft that we'd
26759 developed over the past 10 months.]
26761 * dependencyobject.h, dependencyobject.cpp: A few key changes:
26763 1. Attach -> AddPropertyChangeListener
26764 Detach -> RemovePropertyChangeListener
26765 NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
26767 This was done to remove the confusion between "attached"
26768 properties and our use of the word "attach" to mean "listen for
26769 property changes". Attached properties are those which
26770 implicitly notify the parent when they're changed.
26772 OnChildPropertyChanged is gone. Canvas (the only user of it)
26773 now uses OnSubPropertyChanged to deal with child property
26776 2. *PropertyChanged methods take a
26777 structure (PropertyChangedEventArgs) that contains the
26778 DependencyProperty, as well as the old and new values of it.
26779 This was to remove the need for almost every
26780 OnPropertyChangedMethod to immediately call GetValue on the
26781 property. Passing the old value requires changing the
26782 current_values hash to not have a value destructor, so we have
26783 to manually delete values again.
26785 3. Reordered the args for
26786 AddPropertyChangeListener/RemovePropertyChangeListener so that
26787 the listener comes first and the second arg defaults to NULL.
26788 Cleans up a bit of the use of this method globally.
26790 * animation.h, animation.cpp: track OnSubPropertyChanged changes.
26792 * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
26793 LinearGradientBrush::OnPropertyChanged,
26794 RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
26796 also lots of changes to use args->new_value instead of calling
26797 GetValue(property).
26799 Clear up confusion regarding the meaning of the property passed to
26800 AddPropertyChangeListener.
26802 * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
26803 OnSubPropertyChanged.
26805 * collection.h, collection.cpp (Node::Node): don't add parent as a
26806 listener for every property change here. We handle this
26807 specifically (and automatically) in
26808 DependencyObject::NotifyListenersOfPropertyChange, but only for
26809 attached properties.
26810 (Node::~Node): don't remove the listener here either.
26812 lots of tracking the DO api changes here too.
26814 * control.h, control.cpp: track On*PropertyChanged changes.
26816 * font.cpp: fix some warnings
26818 * frameworkelement.h, frameworkelement.cpp: track
26819 On*PropertyChanged changes.
26821 * geometry.h, geometry.cpp: track On*PropertyChanged changes.
26823 * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
26824 lot of the empty blocks here - there's nothing to do for these
26825 properties, so we might as well not bloat the code. Also, use
26826 new_value when we can.
26827 (Image::DownloaderComplete): add a (I hope) suitably nasty comment
26828 about calling brush->OnPropertyChanged directly. code shouldn't
26829 do this, we should figure out if we can just set the property, and
26830 if so, do that. otherwise something else is broken.
26831 (Image::OnPropertyChanged): use new_value where we can.
26833 * panel.h, panel.cpp: remove the cached background field. It
26834 wasn't used except to Attach/ref + Detach/unref it, and that's
26835 handled automatically by the DependencyProperty machinery.
26836 Otherwise just track the On*PropertyChanged api changes.
26838 * shape.h, shape.cpp: similarly, we don't need to ref/attach our
26839 cached stroke and fill fields. They're populated for us (and
26840 ref'ed/unref'ed as needed), so we don't need anything additional
26841 here. Use new_value instead of GetValue in OnPropertyChanged.
26842 Also, factor out some redundant code from all the subclass
26843 OnPropertyChanged methods that was nearly the same as the
26844 Shape::OnPropertyChanged code for it.
26846 * stylus.h, stylus.cpp: On*PropertyChanged api changes.
26848 * text.h, text.cpp: mostly On*PropertyChanged api changes, and
26849 lots of using new_value instead of GetValue, but also get rid of
26850 the cached TextBlock foreground instance field. It's easy enough
26851 to fetch when we need it in the ::Paint method, and the
26852 dependencyobject stuff already refs and attaches to it.
26854 * transform.h, transform.cpp: lots of On*PropertyChanged api
26855 changes, and using new_value instead of GetValue.
26857 * uielement.h, uielement.cpp: remove the cached opacityMask
26858 field (it wasn't used except for attach/detach, which is handled
26859 for us.) The usual On*PropertyChanged changes as well as using
26860 new_value instead of GetValue.
26862 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
26864 * xaml.cpp (style_simulations_map): There's only one
26865 StyleSimulation value, and that is None.
26867 * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
26868 width and the text is not part of the first run on a line, break
26869 at the beginning of the Run. This seems to be what Silverlight
26870 does in OMTextInline.htm.
26872 2008-03-04 Larry Ewing <lewing@novell.com>
26874 * eventargs.cpp: update the dirty list before trying calculating
26875 relative locations.
26877 * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
26878 here so that our hit testing has up to date bounds.
26881 * dirty.h: remove the prototypes for up/down since it isn't safe
26882 to split the up/down passes.
26884 * src/uielement.cpp: remove dirty processing.
26886 2008-03-04 Stephane Delcroix <sdelcroix@novell.com>
26888 * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
26889 create the pixbuf from a file, allowing partial rendering of broken
26890 imagefiles, like in Image.htm
26892 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
26894 * text.cpp (Inline::GetDefaultValue): Implemented.
26896 2008-03-04 Michael Dominic K. <mdk@mdk.am>
26898 * src/uielement.cpp: When calling uielement_transform_point, make sure our
26899 transforms are up-to-date (not dirty).
26901 Since we're updating the transform matrices only in the expose (dirty)
26902 callback it can happen that two ie. mouse events arrive before we get to
26903 the expose. If the first mouse event invalidated the transform and the
26904 second one relies on the transform (ie. tries to obtain relative mouse
26905 position) it'd get bogus values since the transform has not been
26908 Fixes the drag & drop behaviour in SL ink journal (the selection tool).
26911 2008-03-04 Michael Dominic K. <mdk@mdk.am>
26914 * src/dirty.h: Splitting the process_dirty_elements () into two individual
26915 chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
26916 process_dirty_elements () now calls both.
26918 The point here is that we need to process down dirty elements (call
26919 process_down_dirty_elements ()) from other contextes as well.
26921 2008-03-03 Larry Ewing <lewing@novell.com>
26923 * uielement.cpp: Call FullInvalidate when clip changes so that
26924 our subtree bounds are updated and invalidated. Make sure we
26925 don't reset the forced invalidate flag.
26927 * dirty.cpp: invalidate subtree bounds on forced invalidations.
26928 Fixes test-clip-invalid-update.htm.
26930 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26932 * text.cpp (TextBlock::GetText): New method to generate a string
26933 representing the Text property from the inlines.
26934 (TextBlock::SetText): New method (split out from the old
26935 ::SetValue code) to parse the newly set text string into a list of
26936 Inlines and update out InlinesProperty if changed. Returns whether
26937 or not the inlines property changed.
26938 (TextBlock::OnPropertyChanged): Call SetText() to update out
26939 Inlines if the TextProperty value was changed by an outside
26940 source. If the InlinesProperty was changed by an outside source,
26941 update our TextProperty.
26942 (TextBlock::OnCollectionChanged): Update our TextProperty if an
26943 Inline was added or removed or if a Run element had its
26944 TextProperty changed.
26946 2008-03-03 Chris Toshok <toshok@ximian.com>
26948 * animation.cpp: plug a memory leak in the 3
26949 UsingKeyFrames::GetCurrentValue methods.
26951 2008-03-03 Chris Toshok <toshok@ximian.com>
26953 * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
26954 return a cairo_matrix_t instead of a pointer to the
26955 internal (mutable) field, and update its only use.
26957 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26959 * media.cpp (media_element_get_audio_stream_index): Fixed to
26960 handle nullable value.
26961 (media_element_set_audio_stream_index): Same.
26962 (media_init): Register the AudioStreamIndex property as being
26964 (MediaElement::Reinitialize): Set the CurrentStateProperty to
26967 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
26969 * media.cpp (media_init): Register AudioStreamCount,
26970 BufferingProgress, CanPause, CanSeek, CurrentState,
26971 NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
26972 as being read-only.
26974 * text.cpp (text_init): Register ActualWidth and ActualHeight
26975 properties as ReadOnly.
26977 * transform.cpp (Matrix::GetValue): Removed.
26978 (Matrix::SetValue): Removed.
26979 (Matrix::OnPropertyChanged): Implemented.
26981 2008-03-01 Larry Ewing <lewing@novell.com>
26983 * shape.cpp (Shape::DoDraw): refactor slightly.
26985 * geometry.cpp: fix extents calculation when there is only a fill
26986 on the shape. Fixes test-path-stretch-fill-extents.xaml.
26988 * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
26989 negative widths or heights have no bounds.
26990 (Shape::DoDraw): Silence warning.
26992 2008-02-29 Larry Ewing <lewing@novell.com>
26994 * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
26995 match StretchAndShapes.xaml.
26997 * collection.cpp (VisualCollection::Remove): don't fire
26998 VisualRemoved unless we are going to actually remove the item.
26999 Fixes OM_RemoveClearRemoveAt.htm.
27001 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27003 * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
27004 the z_sorted array before sorting so that we can be sure the end
27005 result will be a stable sort.
27006 (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
27007 because we need to take index into account. Instead, grow our
27008 array and call ResortByZIndex().
27010 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27012 * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
27013 an even more fun memory corruption bug.
27015 2008-02-29 Larry Ewing <lewing@novell.com>
27018 src/frameworkelement.cpp:
27025 src/uielement.cpp: Fix Rect::Transform, replace all occurances of
27026 bounding_rect_for_transformed_rect with Rect::Transform.
27028 2008-02-29 Larry Ewing <lewing@novell.com>
27030 * geometry.cpp: apply transform to all bounds calculations. Fixes
27031 test-geometry-bounds.xaml.
27033 2008-02-29 Larry Ewing <lewing@novell.com>
27035 * geometry.cpp: Make sure geometry groups draw their children
27036 rather than just copying the paths so that local transforms are
27039 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27041 * text.cpp (TextBlock::GetValue): Fixed memory leak.
27043 * media.cpp (MediaElement::GetValue): Fixed compile warning.
27045 * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
27046 rather than calling inline_get_*() which use GetValue().
27048 * font.cpp (TextFont::TextFont): Don't let the underline thickness
27051 * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
27053 (DependencyObject::GetValue): Simplified.
27054 (DependencyObject::GetDefaultValue): New method to get the default
27055 value for a property (now used by GetValue()).
27057 2008-02-29 Larry Ewing <lewing@novell.com>
27059 * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
27060 transform into account when computing bounds. Fixes
27061 CGeometry_AddToRenderList.xaml
27063 2008-02-29 Larry Ewing <lewing@novell.com>
27066 * shape.cpp: export calc_line_bounds.
27068 * geometry.cpp: use calc_line_bounds from shape.h. Fixes bounds
27069 problems on Animation_TargetingAndHandoff.xaml.
27071 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
27073 * pipeline.cpp: Add a missing const modifier.
27075 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
27077 * mplayer.cpp: Use the first streams found in the media, not the last.
27079 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27081 * stylus.cpp: if there's an outline, draw a line of at least 2px.
27083 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27085 * brush.cpp: No longer ignore out-of-bounds offest in
27086 SetupGradient. Add the bounds stop with linearinterpolation
27087 between the nearest stop and the outofbounds one. Handle the
27088 degenerated case with only outofbounds stops.
27090 2008-02-28 Michael Dominic K. <mdk@mdk.am>
27092 * shape.cpp: Commenting a left-over debug g_warning.
27094 Additionally adding a protection against NULL in cache-size reporting (as
27095 experienced by rolf). However, if GetSurface () returns NULL in the Render
27096 callback... I guess we're screwed anyways.
27098 2008-02-28 Michael Dominic K. <mdk@mdk.am>
27101 * xaml.h: Adding convert_property_value_to_enum_str function to
27102 check/convert if the value for the given property can be represented by an
27105 It would be nicer to mover all the enums tables/resolving to a separate
27106 place in future instead of gluing it to xaml.cpp.
27108 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27110 * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
27113 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
27115 * text.cpp (Glyphs::Render): Use horiBearingX for the first char
27116 in the Glyphs string just like we do for TextBlock rendering.
27118 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
27120 Fixes the last remaining issue in the TextRegressions.htm test.
27122 * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
27123 non-autogenerated <Run>'s.
27125 * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
27126 from the TextBlock's Text property as being auto-generated.
27128 2008-02-27 Larry Ewing <lewing@novell.com>
27130 * shape.cpp: change the shape surface cache to cache in device
27131 coordinates and rework the candidate restrictions to reject
27132 huge shapes and allow scaled caches.
27134 2008-02-27 Larry Ewing <lewing@novell.com>
27136 * shape.cpp: center the filled image within the new bounds.
27138 2008-02-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
27140 * media.h, media.cpp: When a media is opened, seek to the current
27143 * value.cpp: ToString: Return 'NULL' if we're null.
27145 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27147 * src/animation.cpp: When storyboard is completed, Teardown the clocks
27148 only if we're realling stopping (not holding). Fixes the
27149 StoryBoard_ModifyProperty test.
27151 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27153 * clock.cpp: Make sure we actually hit the our_delta < 0 code
27154 path. Fixes the AutoReversed/Repeated animations.
27156 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27158 * shape.cpp: More cases to invalidate (free mem) of the surface cache.
27160 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
27162 * font.cpp (TextFont::TextFont): Precalculate underline position
27163 and thickness. Also, we need to adjust the position based on 1/2
27164 the underline thickness.
27165 (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
27166 (TextLayout::RenderLine): Same.
27168 2008-02-26 Chris Toshok <toshok@ximian.com>
27170 * runtime.cpp (runtime_cairo_create): take the visual too, so the
27171 plugin can send ours in - we can't rely on the pixmap having a
27172 visual associated with it, because it's initialized with the
27173 _foreign api which doesn't fill in the colormap. yay.
27174 (Surface::Surface): if we're windowless don't create the widget.
27175 also, init render/render_data and invalidate/invalidate_data to
27177 (Surface::ConnectEvents): exit early if we're windowless.
27178 (Surface::Invalidate): call through the invalidate function if
27179 there is one. otherwise, default behavior (if we have a widget).
27180 (Surface::Paint): exit early if no toplevel.
27181 (Surface::render_cb): call through the render function if there is
27183 (Surface::expose_to_drawable): this is most of the guts of
27184 expose_callback, changed to handle the case where we're already
27185 drawing to the backbuffer (in the windowless case) and therefore
27186 don't need the temporary pixmap. Also, commented out some code
27187 that clears the contents - do we actually need this? The comment
27188 for it is enormous...
27189 (Surface::expose_event_callback): just call expose_to_drawable
27190 with the widget's window.
27192 * runtime.h (class Surface): we need to make the gtk callbacks
27193 public since the plugin will be invoking them directly. Also,
27194 switch the event methods to returning bools, and add a new method
27195 called expose_to_drawable, so the plugin can direct rendering to a
27196 pixmap in the windowless case.
27198 * uielement.h, uielement.cpp: change all the Emit* methods to
27201 * dependencyobject.h, dependency.cpp: make EventObject::Emit
27202 return true if there were handlers for the event, and false
27205 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
27207 * text.cpp (TextBlock::TextBlock): Removed the useless
27208 text_block_set_text() call. This was just a broken hack meant to
27209 do what MDK's previous commit fixed the right way.
27211 * font.cpp (TextFont::UnderlinePosition): Fixed to take font
27212 y_scale metrics into consideration.
27213 (TextFont::UnderlineThickness): Same.
27215 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27217 * src/text.cpp: TextBlock when constructed by default has an empty
27218 Inlines collection instead of NULL. Along with all the previous
27219 commits fixes the OM_CreateAddInsert.htm test.
27221 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27223 * src/collection.cpp: Don't allow collection insert at negative
27226 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27228 * src/collection.cpp: Don't add the object to the collection if it
27229 already contains the object (return -1 instead).
27231 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27233 * src/animation.cpp:
27235 * src/collection.cpp:
27236 * src/collection.h: The "Add" method of collections returns int (index of
27237 the element added), not bool. As explained in:
27239 http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
27241 2008-02-25 Jeffrey Stedfast <fejj@novell.com>
27243 * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
27244 through FontConfig, we need to parse the font's family name to
27245 extract styleistic info so we can do proper font name matching and
27246 style matching (e.g. "Myriad Pro Cond Black Italic" should match
27247 "Myriad Pro, Condensed Black Italic").
27249 2008-02-25 Chris Toshok <toshok@ximian.com>
27251 * runtime.h, runtime.cpp: s/drawing_area/widget and
27252 s/DrawingArea/Widget
27256 2008-02-25 Michael Dominic K. <mdk@mdk.am>
27258 * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
27259 can be called on the element to give it a hint that it should free it's
27260 cache for the time being.
27262 * src/collection.cpp:
27264 * src/panel.h: Forward CacheInvalidateHint to all children.
27267 * src/shape.h: Destroy the surface and path cache when hinted.
27269 In total improves our memory usage with surface/path caching, ie. in the
27272 2008-02-22 Michael Dominic K. <mdk@mdk.am>
27277 * src/shape.h: Adding functionality to report the cache size usage. By
27278 default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on.
27280 2008-02-22 Michael Dominic K. <mdk@mdk.am>
27282 * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
27283 to expose a few more pixels but helps with surface caching.
27285 2008-02-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
27287 * downloader.cpp: downloader_get_response_file: remove any directory
27288 components from the part name, otherwise the creation of the tmp file
27289 fails. If we're aborted, don't call any callbacks.
27290 * media.cpp: If we have a downloader and SetSource is called with a new
27291 downloader, abort the previous download, not only unref it, otherwise
27292 our callbacks and events may still get called from the old downloader.
27294 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
27296 * font.cpp (TextFont::TextFont): Simplified the fallback code.
27298 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
27302 * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
27304 (Glyphs::Layout): Properly handle glyph clusters.
27305 (Glyphs::Render): Same.
27307 2008-02-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
27309 * media.cpp: When aborting a downloader, null out the write
27312 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27314 * src/clock.cpp: Emit the Completed event when Filling as
27315 well. Together with prev commit fixes: #359024 and #324935.
27317 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27319 * src/animation.cpp:
27320 * src/animation.h: Detach the AnimationStorage update handler from the
27321 clock when the clock is stopped -- prevents us from overriding the (just
27322 reset) base value with another update.
27324 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27326 * src/value.cpp: Implementing ToString () for DOUBLE.
27328 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27330 * src/color.cpp: A slightly more relaxed/tolerant way of parsing
27331 the colors... it's the web and it's broken by default. Fixes:
27332 #362287 (the US candidates website).
27334 2008-02-21 Stephane Delcroix <sdelcroix@novell.com>
27336 * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
27338 2008-02-20 Jeffrey Stedfast <fejj@novell.com>
27340 Fixes the TextBlockFontDownloads.htm test.
27342 * font.cpp (TextFontDescription::Set*): If the new value is not
27343 the same as the old, invalidate the loaded TextFont.
27344 (TextFont::TextFont): Always compare family names unless we're
27345 requesting the "Sans" (e.g. last) fallback font.
27346 (TextFont::TextFont): If the requested family name does not match
27347 the specified font file, fall back to a system font of the same
27348 name (we were doing this for zip archievs before, but not for
27349 specified ttf font files).
27351 * text.cpp (TextBlock::SetFontSource): If the downloader is null,
27352 set the font filename to null and invalidate the textblock.
27354 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
27356 * media.cpp: Add a printf to inform when we're trying to load an
27357 mms stream. Helps a lot when trying to identify sites depending
27358 on mms/streaming support.
27360 * runtime.cpp: Unref debug_selected_element upon
27361 destruction. Fixes a leak.
27363 2008-02-20 Michael Dominic K. <mdk@mdk.am>
27365 * src/shape.cpp: Fixing the shape caching to work also with
27366 Path/Geometry. Fixes: #362021.
27368 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
27370 * media.cpp: MediaElement/Image: Remove event handlers when we abort the
27371 downloader, otherwise the handlers might be called after we're
27374 2008-02-19 Jeffrey Stedfast <fejj@novell.com>
27376 * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
27377 know which, if any, parts of the URI to hide.
27378 (Uri::Parse): If we don't have a protocol, don't simply assume
27379 that the entire string is the filename. We might have a fragment
27380 attached, for example.
27382 * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
27383 get the font index (if a fragment is set). Also, use the parsed
27384 Uri's ::ToString() method to hide the fragment so that requesting
27385 the file actually works.
27386 (Glyphs::DownloaderComplete): Don't need to parse the URI here
27387 anymore, we've already got the index from OnPropertyChanged().
27389 2008-02-19 Jackson Harper <jackson@ximian.com>
27391 * xaml.cpp: Parser error if we can't find the owner type or
27392 property name when setting properties.
27394 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
27396 * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
27398 2008-02-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
27400 * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
27402 * media.cpp: Remove printf.
27404 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
27406 * moon-path.c: #if out moon_get_origin since it's not used
27407 anymore. Change cairo_path_display output to be easier to read
27408 with negative numbers.
27410 2008-02-18 Michael Dominic K. <mdk@mdk.am>
27413 * src/media.h: Load images slightly faster by skipping one pixbuf blit and
27414 doing the expansion + conversion in one step.
27416 Also fixing an ugly memory leak where all RGBA images loaded were leaked
27417 (two times in memory).
27419 2008-02-15 Michael Dominic K. <mdk@mdk.am>
27421 * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
27422 being called from a timeout (unprotected) and we're potentially calling
27423 gdk_ invalidation functions. I think it only matters (in this case)
27424 on non-X backends though.
27426 2008-02-15 Michael Dominic K. <mdk@mdk.am>
27428 * src/uielement.cpp: Moving the debug timers for rendering slightly and
27429 uncommenting them so that they work when TIMERS is enabled.
27431 2008-02-15 Michael Dominic K. <mdk@mdk.am>
27434 * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
27435 default) that changes your 'd' key into a special debug key. When pressed,
27436 a message is printed to the console (region start). When pressed again,
27437 another message is printed (region end). This is usefull to see what
27438 happens in a particular part of the program timeline (ie. after click).
27440 Makes sense obviously only with timers debugging on and stuff.
27442 2008-02-14 Michael Dominic K. <mdk@mdk.am>
27444 * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
27445 shows that SL runs by default at something around that. Also, with the
27446 recent fixes some sites are suffering from 24 (can run/look much better
27449 2008-02-14 Michael Dominic K. <mdk@mdk.am>
27452 * src/shape.h: Adding surface caching for shapes. The strategy
27453 is to cache big surfaces that have little transformations (such as
27454 ie. backgrounds, fade overlays, etc.). Improves performance greatly
27455 for many sites (ie. Showcase).
27457 2008-02-14 Michael Dominic K. <mdk@mdk.am>
27459 * src/uielement.cpp: Commenting out the timer in post-pre render as it's
27460 broken and blocks the compilation with timers on.
27462 2008-02-12 Michael Dominic K. <mdk@mdk.am>
27464 * src/animation.cpp:
27465 * src/animation.h: Massive fix for our KeySpline animation calculation
27466 routines (which were broken and giving wrong values). According to:
27468 http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
27470 "...think of the horizontal axis as the pace with which the interpolation
27471 proceeds along the timing interval. The vertical axis is the resulting
27472 value for the animation's progress, yielded by the function that underlies
27473 the keySplines property. Another way of describing this is that the
27474 horizontal axis is the input unit time for the interval, and the vertical
27475 axis is the output unit time."
27477 Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
27478 a little bit ugly -- we waste 256 bytes per KeySpline to store
27479 pre-calculated values in a lookup table. But maybe it's not soo bad, since
27480 balf function (from prev implementation) was coming up top in the
27483 The only other way I can (currently) think of would be to solve a cubic
27484 equation each time we poll the KeySpline for a value. That would be,
27485 however, a *massive* performance hit.
27487 Hence the lookup solution for now (note: the generation of the table is
27488 very fast, no cubics involved).
27490 2008-02-11 Michael Dominic K. <mdk@mdk.am>
27492 * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
27493 as it should... yes, our redraws are slow, but not *that* slow ;)
27495 2008-02-09 Michael Dominic K. <mdk@mdk.am>
27497 * src/mplayer.cpp: If we have no audio devices present in the system,
27498 launch a special audio loop variant to still read/fetch audio (and discard
27499 it) so that the video playback is not blocked. Fixes: #341835.
27501 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
27503 * font.cpp (TextFont::TextFont): If the loaded font's family_name
27504 doesn't match the requested family name, fall back to the default
27505 font (it means the requested font doesn't exist on the system).
27506 (TextLayout::Layout): Added a 'first_char' state variable that can
27507 be used to figure out if if the current char is the first char on
27508 a line. This is needed for the wrapping logic.
27510 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
27512 Fixes some text layout bugs in TextBlockFontFamilies.xaml
27514 * xaml.cpp (flush_char_data): Now takes a string 'next_element'
27515 argument rather than a bool 'start' argument so that we can make
27516 sure that the previous and next element types are <Run>'s because
27517 lwsp between a <LineBreak/> and a <Run> or a </Run> and a
27518 <LineBreak/> should be ignored. Also, never g_strchomp() this
27520 (start_element_handler): Pass the name of the next element to
27522 (end_element_handler): Pass NULL to flush_char_data() as the
27523 next_element argument.
27525 2008-02-08 Chris Toshok <toshok@ximian.com>
27527 * media.cpp (MediaElement::Render): reorder things so that we're
27528 calculating the brush pattern matrix with the snapped pixels.
27530 2008-02-08 Stephane Delcroix <sdelcroix@novell.com>
27532 * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
27534 2008-02-07 Chris Toshok <toshok@ximian.com>
27536 * media.cpp (MediaElement::Render): snap to the pixel grid if
27537 we're not rotated/skewed.
27539 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
27541 * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
27543 2008-02-07 Larry Ewing <lewing@novell.com>
27545 * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
27546 same as out of bounds stops.
27548 * shape.cpp: cache the results of CompouteShapeBounds in
27549 extents rect, use that value in GetSizeForBrush.
27551 2008-02-07 Jeffrey Stedfast <fejj@novell.com>
27553 Fixes a rendering glitch for xaml similar to:
27556 <Run FontStyle="Italic">This </Run>is Dodger Blue
27559 * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
27560 setting the value of a content_property (e.g. a Run).
27562 2008-02-07 Michael Dominic K. <mdk@mdk.am>
27564 * src/color.cpp: Added support to parse scRGB-style color specificators
27565 (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
27566 should produce accurate-enough colors for most uses.
27568 http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
27570 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
27572 * shape.cpp|h: Split ComputeBounds to avoid calling functions
27573 bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
27574 inside each shape. This will enable us to reuse the non-transformed
27575 value elsewhere too. This also fix (for me) the origin point that
27576 caused problems for some brushes. Started implementing methods
27577 ComputeLargestRectangle[Bounds] to optimize drawing.
27579 2008-02-06 Chris Toshok <toshok@ximian.com>
27581 * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
27582 want the untransformed size of the element. otherwise we end up
27583 with a pattern matrix that scales things too large given that
27584 we're also scaling the element. Fixes fullscreen mode in halo3
27585 and /fox video players (bug #335845).
27587 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27589 * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
27590 range, draw the current frame. If we're ahead of the range, do nothing
27591 (fixes some video/audio sync problems), and if we're behind drop frames.
27592 The range makes sure that we paint every frame even when the audio loop
27593 doesn't update the target pts as often as we're drawing video.
27595 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27597 * panel.cpp, runtime.cpp: Fix warnings.
27599 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27601 * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
27602 the entire loop, only when fetching packets. This allows packets to
27603 arrive from the pipeline while in the loop (especially noticable when
27604 decoding the video inside the loop).
27606 2008-02-06 Chris Toshok <toshok@ximian.com>
27608 * uielement.cpp (UIElement::FrontToBack): use the media state
27609 accessors, and don't exclude Buffering state - we could be
27610 buffering with a frame rendered.
27612 2008-02-06 Sebastien Pouliot <sebastien@ximian.com>
27614 * shape.cpp|h: Keep track if a rectangle has radii or not.
27615 * uielement.h: Add a flag for radii
27617 2008-02-06 Chris Toshok <toshok@ximian.com>
27619 * uielement.cpp (UIElement::FrontToBack): make sure
27620 media_element_get_current_state != NULL before we strcmp it.
27622 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27624 * src.mdp: Updated.
27626 2008-02-06 Stephane Delcroix <sdelcroix@novell.com>
27628 * brush.cpp: fix the radialgradientbrush setup.
27630 2008-02-05 Chris Toshok <toshok@ximian.com>
27632 * collection.cpp (Collection::EmitChanged): new method. Emit the
27633 Changed event and then call closure->OnCollectionChanged. Also
27634 replace all references to closure->OnCollectionChanged to
27637 * collection.h (class Collection): add ChangeEventArgs struct, and
27638 an EmitChanged method declaration.
27640 * type.h.in, type.cpp.in (Type::~Type): no need to free all the
27642 (Type::HideEvent): remove the event name from the hash so it's
27643 inaccessible from javascript.
27644 (Type::RegisterEvent): use g_hash_table_new_full so we can specify
27645 a destroy function for keys instead of doing the _foreach in the
27647 (types_init_manually): add the #if 0 here instead of type.cpp.
27649 (types_init_register_events): register a Changed event for
27652 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
27654 * downloader.cpp (Downloader::ll_downloader_get_response_file):
27655 Simplified by using the new ExtractFile utility function from
27658 * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
27660 * utils.cpp: New collection of utility functions.
27662 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
27664 * font.cpp: If a font is requested from a zip archive, extract the
27665 contents and try to figure out which font is the closest match to
27666 the one requested. Fixes bug #356044.
27668 2008-02-05 Chris Toshok <toshok@ximian.com>
27670 * uielement.cpp (UIElement::FrontToBack): enable the rectangle
27671 code, and make sure to round in the bounds we're subtracting.
27672 this was causing the flashing white border on silverlight.net/fox.
27674 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
27676 * shape.cpp: Use existing MIN macro. Use local variables when
27679 2008-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
27681 * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
27683 2008-02-05 Chris Toshok <toshok@ximian.com>
27685 * runtime.h, runtime.cpp: add support for a "selected" element
27686 when in debug mode. Also, make use of the Region methods instead
27687 of using region->gdkregion, which is private now.
27689 2008-02-05 Chris Toshok <toshok@ximian.com>
27691 * region.h, region.cpp (class Region): add Offset().
27693 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
27695 * geometry.cpp|h: PathGeometry does a Build (not a Draw) to
27696 populate it's moon_path (like others) so the data can always be
27698 * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
27699 from a moon_path (Stephane) and moon_merge to merge a subpath into
27702 2008-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
27704 * pipeline-ffmpeg.cpp: Remove another printf.
27706 2008-02-02 Jeffrey Stedfast <fejj@novell.com>
27708 * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
27710 (FileSource::Peek): Slightly better fix.
27712 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
27714 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
27715 estimate the stream position if not known rather than reading data
27716 to find out as we don't have to return an exact stream position.
27718 2008-02-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
27720 * pipeline.h: Update comment.
27722 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
27726 * shape.cpp: rename GetOringin into GetOriginPoint
27728 * brush.cpp: implement a bad origin computation (based on bounds)
27731 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
27733 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
27734 (FileSource::Peek): As before, only read as much as we need - but
27735 don't clobber what we had prebuffered, only clobber as much as w
27736 need to in order to make room for the new data - this way we make
27737 it more efficient to seek backward later (if need be).
27739 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
27742 * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
27743 from the path data instead of from bounds.
27745 * brush.cpp: translate the brushes with a translation matrix.
27747 2008-02-01 Larry Ewing <lewing@novell.com>
27749 * brush.cpp: Make sure we use the brush opacity when computing the
27752 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
27754 * pipeline.cpp (FindMpegHeader): Now checks for Xing and
27755 Fraunhofer VBRI headers.
27757 2008-01-31 Chris Toshok <toshok@ximian.com>
27759 * uielement.h: include region.h
27761 * point.h: don't assume the right headers have been included
27762 before this file - include glib.h to make sure
27763 G_BEGIN_DECLS/G_END_DECLS is there.
27765 * region.h, region.cpp: split out the region code from
27768 * rect.h, rect.cpp: remove region code.
27770 * Makefile.am: add region.h/region.cpp
27772 2008-01-31 Chris Toshok <toshok@ximian.com>
27774 * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
27775 use Region::Draw instead).
27777 * panel.cpp: remove references to runtime_cairo_region, and switch
27778 to the new Region* copy ctor. also, use Region::IsEmpty instead
27779 of gdk_region_empty.
27781 * uielement.cpp: more region cleanup, removing references to
27782 GdkRegion in favor of our Region class. Also, commit (ifdef'ed
27783 out until the rendering glitch is fixed) the rectangle back to
27784 front special case code.
27786 2008-01-31 Chris Toshok <toshok@ximian.com>
27788 * rect.cpp (Region::Region): new overload which takes a Region*,
27789 so we don't have to access ->gdkregion everywhere when we copy a
27792 * rect.h (struct Rect): add a GrowBy method that takes both x and
27793 y deltas, and have the 1 parameter version call it.
27794 (class Region): add a copy ctor that takes a Region*.
27796 2008-01-31 Chris Toshok <toshok@ximian.com>
27798 * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
27799 and add it to the class, protected so subclasses can get at it.
27801 * stylus.cpp (InkPresenter::PostRender): given the ordering
27802 required, we have to c&p some of Panel::PostRender here to render
27803 the children. Chaining up to Canvas::PostRender at the start of
27804 the method would have caused the translucency/opacity mask code in
27805 UIElement::PostRender to be executed *before* we rendered our
27808 2008-01-31 Chris Toshok <toshok@ximian.com>
27810 * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
27811 RenderChildren to this, and chain up to Canvas::PostRender here,
27812 which will do the RenderChildren call if it needs to.
27814 2008-01-31 Chris Toshok <toshok@ximian.com>
27816 * panel.cpp (Panel::FrontToBack): simplify this a bunch with
27819 * brush.h (class Brush): remove GetTotalOpacity() which wasn't
27820 being used anywhere, and add IsOpaque() so that we can use it from
27821 the new front-to-back stuff (instead of duplicating code in Panel
27822 and Shape handling parts).
27824 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27826 * media.cpp: Update.
27828 2008-01-31 Chris Toshok <toshok@ximian.com>
27830 * media.cpp (MediaElement::MediaElement): fix build.
27831 (Image::Image): fix initialization order to quiet g++.
27833 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27835 * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
27836 implemented again. Added an ugly caught_up_with_seek value, used to
27837 determine if video is late due to a seek, in which case it shouldn't
27838 show any frames (fixes #356053).
27839 * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
27841 * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
27842 HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
27843 * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
27846 2008-01-31 Jeffrey Stedfast <fejj@novell.com>
27848 * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
27850 (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
27851 having our caller re-parse the header.
27852 (Mp3Demuxer::ReadHeader): Updated.
27854 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27856 * brush.cpp: apply the correct offset to RadialGradientBrushes too.
27858 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
27860 * clock.h: Added macros to convert between pts, milliseconds and timespans.
27861 * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
27862 0). Use the new macros when converting between time formats. Remove the
27863 AdvanceFrame timeout upon reinitialization. Implement a better buffering
27864 algorithm (and honor the BufferingTime property).
27865 * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
27866 pipeline is now normalized to start at 0. Use the new macros when
27867 converting between time formats.
27868 * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
27869 start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
27870 estimate the position of a pts. ProgressiveSource::CancelWait: only
27871 cancel if we're waiting, and then wait until actually cancelled.
27873 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27876 * shape.h: GetOrigin for Polyline and Polygon
27878 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
27880 * uielement.h: add a GetOrigin ()
27883 * shape.h: implement GetOrigin for Path
27885 * brush.cpp: use GetOrigin as offset, fix the Crystal test.
27887 2008-01-30 Chris Toshok <toshok@ximian.com>
27889 * mplayer.h (class MediaPlayer): add rendered_frame.
27891 * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
27893 (MediaPlayer::Close): reset rendered_frame.
27894 (render_frame): set rendered_frame to true if we've successfully
27895 copied data into the video surface.
27897 * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
27898 to the pixbuf's has_alpha if USE_OPT_RGB24.
27900 * media.h (class Image): make the CachedSurface type and the
27901 instance field "surface" public, so the front to back stuff can
27902 get at it. Also, add "has_alpha" to it, since once the xlib
27903 surface has been created, we lose that information.
27905 * control.cpp (Control::FrontToBack): nothing to do but call
27906 FrontToBack on real_object.
27908 * control.h (class Control): add override for FrontToBack.
27910 * panel.cpp (Panel::FindStartingElement): get rid of this crap.
27911 it was broken and the wrong way to implement it.
27912 (Panel::Render): remove the RenderChildren call here, we do it in
27913 PostRender (and only if we're not rendering front to back)
27914 (Panel::PostRender): if we aren't rendering front to back, call
27916 (Panel::RenderChildren): remove references to FindStartingElement.
27917 (Panel::FrontToBack): this method is a little more complicated
27918 than UIElement::FrontToBack owing to the fact that we're
27919 flattening things to a list. We need to prepend a "cleanup node"
27920 first, before calling FrontToBack on our children, to do the
27921 Panel::PostRender stuff after our children have been rendered. We
27922 remove this cleanup node if none of the children have added
27923 themselves to the list, and our bounds (without the children)
27924 don't intersect the expose region. We apply the same logic to
27925 removing our rectangular bounds as the UIElement code does, but
27926 also have to take into account our background brush. We punt if
27927 any part of it is transparent, and only handle SolidColorBrush and
27928 GradientBrush subclasses.
27930 * panel.h (class Panel): override UIElement:: FrontToBack,
27931 PreRender, and PostRender.
27933 * uielement.cpp (UIElement::DoRender): factor out most of the guts
27934 of this method so it can be used in either front-to-back or
27935 back-to-front. Make sure to pass "false" as the front-to-back arg
27936 for PreRender and PostRender.
27937 (UIElement::FrontToBack): calculate the intersection of the expose
27938 region and our bounds. Add this region to the front of the render
27939 list, and then do some calculating to decide if we should remove
27940 it from consideration by elements lower than us in the display.
27941 Things like "are we opaque", "have we been rotated or skewed, such
27942 that our rectangular shape no longer fills the bounds entirely",
27943 stuff like that. We further limit subtracting in element type
27944 specific ways - right now just for MediaElement and Image with
27945 certain constraints (images can't have alpha, media elements must
27946 have a frame rendered, both types must fill their rectangle, etc).
27947 If everything passes, we remove our bounds from the expose region.
27948 (UIElement::PreRender): new method, do the things that DoRender
27949 used to do before calling Render.
27950 (UIElement::PostRender): new method, do the things that DoRender
27951 used to do after calling Render.
27953 * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
27954 so they can be used in panel.cpp. Also, add 3 new virtual
27955 methods (FrontToBack, PreRender, PostRender) as well as two
27956 callback methods to invoke the 2 latter ones.
27958 * runtime.cpp (overrides): add "render=ftb" and "render=btf"
27959 overrides (with btf the default) corresponding to
27960 RUNTIME_INIT_RENDER_FRONT_TO_BACK.
27961 (Surface::Paint): add support for front-to-back rendering. If
27962 it's enabled, make a FrontToBack pass on the fullscreen message
27963 and the toplevel element. This populates the render list with a
27964 back to front ordered list of elements to paint, along with the
27965 regions they need repainted. If the render list is empty for some
27966 reason (or if the user didn't select ftb rendering), we fall back
27967 to back to back-to-front rendering at the toplevel.
27968 (RenderNode::RenderNode): add ctor/dtor for RenderNode.
27970 * runtime.h: add the RenderNode class, used by the front to back
27973 * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
27976 2008-01-30 Jackson Harper <jackson@ximian.com>
27978 * xaml.cpp: Strip leading whitespace from xaml files.
27980 2008-01-30 Jackson Harper <jackson@ximian.com>
27982 * xaml.cpp: Handle more names for the default namespace.
27984 2008-01-30 Jackson Harper <jackson@ximian.com>
27986 * xaml.cpp: Add support for ucs4.
27988 2008-01-29 Jackson Harper <jackson@ximian.com>
27990 * xaml.cpp: pull in unistd.h
27992 2008-01-29 Jackson Harper <jackson@ximian.com>
27994 * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
27995 expat doesn't choke.
27997 2008-01-28 Chris Toshok <toshok@ximian.com>
27999 * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
28000 inplace, it returns the new rect.
28002 * uielement.cpp (UIElement::DoRender): same change.
28004 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
28006 * pipeline.cpp (FindMpegHeader): Validate that the sequence is
28007 actually an mpeg frame header by parsing it and calculating its'
28008 length and checking that another frame header starts where we
28010 (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
28013 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
28015 * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
28016 an MPEG sync header.
28017 (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
28018 IMediaSource's new GetSize() method to help calculate media
28019 duration as opposed to seeking to the end.
28021 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
28023 * media.cpp, media.h: Open the media async.
28024 * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
28026 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
28028 * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
28029 reached eof and couldn't advance.
28030 * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
28031 get while we're waiting for a seek to happen. Implement a better pause
28032 algorithm, the previous one was flawed and dead-locked once in a while.
28033 * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
28034 Create one frame reader for each stream.
28036 2008-01-27 Jeffrey Stedfast <fejj@novell.com>
28038 * media.cpp (MediaElement::UpdateProgress): Check (pos +
28039 buffering_size) > size, not < size. Duh.
28041 * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
28042 argument to use in place of media->GetSource().
28043 (Media::Open): Don't set this->source unless we successfully open
28046 2008-01-26 Jeffrey Stedfast <fejj@novell.com>
28048 * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
28049 set the state to Buffering so that calling Play() will actually
28050 start playing the media (if the file was local, then we'll be in
28051 the Opening state which means that calling Play() will only note
28052 that a Play action was requested, but won't actually play the
28054 (MediaElement::SetState): Don't check for downloaded_file == NULL,
28055 it might fail in the above case.
28057 2008-01-26 Jackson Harper <jackson@ximian.com>
28059 * xaml.cpp: Set the encoding when we are reading files also.
28061 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28063 * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
28064 greater than the current wait_pos.
28066 * media.cpp (UpdateProgress): Use the buffering_start position
28067 rather than the current write position to calculate buffer_size.
28069 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28071 * media.cpp (TryOpen): When download is complete and we
28072 successfully open the media, don't set the state to Paused - this
28073 breaks Halo3 if the video is cached.
28075 * media.cpp|h: Consolidated all of the bool state variables into a
28078 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28080 * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
28081 waiting for publicly available.
28082 * media.cpp: UpdateProgress: use the position the file is waiting for to
28083 calculate the buffer size (if it would exceed the default buffer size).
28085 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28087 * media.h: Add some descriptive comments.
28089 2008-01-25 Sebastien Pouliot <sebastien@ximian.com>
28091 * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
28092 instead of calling it since it can reduce some heavy cairo calls
28093 (cairo_in_*), if there's a clip, otherwise it won't affect
28096 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28098 * media.cpp: Initialize play_pending, and when buffering is
28099 finished, only play if autoplay or play_pending is true.
28101 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28103 * mplayer.cpp: Get rid of some unused variables and cleaned up
28106 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28108 * pipeline.cpp, media.cpp: More printfs removed.
28110 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28112 * src.mdp: Updated.
28114 * pipeline-ffmpeg.cpp: Commented out printf.
28116 * pipeline.h, pipeline.cpp: Removed some dead code. Made all
28117 interfaces inherit from IMediaObject, and put the media field
28118 there. Commented out printfs.
28120 * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
28121 simplify code a bit. Encapsulated target_pts handling into
28124 * media.h, media.cpp: Create one and only one MediaPlayer for the
28125 life-time of the MediaElement. If not AutoPlay is set, then pause
28128 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28130 * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
28131 usage, but on construction, and finish it upon destruction. Fixes race
28132 between creating and destructing the thread.
28134 2008-01-24 Chris Toshok <toshok@ximian.com>
28136 * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
28137 (calc_perpendicular_intersection_points): new method.
28138 (Stroke::HitTestSegmentSegment): use
28139 calc_perpendicular_intersection_points to give us the end points
28140 of the outer line segments, and use those for hit testing.
28142 2008-01-24 Jeffrey Stedfast <fejj@novell.com>
28144 * media.cpp (UpdateProgress): When switching to Buffering mode,
28145 save the position where we're currently at in the file so that we
28146 can use that as a reference point when calculating progress. Also,
28147 pause the MPlayer so that audio won't continue to play while we're
28148 waiting for buffering to complete. Fixes bug #356051.
28150 2008-01-24 Sebastien Pouliot <sebastien@ximian.com>
28152 * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke
28153 (or fill) are present for the shape.
28155 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
28157 * pipeline.cpp, pipeline.h: Create a more general worker thread,
28158 and use unions to save some space in WorkItem. In the ASFDemuxer,
28159 when seeking, we need to seek to the audio stream, since that's
28160 what we're using to sync against (if we have audio).
28162 * list.cpp, list.h: Added List::InsertBefore.
28164 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
28166 * media.cpp: MediaElement::SetSource: only trigger the download
28167 after we've attached to the CompletedEvent.
28169 2008-01-23 Chris Toshok <toshok@ximian.com>
28171 * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
28172 re-enter HandleMouseEvent, which can happen when that stupid JS
28173 timeout dialog pops up.
28175 2008-01-23 Chris Toshok <toshok@ximian.com>
28177 * runtime.cpp (Surface::SetMouseCapture): this fails not only if
28178 there's an existing capture, but also if there's a pending
28179 capture (so if both a parent and child capture on the same event,
28180 the child gets it.) Fixes dragging things around in ink journal.
28182 2008-01-23 Chris Toshok <toshok@ximian.com>
28184 * stylus.cpp, stylus.h: initial hit testing stuff. right now the
28185 only tests that are implemented are endcap (ellipse) vs. point,
28186 and segment vs. segment (although this one isn't the full test, as
28187 we're using the stroke line, as opposed to the exterior lines
28188 created by the ellipse pen tracing that line).
28190 * rect.h: add PointInside (Point p).
28192 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28194 * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
28195 it's no longer part of the build.
28197 2008-01-23 Sebastien Pouliot <sebastien@ximian.com>
28199 * shape.cpp|h: Add support for different PenLineCap on Line (part
28200 of #345888). Fix Polyline when a single segment is used (removed
28201 TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
28203 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28205 * media.cpp (SetSource): Initialize the ProgressiveSource.
28207 * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
28208 parent class's implementation.
28210 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28212 * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
28214 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28216 * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
28217 where the caller is trying to read a block larger than our
28219 (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
28220 uint64_t (which is needed in the case of seeking backwards).
28222 2008-01-22 Larry Ewing <lewing@novell.com>
28224 * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
28225 and into Path.cpp as a transform not by modifying the data.
28227 * geometry.cpp, geometry.h: remove stretch logic.
28229 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
28231 * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
28232 if within our pre-buffered bounds.
28233 (ProgressiveSource::Write): When restoring position state, use the
28234 proper offset (e.g. the offset of the end of our pre-buffered
28237 2008-01-22 Chris Toshok <toshok@ximian.com>
28239 * collection.cpp (UIElementZIndexComparer): the magnitude of the
28240 return value doesn't matter, only the sign.
28242 2008-01-22 Chris Toshok <toshok@ximian.com>
28244 * media.cpp (Image::InsideObject): if we have no surface (the
28245 image hasn't been loaded), we aren't HitTestVisible.
28247 * media.h (class Image): add InsideObject override.
28249 2008-01-22 Chris Toshok <toshok@ximian.com>
28251 * panel.cpp (Panel::OnCollectionChanged): remove the fix for
28252 #353954 as its redundant after the previous commit.
28254 2008-01-22 Chris Toshok <toshok@ximian.com>
28256 * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
28259 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
28261 * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
28262 call Initialize() on the file source.
28264 * pipeline.cpp (IMediaSource): Read() now returns the number of
28265 bytes read rather than true/false and does nto guarantee that all
28266 of the data was read. Added a ReadAll() method which does what the
28267 old Read() method did.
28268 (FileSource): Rewritten to do our own buffering which allows for
28269 nice optimizations for Peek() and Seek().
28270 (ProgressiveSource): Also rewritten.
28272 * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
28274 * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
28275 just made them extern in the ehader, this way we don't duplicate
28276 those values in each source file that includes this header.
28278 2008-01-22 Sebastien Pouliot <sebastien@ximian.com>
28280 * shape.cpp|h: First part of DoDraw refactoring. Pass all
28281 regression tests from harness (moon versus moon) but it's possible
28282 that some degenerated cases (without test cases) regress.
28284 2008-01-22 Larry Ewing <lewing@novell.com>
28286 * clock.cpp: initalize the smoothing to max framerate, the first
28287 frame is quite likely the slowest frame we'll ever draw. Bump
28288 error delta back up to 1/50th.
28290 2008-01-22 Chris Toshok <toshok@ximian.com>
28292 * media.cpp (MediaElement::Render): a little cairo cleanup, and
28293 remove the USE_OPT_REGION_CLIP block.
28295 2008-01-22 Andrew Jorgensen <ajorgensen@novell.com>
28297 * pipeline.cpp: include unistd.h, fixes a build error introduced in
28298 r93311 when building without-ffmpeg
28300 2008-01-22 Larry Ewing <lewing@novell.com>
28302 * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
28305 2008-01-22 Larry Ewing <lewing@novell.com>
28307 * clock.cpp: Tweak clock timing and smoothing. Increase timer
28308 priority so that ticks get deliver when we want them this doesn't
28309 change the smoothing calculation but it can raise the actual fps
28310 by assuring all our clocks are delivered. Change smoothing alpha
28311 from 0.3 to 0.03 to improve noise immunity. Don't reset the timer
28312 unless our new calculated timeout differs from our old by at least
28313 1/50 of a second. Resetting the clock on every tick had the
28314 effect adding the drawing time to the tick time for every tick
28315 since the timeout starts over at zero.
28317 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
28319 * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
28320 unspecified, encode the bitrate back into the header so that if we
28321 are using the NullMp3Decoder, it will know how to handle
28322 it. Probably also needed for any actual Mp3 decoders as well since
28323 it won't reliably be able to keep track of variable-bitrate
28324 streams otherwise since it wouldn't know if/when we seek.
28325 (NullMp3Decoder::DecodeFrame): Implemented.
28327 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28329 * pipeline.cpp: Remove printf.
28331 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28333 * src.mdp: Remove mplayer2.cpp from here too.
28335 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28337 * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
28338 mplayer2.cpp to mplayer.cpp.
28340 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
28342 * downloader.cpp (ll_downloader_get_response_file): Fixed to use
28343 mkstemp() rather than tmpnam_r() and also simplified.
28345 * pipeline.cpp: Fixed various things about the progressive stream.
28347 2008-01-19 Jeffrey Stedfast <fejj@novell.com>
28349 * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
28350 don't memmove() data unless we don't have enough to play a single
28351 frame. Instead, what we'll do is keep progressing audio->outbuf as
28354 2008-01-19 Chris Toshok <toshok@ximian.com>
28356 * uielement.cpp (UIElement::OnPropertyChanged): remove the
28357 handling of TriggersProperty and ResourcesProperty's closure.
28359 * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
28362 * transform.cpp (TransformGroup::OnPropertyChanged): remove
28363 handling of ChildrenProperty's closure.
28365 * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
28366 the handling of Inlines->closure from TextBlock.
28368 * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
28369 methods (InkPresenter and Stroke).
28371 * panel.cpp (Panel::OnPropertyChanged): remove handling of the
28372 ChildProperty's closure here.
28374 * media.cpp, media.h: remove the unnecessary
28375 MediaBase::OnPropertyChanged.
28377 * geometry.cpp, geometry.h: remove a few OnPropertyChanged
28378 methods (GeometryGroup, PathGeometry, and PathSegment.)
28380 * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
28382 * brush.cpp, brush.h: remove the unnecessary
28383 Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
28385 * animation.cpp, animation.h: remove all the
28386 *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
28387 they did was deal with collection closures.
28389 * dependencyobject.cpp (DependencyObject::SetValue): factor out
28390 the "collection->closure" setting code from all the
28391 OnPropertyChanged methods sprinkled around and put it here. Also,
28392 set collection->closure to NULL on the old value (something the
28393 old code didn't do).
28395 2008-01-19 Chris Toshok <toshok@ximian.com>
28397 * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
28398 NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
28401 * animation.h: clean this file up by removing all those disgusting
28402 macros. for the DECL macros, just expand them here, as having the
28403 methods listed in the class declaration is a good thing.
28405 * collection.cpp (collection_new): remove the switch statement
28406 from here and use Type::CreateInstance instead. this largely
28407 removes the need to be including extra headers (like animation.h).
28409 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
28411 * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
28412 MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
28413 * src.mdp: Updated.
28415 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
28417 * media.h, media.cpp: MediaElement: make this a state machine to follow the
28418 behaviour specified in MSDN. Implement buffering of media files.
28419 MediaSource (and derived): take a IMediaSource instead of a filename.
28420 * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
28421 Remove all MOON_MEDIA ifdefs, too many changes to support both versions
28422 now. Make seeking async.
28423 * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
28424 worker thread, seeking can now be done there too. Implement
28426 * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
28427 the file extension. MediaSource (and derived): take a IMediaSource
28428 instead of a filename.
28429 * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
28432 2008-01-18 Larry Ewing <lewing@novell.com>
28434 * uielement.cpp: compute total_opacity for invalidation logic but
28435 use local_opacity for drawing. This fixes monotones grid.xaml and
28436 some hit test regressions.
28438 2008-01-18 Jackson Harper <jackson@ximian.com>
28440 * xaml.cpp: KeyFrameCollections can be specified in the xaml if
28441 they are in a property element.
28442 - When searching for collections, use is subclass instead of
28443 making them be the same type, so derivied collections can be used.
28445 2008-01-17 Chris Toshok <toshok@ximian.com>
28447 * pipeline.h (class IMediaDemuxer): initializer streams and
28448 stream_count so we don't crash on ltbennett.com.
28450 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
28452 * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
28453 MPEG header, set MediaFrame->event to EOF. Same if we can't read
28455 (Media::GetNextFrame): Don't try to decode the frame if it is an
28457 (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
28460 * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
28461 (AdvanceFrame): Handle EOF frame events.
28462 (audio_loop): Handle EOF frame events.
28464 2008-01-17 Chris Toshok <toshok@ximian.com>
28466 * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
28467 invalidate the old bounds of the stroke for ItemRemoved as well as
28470 2008-01-17 Chris Toshok <toshok@ximian.com>
28472 * rect.h (Rect::Transform): new method, allows for transforming a
28473 rectangle by a cairo_matrix_t, used with transforming the stroke
28474 bounds back to screen space using the InkPresenter's
28477 * stylus.cpp, stylus.h: deal with collection changed notifications
28478 on Stroke::StylusPointsProperty and on
28479 InkPresenter::StrokesProperty, and correctly invalidate a stroke's
28480 bounds. The bounds of a stroke needs to be looked at - right now
28481 it's in the coordinate space of the InkPresenter, and so it needs
28482 to be transformed back to screen space before invalidating. Need
28483 to check if MS uses screen space for a stroke's bounds (seems
28484 likely they do, but this was easier to code.)
28486 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
28488 * mplayer2.cpp: Updated for MediaFrame changes.
28490 * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
28492 * pipeline.cpp: Instead of having a compressed_data and
28493 uncompressed_data field, simply have a 'buffer' field that gets
28494 reused by both the demuxer and the decoder. The decoder will set
28495 the buffer to the compressed data and the decoder will, once
28496 finished decoding, free the buffer and then update it to point to
28497 the decoded data. This reduces memory overhead.
28499 2008-01-17 Chris Toshok <toshok@ximian.com>
28501 * uielement.cpp (UIElement::InsideClip): use
28502 uielement_transform_point instead of duplicating it.
28504 * shape.cpp (Shape::InsideObject): use uielement_transform_point
28505 instead of duplicating it.
28507 * text.cpp (TextBlock::InsideObject): use
28508 uielement_transform_point instead of duplicating it.
28510 2008-01-17 Larry Ewing <lewing@novell.com>
28512 * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
28513 unstroked rectangles (see test-rectangle-aliasing.xaml). Suggest
28514 more rectangle testing after this.
28516 2008-01-17 Jackson Harper <jackson@ximian.com>
28518 * xaml.cpp: After setting a property stop walking up the element
28521 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
28523 * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
28525 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
28527 * mplayer2.cpp (audio_decode): Removed as it is no longer really
28529 (audio_loop): We can't assume that an entire decoded audio packet
28530 will fit into the audio output buffer in a single shot, break it
28533 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
28535 * mplayer2.cpp: Max out video frame rate at 60fps.
28537 2008-01-17 Fernando Herrera <fherrera@novell.com>
28539 * panel.cpp: Reorder based on ZIndex when a new item is added.
28542 2008-01-17 Larry Ewing <lewing@novell.com>
28544 * runtime.cpp (Surface::InitializeDrawingArea): disable extended
28545 input devices until the remaining issues can be resolved.
28547 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
28549 * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
28551 2008-01-16 Larry Ewing <lewing@novell.com>
28553 * uielement.cpp, uielement.h:
28554 * panel.cpp, panel.h:
28555 * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
28556 Combine the opacity visibility check into the total render
28557 visibility. Make sure we compute/invalidate in all the same
28560 * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
28562 * uielement.cpp (UIElement::DoRender): make sure we don't reset
28563 the coordinate system when setting up the clip calls in the
28564 opacity and opacity mask cases. Go back to using the brush
28565 directly when rendering masks. Should speed things up a little
28566 and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
28568 2008-01-16 Chris Toshok <toshok@ximian.com>
28570 * stylus.h, stylus.cpp: a few changes. Move the
28571 StylusPointCollection and StrokeCollection classes here from
28572 collection.h/collection.cpp. I didn't like the addition of
28573 stylus.cpp logic in two places. Convert Stroke::GetBounds use use
28574 the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
28575 methods, and build up the bounds for the StrokeCollection by
28576 unioning all the Stroke bounds (these should be cached, but aren't
28577 yet.) StrokeCollection::HitTest has been implemented, just
28578 looping over the strokes. Stroke::HitTest is missing its guts at
28579 the moment, since hit testing is going to be a little bit of a
28582 * collection.h, collection.cpp: remove StylusPointCollection and
28585 2008-01-16 Larry Ewing <lewing@novell.com>
28587 * uielement.cpp, uielement.h: Rework the way we handle opacity to
28588 operate like the reference platform by removing the concept of
28589 TotalOpacity and instead using push/pop group and paint_with
28590 alpha. See test-sibling-opacity.xaml for an example. Handle
28591 clipping in DoRender rather than in every subclass because we want
28592 the clip path active before calling push/pop so that the temporary
28593 surface is bounded.
28594 * brush.cpp, panel.cpp: remove GetTotalOpacity references.
28595 * media.cpp, media.h: cleanup the complicated render logic now
28596 that things are handled in uielement.
28597 * shape.cpp, text.cpp: remove RenderClipPath calls.
28599 * rect.cpp, rect.h: add draw methods.
28601 2008-01-16 Jeffrey Stedfast <fejj@novell.com>
28603 * pipeline.cpp: Implemented mpeg seeking support for
28604 Mp3FrameReader and, thusly, Mp3Demuxer.
28605 (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
28607 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
28609 * mplayer2.cpp: Remove a superfluous variable from Audio.
28611 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
28613 * mplayer2.cpp: Remove superfluous variables from Video.
28615 2008-01-16 Sebastien Pouliot <sebastien@ximian.com>
28617 * moon-path.c: Fix typo (but was same value).
28619 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
28621 * pipeline.cpp: Implemented mp3 demuxer.
28623 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
28625 * mplayer2.cpp: Don't crash if Seek is called before Open.
28627 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
28629 * mplayer2.cpp: Remove dead code and variables, and only request
28630 audio/video frames if we have audio/video.
28632 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
28634 * mplayer2.cpp: Get rid of extra member variables in Packet.
28636 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
28638 * mplayer2.cpp: Implement audio decoding on the main thread as well.
28640 2008-01-14 Jeffrey Stedfast <fejj@novell.com>
28642 * pipeline.cpp: Partially implemented an mp3 demuxer.
28644 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
28646 * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
28647 work again with the new pipeline.
28649 2008-01-14 Sebastien Pouliot <sebastien@ximian.com>
28651 * shape.cpp|h: It looks like we stopped needing consider_fill a
28654 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
28656 * mplayer.h: We don't need io_tread anymore, so remove it.
28657 * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
28658 for doing the decoding on the main thread with easy (in-code) switch.
28659 Comment out printfs, and remove dead/old/commented-out code.
28660 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
28661 decoding on the main thread with easy (in-code) switch.
28662 * runtime.cpp: Don't print entire object tracking output if nothing leaked.
28664 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
28666 * xaml.cpp: Unref a matrix object when we are done with it.
28667 * mplayer2.cpp: Remove printf.
28669 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
28671 * mplayer2.cpp: Remove printfs.
28672 * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
28674 * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
28676 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
28678 * pipeline.cpp: Fix crash with several web-sites (when seeking before
28681 2008-01-11 Chris Toshok <toshok@ximian.com>
28683 * clock.h (class Clock): add an instance
28684 field (calculated_natural_duration).
28686 * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
28687 current time here. this was inflating animation begin time's in
28688 some cases to be either very close to the parent's calculated
28689 duration (or even after it).
28690 (ClockGroup::ComputeBeginTime): don't chain up to
28691 Clock::ComputeBeginTime. clock groups in our system need to
28692 include their parent time in their begin time. There are only two
28693 levels of clockgroups - storyboards, and the clockgroup we have
28694 associated with a given surface (Which will be the parent of all
28695 the storyboards running on that surface.)
28696 (output_clock): print out the BeginTime of the clock.
28697 (TimeManager::AddChild): I don't really like this, but we need to
28698 force the calculation of the natural duration of the clock when
28699 it's added to the hierarchy.
28700 (ClockGroup::AddChild): same here.
28701 (Clock::Clock): don't calculate the natural duration of the clock
28702 here - when we instantiated a ClockGroup it was calculating the
28703 duration before the child clocks were added.
28705 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
28707 * pipeline.cpp: Seek on the frame reader, not on the source.
28708 * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
28709 HasAudio/Video (). Fix seeking to actually work.
28711 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
28713 * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
28714 mplayer.h where it belongs.
28715 * pipeline.cpp, pipeline.h: Implement seeking.
28716 * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
28717 directly, since ffmpeg uses one single memory location for all decoded
28718 frames, causing us to always show the last decoded frame.
28720 2008-01-11 Sebastien Pouliot <sebastien@ximian.com>
28722 * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
28723 See bug #345892 for the required cairo patch.
28725 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
28727 * media.cpp: Initialize Media too upon initialization.
28728 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
28729 mplayer2.cpp, mplayer.cpp: Implement registration of components, making
28730 it possible to completely remove ffmpeg.
28732 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
28734 * pipeline.cpp: Remove stray character.
28736 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
28738 * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
28739 pipeline-ffmpeg.h: Code-cleanup.
28741 2008-01-10 Larry Ewing <lewing@novell.com>
28743 * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
28744 before setting the extension events (lame api) and disable the
28747 2008-01-10 Chris Toshok <toshok@ximian.com>
28749 * runtime.cpp (Surface::InitializeDrawingArea): activate all
28750 devices that have a cursor associated with them.
28752 2008-10-10 Andrew Jorgensen <ajorgensen@novell.com>
28754 * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
28756 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
28758 * mplayer.cpp: Surround with ifdef to conditionally include the new
28759 MediaPlayer or not.
28760 * Makefile.am: Added pipeline* and mplayer2.cpp.
28761 * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
28763 * pipeline.cpp, pipeline.h: Added.
28764 * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
28766 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
28768 * panel.cpp: Delete leaked region.
28770 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
28774 2008-01-09 Chris Toshok <toshok@ximian.com>
28776 * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
28779 2008-01-09 Chris Toshok <toshok@ximian.com>
28781 * collection.h, collection.cpp: add C wrappers for
28782 StrokeCollection::GetBounds and ::HitTest.
28784 * stylus.h, stylus.cpp: same deal for Stroke::
28786 2008-01-09 Chris Toshok <toshok@ximian.com>
28788 * collection.h, collection.cpp: add empty implementations of
28789 StrokeCollection::GetBounds and StrokeCollection::HitTest.
28791 * stylus.h, stylus.cpp: add empty implementations of
28792 Stroke::GetBounds and Stroke::HitTest.
28794 2008-01-09 Chris Toshok <toshok@ximian.com>
28796 * uielement.h, uielement.cpp: change all the Emit* methods that
28797 deal with mouse events to take a GdkEvent instead of state/x/y,
28798 and also change their calldata to a heap allocated MouseEventArgs,
28799 which we unref after the emit. This is because the pointer itself
28800 is wrapped by the managed MouseEventArgs, and will be unref'ed in
28801 ~MouseEventArgs at some later time.
28803 * runtime.h, runtime.cpp: change all the mouse events to pass
28804 around the actual GdkEvent instead of the state/x/y. This is due
28805 to the fact that our MouseEventArgs class now wraps the GdkEvent,
28806 so we can get at all the stylus/extension event stuff.
28808 * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
28809 longer required. We correctly create a StylusInfo instance from
28810 the MouseEventArgs.
28812 * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
28813 (libmooninclude_headers): add eventargs.h
28815 * libmoon.h: add eventargs.h.
28817 * eventargs.h, eventargs.cpp: new files, splitting out the
28818 KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
28819 out MouseEventArgs, making it a refcounted object with enough
28820 smarts to handle both the managed case and plugin case. Include
28821 all the stylus related code as well, so this *should* make all the
28822 stylus requiring demos work.
28824 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
28826 * geometry.cpp (path_get_bounds): My fix the other day wasn't
28827 quite ideal. Instead of using a 0.1 line thickness when the
28828 shape's StrokeThickness is 0, continue using that 0 thickness but
28829 use cairo_fill_extents() instead. Also, when shape is null, ise a
28830 0.0 thickness & cairo_fill_extents() as well.
28832 * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
28833 that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
28835 * runtime.cpp (EmitEventOnList): Changed to take double x,y
28836 coordinate arguments rather than int.
28837 (HandleMouseEvent): Same.
28839 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
28841 * list.cpp (List::~List): Added a dtor that deletes all nodes
28842 currently in the list. This is doable now that List::Nodes are
28843 classes where the node dtors can be overloaded.
28845 2008-01-09 Jackson Harper <jackson@ximian.com>
28847 * xaml.cpp: If a property is a collection, don't assume that the
28848 collection is already initialized (they used to always be), and
28849 initialize the collection if needed. This fixes BNC 350893.
28851 2008-01-09 Stephane Delcroix <sdelcroix@novell.com>
28853 * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
28854 on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
28856 2008-01-08 Chris Toshok <toshok@ximian.com>
28858 * animation.cpp (Storyboard::Begin): simple change to fix a nasty
28859 bug. we need to add the teardown handler before the completed
28860 handler. otherwise cases where people were using a storyboard as
28861 a timer would break - the completed handler would fire, the JS
28862 would restart the storyboard, then the teardown handler would free
28863 the new clock hierarchy. Fixes the page animation in pageturn,
28864 and gets the bubbles moving again in the SilverlightCLRBalls demo.
28866 2008-01-07 Jeffrey Stedfast <fejj@novell.com>
28868 * geometry.cpp (path_get_bounds): Cairo seems to break if the line
28869 thickness is 0.0, so if the shape's thickness is set to 0.0, use
28870 0.1 like we do if shape is null. Fixes bug #351575.
28872 2008-01-07 Sebastien Pouliot <sebastien@ximian.com>
28874 * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
28875 that ignore those properties, can avoid setting them on the cairo
28878 2008-01-04 Chris Toshok <toshok@ximian.com>
28880 * runtime.cpp: mostly switch all emit_* calls to take doubles, and
28881 pass doubles around for button x/y.
28882 (Surface::motion_notify_callback): if we're gtk > 2.12, use
28883 gdk_event_request_motions (falling back to gdk_window_get_pointer
28884 if not). also, we can use the mouse_event_x/y from the event,
28885 even when it's a hint.
28887 * runtime.h: switch back to using doubles for everything mouse
28888 event related. Change MoonlightEventEmitFunc to take doubles.
28890 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
28892 * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
28893 since the events that use them want them as ints anyway.
28894 (button_release_callback): Cast the button->x/y doubles to int.
28895 (button_press_callback): Same.
28896 (motion_notify_callback): Cast event->x/y to int.
28897 (crossing_notify_callback): Same.
28899 * dependencyobject.cpp: EventObjects now use a List class for
28900 event_lists rather than GSList which is far more costly for
28902 (Emit): Reduce the number of linked-list iterations from 5 to 2.
28904 2008-01-04 Chris Toshok <toshok@ximian.com>
28906 * runtime.h, runtime.cpp: completely overhaul the way we handle
28907 mouse events. Instead of doing both hit testing and event
28908 dispatch in one recursive tree traversal, we build up a list of
28909 all elements that will bubble the event, and then use that list
28910 along with the previous one to generate Enter/Leave events for the
28911 elements that require it. Also fix the way capture is done (it's
28912 not handled until the end) and fix the Enter event dispatch when
28913 you release mouse capture.
28915 * uielement.h, uielement.cpp: rename the mouse events to match the
28916 names used in C# and JS, as it's been singularly annoying to
28917 remember that ButtonPressEvent -> MouseLeftButtonDown, etc. Also
28918 rename all the Handle* event methods to Emit*, as that's all they
28919 do. Make them nonvirtual, as the traversal and emission of the
28920 events now happens in runtime.cpp. Add a new virtual
28921 method (HitTest), that is overridden by the container elements,
28922 which appends elements that are going to bubble the event to the
28925 * panel.h, panel.cpp: remove all the Handle* methods, implement
28928 * control.h, control.cpp: remove all the Handle* methods,
28931 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
28933 * media.cpp (UpdateProgress): Don't SetValue() unless the delta
28934 was large enough - otherwise we could get into a situation where
28935 we never emit a progress changed event in a case where the data
28936 trickles in at < 0.05%.
28938 2008-01-04 Chris Toshok <toshok@ximian.com>
28940 * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
28941 up the clock hierarchy for the target property like we do with the
28944 2008-01-04 Chris Toshok <toshok@ximian.com>
28946 * media.h: add Image::DownloaderFailed.
28948 * media.cpp (Image::UpdateProgress): make sure to qualify the
28949 DownloadProgressProperty we lookup on the Downloader, since
28950 without the Downloader:: it'll try to get
28951 Image::DownloadProgressProperty, which will always return 0.0.
28952 (Image::SetSource): use the static qualifier for
28953 events (Downloader:: instead of downloader->).
28954 (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
28956 * brush.cpp (ImageBrush::image_progress_changed): make sure to set
28957 our ImageBrush::DownloadProgressProperty before emitting the
28959 (brush_init): lookup the ImageBrush::ImageFailedEvent.
28961 2008-01-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
28963 * runtime.cpp: Free background_color upon surface
28964 destruction. Fixes a minor leak.
28966 * clock.cpp|h: Free the tick_call_mutex upon destruction.
28968 2008-01-03 Jeffrey Stedfast <fejj@novell.com>
28970 Fix for bug #350962
28972 * media.cpp (MediaBase::OnPropertyChanged): Don't emit
28973 DownloaderProgressChanged events anymore, leave that up to Image
28974 and MediaElement classes so that we don't emit events when an
28975 outside source changes the value.
28976 (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
28977 event if the proper download delta has occured.
28978 (Image::UpdateProgress): Same.
28980 2008-01-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
28982 * dependencyobject.h: Remove warning.
28984 2007-12-31 Jeffrey Stedfast <fejj@novell.com>
28986 * runtime.h (CreateDownloader): Simplified.
28988 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28990 * collection.cpp: Upon destruction on VisualCollection, remove the visual
28991 parent of all items.
28992 * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
28994 * dirty.cpp: Don't take a ref in DirtyNode.
28996 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28998 * media.cpp: Add const modifier
29000 2007-12-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
29002 * downloader.cpp: Null-initialize a field.
29003 * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
29005 2007-12-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
29007 * pipeline.h: Added, the start of the new media pipeline.
29009 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
29011 * collection.cpp|h: Add missing method AddStylusPoints for
29012 StylusPointCollection
29014 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
29016 * geometry.h: Remove hack for PathGeometry::FiguresProperty
29017 * xaml.cpp: If a collection is null by default then we must call
29018 parent->SetValue(dp, collection) or the collection, and it's
29019 contents, won't be available. Fix (correctly) Chess.
29021 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
29023 * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
29024 there's no default Figure collection. Fix Chess crasher.
29025 * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
29026 foir doubles, and as an "empty" (but not NULL) Value for
29029 2007-12-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
29031 * media.cpp, media.h: Implement support for markers as a separate stream
29032 (the demuxer will call a callback when it encounters any streamed
29035 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
29037 * xaml.cpp: Add create_item_func for PathFigureCollection. This is
29038 now needed since it defaults to null and not an empty collection.
29040 2007-12-19 Stephane Delcroix <sdelcroix@novell.com>
29042 * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
29044 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
29046 * color.cpp: Handle empty string correctly in color_from_str. Unit
29047 tests shows this return 0 (and not transparent).
29049 2007-12-18 Stephane Delcroix <sdelcroix@novell.com>
29051 * xaml.cpp: fix for bnc 348581.
29053 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
29055 * brush.cpp: Fix default color values for SolidColorBrush::Color and
29056 GradientStop::Color properties (see js unit tests).
29057 * geometry.cpp|h: Remove default collection from PathGeometry. Fix
29058 testPathGeometry unit test.
29060 2007-12-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
29062 * media.cpp: ReadASFMarkers: Read markers as well as script commands.
29063 Subtract the preroll value from the pts before adding the marker. Unref
29064 the created collection and markers when finished with them.
29065 AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
29066 frame (might be necessary if the last frame has a marker).
29068 2007-12-17 Jb Evain <jbevain@novell.com>
29070 * xaml.cpp: fix testMatrixWithZeroItem test case.
29072 2007-12-17 Jb Evain <jbevain@novell.com>
29074 * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
29075 value type, has SL exposes it as a DependencyObject.
29077 * transform.cpp|h: define and implement the
29078 Matrix DependencyObject type.
29080 * xaml.cpp: create a Matrix DO on a Matrix xaml element.
29081 Also create such an object with the <MatrixTransform Matrix='...'>
29084 2007-12-17 Sebastien Pouliot <sebastien@ximian.com>
29086 * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
29087 is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
29089 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
29091 * runtime.cpp (fps_report_default): Default printf FPS report
29093 (Surface::render_cb): Use instance-local variables for keeping
29094 track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
29097 * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
29098 (class Surface): New method to set the FPS report callback for a
29101 2007-12-14 Chris Toshok <toshok@ximian.com>
29103 * type.cpp.in, type.cpp (types_init_register_events): need to
29104 register DownloadProgressChanged and ImageFailed events on
29107 * brush.h, brush.cpp: same, and hook up the events from
29108 ImageBrush's embedded image so that we can re-emit the events.
29110 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
29112 * downloader.cpp (Downloader::Abort): Don't abort if we've already
29113 been aborted or been notified that we've failed (needed protection
29114 for the Plugin downloader).
29115 (Downloader::Send): Set aborted = false.
29116 (Downloader::NotifyFailed): Don't do anything if we've already
29117 been notified of failure for this download request.
29119 * downloader.h (class Downloader): Keep track of aborted state as
29122 2007-12-14 Stephane Delcroix <sdelcroix@novell.com>
29124 * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
29125 only one (Width XOR Height) is provided.
29127 2007-12-14 Sebastien Pouliot <sebastien@ximian.com>
29129 * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
29130 been built before calling cairo_stroke_extents. This fix sample
29131 http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
29133 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
29135 * shape.cpp|h: Shortcut path bounds calculation when both Width
29136 and Height are specified. Add same clipping rules to Line,
29137 Polyline and Polygon classes.
29139 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
29141 * geometry.cpp: Resume using cairo_stroke_extents in some cases
29142 because we need very precise bounds for Fill to work properly.
29143 This fix Sprawl's cowboy hat ribbon :-)
29145 2007-12-12 Stephane Delcroix <sdelcroix@novll.com>
29147 * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
29149 2007-12-11 Jeffrey Stedfast <fejj@novell.com>
29151 * downloader.cpp|h: Made the ::Write() method take the same
29152 int-type args as the NPP_Write() function (which means int32 for
29153 both offset and nbytes).
29155 2007-12-11 Sebastien Pouliot <sebastien@ximian.com>
29157 * stylus.cpp: Fix JS unit tests for Stroke properties by having
29158 a default DrawingAttributes inside the Stroke.
29160 2007-12-10 Chris Toshok <toshok@ximian.com>
29162 * dependencyobject.h, dependencyobject.cpp: more event changes.
29163 events keep a integer "token" per event, that starts at 0, that is
29164 returned from the plugin's addEventListener method, and can be can
29165 be passed to the plugin's removeEventListener method.
29167 2007-12-10 Sebastien Pouliot <sebastien@ximian.com>
29169 * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
29170 property of the Shape. Fix bug #346018
29172 2007-12-10 Jeffrey Stedfast <fejj@novell.com>
29174 * runtime.cpp (InitializeDrawingArea): Removed the call to
29175 gtk_widget_set_size_request() - we now call it elsewhere (since
29176 going fullscreen requiers us to call set_size_request() /before/
29177 calling gtk_window_fullscreen(). When going to fullscreen mode,
29178 this was causing the FullScreenMessage item to appear in the
29179 upper-left corner rather than centered like it should have been.
29180 (Surface): Make the call to gtk_widget_set_size_request() here now
29181 that it no longer is called inside InitializeDrawingArea().
29183 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
29185 * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
29186 * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
29187 bounds calculation on paths when Height *and* Width are present.
29189 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
29191 * shape.cpp: In Shape::ComputeBounds don't compute half thickness
29192 unless the value is needed.
29194 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
29196 * xaml.cpp: Plug more leaks.
29198 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
29200 * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
29201 detected by the javascript tests.
29203 2007-12-06 Jeffrey Stedfast <fejj@novell.com>
29205 * media.cpp (media_element_get_attributes): Added.
29206 (media_element_set_attributes): Added.
29207 (MediaElement): Set an empty list of attributes as per the spec.
29209 2007-12-06 Stephane Delcroix <sdelcroix@novell.com>
29212 * brush.cpp: implement RelativeTransform for image brushes and
29213 LinearGradientBrush. RadialGradientBrush still missing.
29215 2007-12-06 Chris Toshok <toshok@ximian.com>
29217 * dependencyobject.h, dependencyobject.cpp: make
29218 EventObject::AddHandler return the id (when using the event_name
29221 2007-12-06 Chris Toshok <toshok@ximian.com>
29223 * xaml.cpp (xaml_init): register the right constructors for
29224 PathSegmentCollection, GeometryCollection, and
29225 TransformCollection.
29227 2007-12-05 Chris Toshok <toshok@ximian.com>
29229 * animation.cpp, animation.h: a couple of fixes. Move away from
29230 watching the clock state in AnimationStorage and resetting the
29231 property value there. instead, just override Clock::Stop in
29232 AnimationClock and call ResetPropertyValue on the storage.
29234 Also, when a storyboard's clock group is stopped, free it and
29235 remove it from the parent clock's list of children. This should
29236 keep us from growing the number of clocks over time for
29237 storyboards which don't have Begin() called again (the only
29238 circumstance under which we destroy the clock).
29240 * clock.cpp, clock.h: handle the case where a clock can be started
29241 and then stopped before the next clock tick. This happens when
29242 you move the mouse very quickly over the thumbnails in pageturn.
29244 2007-12-05 Sebastien Pouliot <sebastien@ximian.com>
29246 * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
29247 (no path provided). Fix Build/ComputeBounds when no center point
29250 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
29252 * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
29253 dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
29254 and make it a real property with accessors.
29256 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
29258 * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
29259 animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
29260 logical_parent/SetLogicalParent/GetLogicalParent.
29262 2007-12-04 Larry Ewing <lewing@novell.com>
29264 * media.cpp (Image::Render): fix the conditions for the opacity
29267 2007-12-03 Larry Ewing <lewing@novell.com>
29269 * src/media.cpp (Image::Render): use paint_with_alpha if opacity
29270 is changing, use the old buffered alpha if it is not.
29272 2007-12-04 Jb Evain <jbevain@novell.com>
29274 * stylus.cpp|h: add stylus_info_get_current function.
29275 Right now, it's an hack which always return a StylusInfo
29276 of type Mouse, not inverted.
29278 2007-12-03 Chris Toshok <toshok@ximian.com>
29280 * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
29281 it now clamps to [0,duration_timespan]. This fixes the Simon
29282 "button flying off the screen" bug.
29284 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29286 * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
29287 iterating thru the list 6 times :)
29288 (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
29289 child_clocks list here too, or we end up corrupting memory.
29291 2007-12-03 Larry Ewing <lewing@novell.com>
29293 * media.cpp (Image::Render): wrap the region clipping in a #define
29296 2007-12-03 Larry Ewing <lewing@novell.com>
29298 * media.cpp (Image::Render): remove accumulated drawing cruft.
29300 2007-12-03 Chris Toshok <toshok@ximian.com>
29302 * animation.cpp: put back in the calls to ComputeBeginTime that I
29303 accidentally committed a few days ago (and lewing reverted to fix
29304 the build). they're needed with the new clock changes.
29306 2007-12-03 Chris Toshok <toshok@ximian.com>
29308 * clock.cpp, clock.h: rework the clock code a bunch. There are a
29309 couple of large changes.
29311 Get rid of the stupid new_ and current_ fields. Just update the
29312 field immediately. This cuts down on logic in if checks, and also
29313 makes subclocks update much faster in relation to their parent
29314 clock (we used to have to wait 1 tick per level in the tree for
29315 state to propagate).
29317 Abstract out all the QueueEvent calls into setters in clock.h.
29319 Break up Clock::Tick some, so more of the code is reusable from
29320 ClockGroup::Tick without having to call Clock::Tick and then work
29323 2007-12-03 Sebastien Pouliot <sebastien@ximian.com>
29325 * brush.cpp: Fix breakage introduced in r90549 (the matrix is
29326 already set on the pattern).
29328 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29330 * dependencyobject.cpp (RemoveHandler): Simplified a little.
29332 * animation.cpp (Stop): Remove the CompletedEvent root_clock
29333 handler. Fixes Simon's GAME OVER! textblock storyboard.
29335 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29337 * runtime.cpp: Added clipping/bounding-box override values.
29339 * uielement.cpp (DoRender): Changed optional bounding-box/clipping
29340 debugging drawing based on runtime settable bitflags.
29342 2007-12-03 Larry Ewing <lewing@novell.com>
29344 * uielement.cpp: Clean up the debug rendering code for bounding
29345 boxes and clip regions.
29347 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29349 Fixes a bug pointed out by Larry when rendering lines beginning
29350 with a 'J', where the tail escapes the bounding box.
29352 * font.cpp (Layout): Use the horiBearingX font metric.
29353 (RenderLine): Same.
29355 2007-12-03 Larry Ewing <lewing@novell.com>
29357 * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
29358 if we can't invert the matrix but still draw someting.
29360 2007-11-29 Larry Ewing <lewing@novell.com>
29362 * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
29363 bounds to the clip region as well.
29365 * control.cpp (Control::ComputeBounds): differenciate between our
29366 bounds and our subpath bounds.
29368 * control.h: add bounds_with_children and GetSubpathBounds ().
29370 2007-11-29 Jeffrey Stedfast <fejj@novell.com>
29372 * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
29373 the font face charmap, use unichar = 0 rather than returning NULL.
29375 2007-11-28 Chris Toshok <toshok@ximian.com>
29377 * runtime.cpp (Realloc): when we Realloc(), we need to tell the
29378 toplevel canvas to update its bounds. This *may* be wrong, but it
29379 definitely fixes matrix.
29380 (UpdateFullScreen): we need to stop the timesource when emitting
29381 the fullscreenchangeevent. otherwise we can end up stuck in a
29382 nested glib mainloop and never return from the emit (actually we
29383 never even invoke the JS callback in matrix. the nested loop
29384 happens somewhere deep in the bowels of NPN_Invoke).
29386 2007-11-28 Jeffrey Stedfast <fejj@novell.com>
29388 * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
29389 hack that forced the assumption of a streaming (vs progressive)
29390 media download. Also fixed to emit a DownloadProgressChanged event
29391 at progress == 1.0 (which is what th Silverlight book says we're
29394 2007-11-28 Larry Ewing <lewing@novell.com>
29396 * src/uielement.cpp (UIElement::DoRender): make sure we don't
29397 leave a path on the cairo context when clipping.
29399 2007-11-28 Chris Toshok <toshok@ximian.com>
29401 * uielement.cpp (UIElement::UIElement): compute the initial total
29402 hit test visibility.
29404 * dirty.cpp (process_dirty_elements): don't invalidate/update
29405 bounds when the hit test visibility changes.
29407 * frameworkelement.(h,cpp): calculate the bounds here using
29410 * panel.cpp: chain up to frameworkelement.
29412 2007-11-27 Jeffrey Stedfast <fejj@novell.com>
29414 * text.cpp (TextBlock::SetValue): Check the resulting Inlines
29415 collection formed from the Text property being set against the old
29416 Inlines - if no change, don't set the new Inlines collection,
29417 simply keep using the old. The idea is to prevent unnecessary
29418 layout re-calculations and invalidates.
29420 2007-11-27 Chris Toshok <toshok@ximian.com>
29422 * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
29423 canvas.cpp, collection.cpp, shape.cpp:
29425 rather large change - don't use a large rectangular bounding box
29426 encompassing both the panel's frameworkelement bounds as well as
29427 the bounds of all its children. Instead, only worry about the
29428 frameworkelement bounds, and let the children invalidate
29429 themselves. but do all this in a way that we still use the
29430 subtree's bounding box to prune rendering and hit testing.
29432 since we won't be invalidating the entire box surrounding all
29433 children, we need to propagate visibility information down the
29434 tree as we do opacity.
29436 This should really speed up most animations (such as those in
29437 sprawl and airlines) since we'll be invalidating far smaller
29440 (this code was stupidly hard for lewing and me to get right. yay
29443 2007-11-23 Larry Ewing <lewing@novell.com>
29445 * runtime.cpp: add show=expose to toggle expose display.
29447 2007-11-22 Jb Evain <jbevain@novell.com>
29449 * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
29450 a glib warning if set_properties is NULL.
29452 2007-11-21 Chris Toshok <toshok@ximian.com>
29454 * media.cpp (MediaElement::UpdateProgress): only set 1 of
29455 DownloadProgressProperty and BufferingProgressProperty. The
29456 former is used if we're playing progressively, the latter if we're
29457 buffering before playing. This fixes the buffering animation on
29460 2007-11-21 Chris Toshok <toshok@ximian.com>
29462 * runtime.cpp (Surface::Invalidate): add the int case around the
29463 complete expression to quiet gcc.
29465 2007-11-20 Larry Ewing <lewing@novell.com>
29467 * runtime.cpp (Surface::expose_event_callback): take allocation
29468 offsets into account when invalidating and drawing. Fixes
29471 2007-11-20 Chris Toshok <toshok@ximian.com>
29473 * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
29474 2.12, destroy the hash table and set it to NULL so we'll recreate
29477 2007-11-20 Chris Toshok <toshok@ximian.com>
29479 * collection.cpp (VisualRemoved): switch from using
29480 item->parent->ChildInvalidated(UIElement), use
29481 item->parent->Invalidate (item->GetBounds()).
29483 * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
29484 Invalidate (Region*) and update calls to it. Remove
29485 ChildInvalidated(UIElement*). Also, remove all references to the
29486 children_dirty_region field. everything goes through dirty_region
29489 * dirty.cpp: switch to using item->parent->Invalidate instead of
29490 item->parent->ChildInvalidated, and remove references to
29491 children_dirty_region.
29493 2007-11-20 Chris Toshok <toshok@ximian.com>
29495 * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
29496 copy before emitting an event.
29498 2007-11-20 Jeffrey Stedfast <fejj@novell.com>
29500 * runtime.cpp (surface_get_toplevel): Removed.
29502 * uielement.cpp (uielement_get_isloaded): Removed.
29504 2007-11-20 Jb Evain <jbevain@novell.com>
29506 * downloader.h (Downloader): override SetSurface and GetSurface
29507 to work on a custom surface field.
29508 * downloader.cpp (Downloader::Downloader): initialize
29510 * runtime.h (Surface::CreateDownloader): initialize the surface
29512 * collection.cpp: when removing an UIElement from an UIElementCollection,
29513 clear out its surface to NULL.
29514 * visual.cpp: remove null check preventing to set the surface to NULL.
29515 * dependencyobject.cpp: (DependencyObject::FindName): if the
29516 current DO has no parent, fallback to its surface to try
29517 FindName on its top level element (needed to call FindName
29518 on a downloader for instance). Fixes #335018.
29520 2007-11-20 Jackson Harper <jackson@ximian.com>
29522 * xaml.cpp: If we need to reparse the attributes for an element
29523 (because we loaded a class and the props need to be set on the new
29524 class) we have to clear out the hash of properties that are marked
29525 as already set. Otherwise we get a property already set error.
29527 2007-11-20 Jackson Harper <jackson@ximian.com>
29529 * xaml.cpp: Add new function to create a value from a string
29530 without having the Kind available (you still need to have the type
29532 - SetAttribute now ensures that the attribute was set properly
29533 - If the object we are trying to set an attribute on is a managed
29534 object and there is no DependencyProperty for the attribute, we
29535 try setting the attribute on the object.
29537 2007-11-20 Sebastien Pouliot <sebastien@ximian.com>
29539 * uielement.cpp: Ensure the default value for VisibilityProperty
29540 is VisibilityCollapsed even if the value is invalid (for Javascript
29541 compatibility, since 1.1 should throw an exception). See #340799
29543 2007-11-20 Stephane Delcroix <sdelcroix@novell.com>
29545 * uielement.cpp: FullInvalidate on setting Viibility to Visible.
29548 2007-11-19 Larry Ewing <lewing@novell.com>
29550 * uielement.cpp: setup the clip before push/pop group so that
29551 we reduce the temp surface size.
29553 2007-11-16 Sebastien Pouliot <sebastien@ximian.com>
29555 * transform.cpp: Use cairo_matrix_init_translate instead of
29556 cairo_matrix_init + cairo_matrix_translate where possible (which
29557 avoid the multiplication with the identity matrix).
29559 2007-11-16 Jeffrey Stedfast <fejj@novell.com>
29561 * runtime.cpp (surface_get_toplevel): New function needed by the
29562 managed land to implement a bit of a hack for the Resize
29563 event (when someone connects to the Resize event, if the toplevel
29564 canvas is already loaded, we want to immediately call the
29567 * uielement.cpp (uielement_get_isloaded): Same.
29569 2007-11-15 Jackson Harper <jackson@ximian.com>
29572 * parsertest.cpp: Some tests I use for checking the parsing
29575 2007-11-15 Jackson Harper <jackson@ximian.com>
29577 * color.h: Add equality operators.
29579 2007-11-15 Jackson Harper <jackson@ximian.com>
29581 * xaml.cpp: use isalpha for determining whether or not an int32 is
29582 an enum. This allows things like -1 to work.
29584 2007-11-15 Jackson Harper <jackson@ximian.com>
29586 * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
29589 2007-11-15 Jackson Harper <jackson@ximian.com>
29592 * rect.h|cpp: Update signatures to allow for error checking when
29593 creating types from strings.
29594 * xaml.h|cpp: Consolidate code to create values from strings, add
29595 some error checking. Update most of the parsing methods so it is
29596 possible to return errors when parsing.
29597 * playlist.cpp: Sig update.
29599 2007-11-15 Jackson Harper <jackson@ximian.com>
29601 * stylus.h|cpp: Initialize these collections so we don't get NULLs
29602 for GetValue on them.
29604 2007-11-14 Chris Toshok <toshok@ximian.com>
29606 * runtime.cpp (strcase_hash): swap this out for mono's eglib
29607 implementation, augmented with g_ascii_tolower, to remove the
29608 malloc/free and 2 passes over the string.
29610 2007-11-14 Chris Toshok <toshok@ximian.com>
29612 * dependencyobject.cpp: move the strcase_hash/equals functions...
29614 * runtime.cpp: here.
29616 * runtime.h: and make them public.
29618 * type.cpp.in, type.cpp (RegisterEvent): and use them here
29619 (RegisterType): and here.
29621 2007-11-14 Jb Evain <jbevain@novell.com>
29623 * media.cpp|h: remove specific Image and MediaElement
29624 accessors for progress property now that the code
29625 moved to MediaBase.
29627 2007-11-14 Jb Evain <jbevain@novell.com>
29629 * type.cpp.in, type.cpp, media.h, media.cpp: Move
29630 DownloadProgressProperty and DownloadProgressChangedEvent
29631 to MediaBase so it gets shared for both Image and MediaElement.
29634 2007-11-14 Jb Evain <jbevain@novell.com>
29636 * value.h.in: update code template to match current value.h.
29638 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
29640 * openfile.cpp: Added support for Filter and FilterIndex.
29642 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
29644 * animation.cpp: Replaced g_assert_not_reached with g_warning.
29645 At least until #340799 (enum validation) is fixed. Part of #335413
29646 * shape.cpp: Add g_warning to replace the g_assert_not_reached
29647 removed earlier. At least until #340799 (enum validation) is fixed.
29648 * uielement.cpp: Replaced g_assert_not_reached with g_warning.
29649 At least until #340799 (enum validation) is fixed. Part of #335413
29651 2007-11-13 Miguel de Icaza <miguel@novell.com>
29653 * value.cpp (Value::ToString): Add method to help debug some
29656 2007-11-13 Jeffrey Stedfast <fejj@novell.com>
29658 * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
29661 2007-11-13 Sebastien Pouliot <sebastien@ximian.com>
29663 * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush
29664 as this is unrequired (API wise) and can be expensive (it was enough
29665 to add custom bound calculation code to shapes and geometries).
29667 2007-11-12 Sebastien Pouliot <sebastien@ximian.com>
29669 * shape.cpp: Removed g_assert_not_reached and, if any bad value is
29670 supplied (should be catched well before that, #340799), use the
29671 default value. Fix part of #335413
29673 2007-11-09 Chris Toshok <toshok@ximian.com>
29675 * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
29676 convert this over to using our List class. Also fix a bug where
29677 elements with down dirty flags weren't being inserted propertly
29678 into the up dirty list.
29680 2007-11-09 Sebastien Pouliot <sebastien@ximian.com>
29682 * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
29684 2007-11-09 Miguel de Icaza <miguel@novell.com>
29686 * value.h (struct Value): Cope with NULL strings.
29688 2007-11-09 Jackson Harper <jackson@ximian.com>
29690 * xaml.cpp: Closepath needs to draw a line to the path's starting
29691 point and needs to create a new path figure element at the
29694 2007-11-09 Jackson Harper <jackson@ximian.com>
29696 * type.cpp|h.in: Add an accesor for the ContentProperty name.
29698 2007-11-09 Jackson Harper <jackson@ximian.com>
29700 * xaml.cpp: Rework to allow unparented properties. createFromXaml
29701 ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
29702 basically ignore the property and will return the SolidColorBrush
29703 as the top element. This fixes 335865.
29705 2007-11-08 Chris Toshok <toshok@ximian.com>
29707 [ may go a long way toward fixing #337714, if it doesn't fix it
29710 * uielement.h, uielement.cpp: add an overload of ChildInvalidated
29711 that takes a UIElement* instead of a region. The implementation
29712 just invalidates the entire bounds of the child in the parent.
29714 * collection.h, collection.cpp: we weren't breaking the
29715 item->parent link when removing visuals from a VisualCollection.
29716 Add VisualRemoved, which invalidates the child's region (and stop
29717 using child->Invalidate, since that won't work once the link to
29718 the parent is broken) and breaks the parent link. Call
29719 VisualRemoved from everywhere we remove/replace a visual in our
29720 collection. Also, rename VisualUpdated to VisualAdded, since
29721 that's more indicative of why the method is being called.
29723 2007-11-08 Jeffrey Stedfast <fejj@novell.com>
29725 * runtime.cpp (Attach): Emit the Resize event.
29726 (drawing_area_size_allocate): Emit the Resize event.
29728 2007-11-07 Chris Toshok <toshok@ximian.com>
29730 * clock.cpp (Clock::Begin): guard against division by zero.
29732 2007-11-07 Chris Toshok <toshok@ximian.com>
29734 * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
29735 width the canvas tells the surface to be (if it does). this fixes
29736 issues uncovered by larry's improved bounds checking code. Also,
29737 remove the instance fields for screen_height/width. they're only
29738 used in one place, so make them local to that function.
29740 2007-11-07 Chris Toshok <toshok@ximian.com>
29742 * brush.h, brush.cpp: add some c++ setters/getters to make some
29743 code a little smaller.
29745 2007-11-06 Larry Ewing <lewing@novell.com>
29747 * src/frameworkelement.cpp: Force a full invalidate if the width
29748 or height property because panels include their children in the
29749 bounds compution and will pass the dirty check.
29751 * media.cpp: Implement the Region based rendering for MediaElement
29754 * panel.cpp: Unconditionally pass the region to the Children.
29756 * panel.cpp: when rendering children treat panels and other
29757 objects differently. For containers pass the clipped region
29758 directly, for elements subdivide the region and paint each block.
29759 Renable FindStartingElement with a slightly less expensive
29762 * rect.cpp: don't collapse complicated regions the drawing code is
29765 2007-11-06 Jeffrey Stedfast <fejj@novell.com>
29767 * font.cpp (TextFont): Fixed to not exit() even when no font could
29768 be loaded from FreeType.
29770 2007-11-06 Chris Toshok <toshok@ximian.com>
29772 * dependencyobject.cpp (GetObjectType): make this g_critical, and
29773 also print out a stack trace if STACK_DEBUG is enabled.
29775 * dependencyobject.h: stop Emitting the DestroyedEvent from the
29776 dtor. instead do it from unref before we delete the object.
29778 2007-11-05 Chris Toshok <toshok@ximian.com>
29780 * rect.h (ToGdkRectangle): quiet countless warnings.
29782 2007-11-05 Larry Ewing <lewing@novell.com>
29784 Merge most of dirty region branch. This makes the dirty logic and
29785 rendering code use the new region class to track more complicated
29786 shapes than bounding boxes when processing changed areas.
29788 * media.cpp: switch back to indirect rendering for drawing media
29789 elements until a solution to the boundry clipping can be found.
29791 * panel.cpp: disable FindStartingElement (the buggy) until a more
29792 optimal method can be found.
29794 * dirty.cpp: Use dirty regions. Process DirtyOpacity first (still
29795 needs to be fixed to order dirty children.
29797 2007-11-03 Chris Toshok <toshok@ximian.com>
29799 * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
29800 call SkipToFill if we have no active child clocks.
29801 (ClockGroup::Stop): simplify this.
29802 (ClockGroup::Seek): make this look a little more like ::Stop.
29804 2007-11-03 Chris Toshok <toshok@ximian.com>
29806 * xaml.cpp (repeat_behavior_from_str): add support for the
29807 "ff.ffx" format for repeat behaviors.
29809 * clock.cpp, clock.h: the first sizeable amount of work done in a
29810 while to correct the multitude of tiny bugs in clock handling.
29811 this gets AnimationMatrix.xaml maybe 40% working. Clean up and
29812 comment Clock::Tick a lot, and remove a bunch of the old
29813 CLOCK_DEBUG spew which was making the code that much more
29814 difficult to look at.
29816 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
29818 * font.cpp (TextFontDescription::SetScale): Removed, this hack
29819 wasn't working as well as I'd hoped.
29820 (TextFontDescription::GetScale): Same.
29821 (TextFontDescription::CreatePattern): If the requested font size
29822 is < 41.0 (seems to be the magic number where scaling loses impact
29823 on metrics), use FontSize=41.0 and do proper scaling to get the
29824 actual size we want. My worry was that asking for small font sizes
29825 (smaller than 16.0?) would look ugly with this hack, but that is
29826 surprisingly not true. By always requesting a font size that will
29827 yield the generic font metrics (e.g. not some hacked font size),
29828 we will always be able to wrap identically no matter what FontSize
29829 is requested (so long as the width gets scaled appropriately).
29831 * text.cpp (TextBlock::ComputeTransform): Removed.
29833 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
29835 * font.cpp (RenderLine): Render glyphs with index 0 too, so that
29836 we render an empty box for glyphs not in the font (just like
29839 * text.cpp (ComputeTransform): Fixed to use the correct matrix for
29840 getting the scale values.
29842 2007-11-01 Jackson Harper <jackson@ximian.com>
29850 * panel.h: Add ContentProperty 'attributes'.
29852 * type.cpp|h: Add content property information to types. This
29853 will be used by the parser and will allow the parser to drop it's
29854 special type system.
29856 2007-11-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
29858 * animation.cpp: AnimationStorage: unregister from registered events on
29861 2007-11-01 Jeffrey Stedfast <fejj@novell.com>
29863 * text.cpp (TextBlock::SetValue): Oops - if we are setting an
29864 empty string on the Text property, then we need to clear out
29865 whatever was there before (if anything).
29867 2007-10-31 Jeffrey Stedfast <fejj@novell.com>
29869 Fixes for handling lwsp cdata between <Run> elements.
29871 * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
29872 arg suggesting that we are being called in response to a new
29873 element starting vs an element ending.
29874 (start_element_handler): Pass true as the start arg to
29876 (end_element_handler): Pass false as the start arg to
29879 * text.cpp (SetValue): Only add a run if the string is non-empty.
29881 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29883 * dependencyobject.cpp: Guard against calling NULL.
29885 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29887 * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
29888 return value is always checked.
29890 2007-10-31 Chris Toshok <toshok@ximian.com>
29892 * trigger.cpp (EventTrigger::SetTarget,
29893 EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
29896 2007-10-31 Jackson Harper <jackson@ximian.com>
29898 * dependencyobject.h|cpp: Give DependencyProperties the ability to
29901 * animation.cpp: Signature updates
29903 2007-10-30 Jackson Harper <jackson@ximian.com>
29905 * xaml.h: Add the error args to the loader.
29906 * xaml.cpp: Make most of our parsing errors match Silverlight.
29908 2007-10-30 Jeffrey Stedfast <fejj@novell.com>
29910 * font.cpp (Path): Check the path data != NULL before we make any
29911 cairo calls, no sense wasting cycles if we will no-op in the end.
29913 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29915 * media.cpp, media.h: Fix signedness mismatch warning.
29917 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29919 * mplayer.h: Added asf_player field.
29921 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
29923 * Makefile.am: Add files in asf/.
29924 * media.cpp, media.h: Read ASF markers from the file. Save the position when
29925 advancing frames. Use the difference between the last position and the
29926 current position to determine if any MarkerReached events are supposed
29928 * mplayer.cpp: Add some error checking/reporting when opening streams.
29929 Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
29930 to actually use it).
29932 2007-10-26 Jeffrey Stedfast <fejj@novell.com>
29934 * font.cpp (RenderLine): Split out from TextLayout::Render() and
29935 made to reset the brush at each segment to match Silverlight's
29938 2007-10-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
29940 * debug.cpp: Added print_gdb_trace with an explaining comment.
29941 * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
29944 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29946 * font.cpp (TextLayout::Render): Set y1 before creating/appending
29947 the path instead of in the segment loop.
29948 (TextLayout::Render): Make underline pos relative to y1 (aka the
29949 baseline) that we calculated above. Makes this easier to
29952 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29954 * font.cpp (TextLayout::Layout): Always calculate segment->width
29956 (TextLayout::Render): Not here.
29958 * text.cpp (Glyphs::GetTransformOrigin): Implemented.
29960 2007-10-25 Jackson Harper <jackson@ximian.com>
29963 * runtime.h|cpp: Add the Error event to the surface. Raising this
29964 event will cause the plugins onError handler to be invoked, the
29965 default onError handler notifies the user of the error with a
29968 2007-10-25 Sebastien Pouliot <sebastien@ximian.com>
29970 * stylus.cpp|h: Keep the semi-working code as a fast path to
29971 render strokes (if no outline color is used and when width ==
29972 height). Added a hack to support OutlineColor.
29974 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
29976 * brush.cpp (Brush::SetupBrush): Now takes width and height
29977 arguments. Updated all brushes.
29979 * text.cpp (Glyphs::Render): We want to check this->width and
29980 this->height, not the width/height arguments.
29982 * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
29983 yet (surface = NULL), return.
29984 (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
29987 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
29989 * text.cpp (Glyphs::GetSizeForBrush): Implemented.
29991 * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
29993 2007-10-24 Jackson Harper <jackson@ximian.com>
29995 * type.cpp.in/h.in: Add some c-style functions for creating
29998 2007-10-24 Jackson Harper <jackson@ximian.com>
30001 * type.cpp.in/h.in: Add a create instance call to types. This
30002 will allow the parser to use our Type object instead of creating
30005 2007-10-24 Chris Toshok <toshok@ximian.com>
30007 * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
30008 g_main_context_iteration so we don't block if there isn't anything
30009 to do. also, emit 3 TickEvents to make sure the tick is
30010 propagated down into the animations.
30012 2007-10-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
30014 * xaml.cpp: No need to check if the created object is an UIElement before
30015 calling SetSurface anymore.
30016 * visual.h: Update SetSurface to virtual.
30017 * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
30019 * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
30020 the methods do nothing, the surface is still stored in Visual, but this
30021 allows classes that do not inherit from Visual to correctly set the
30022 surface on their members which do inherit from Visual).
30024 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
30026 * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
30028 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
30030 * text.cpp (TextBlock::ComputeTransform): If the scale has
30031 changed, set dirty = true so that we recalculate the layout.
30033 * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
30034 macro, just do it w/o so that we hush the compiler warning.
30036 2007-10-23 Chris Toshok <toshok@ximian.com>
30038 * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
30039 a clock in absolute terms. instead, offset it from the current
30040 time of the parent clock (or time manager).
30041 (Clock::Begin): clamp progress to 1.0
30042 (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
30043 by making it less sensitive to immediate changes.
30045 2007-10-23 Chris Toshok <toshok@ximian.com>
30047 * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
30048 audio (so we sync to the clock).
30050 * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
30052 2007-10-23 Chris Toshok <toshok@ximian.com>
30054 * clock.cpp (ManualTimeSource::SetCurrentTime): call
30055 g_main_context_iteration as a stopgap to make video elements show
30057 (TimeManager::TimeManager): remove spew.
30058 (TimeManager::Tick): re-enable the clock throttling. oops.
30060 2007-10-23 Larry Ewing <lewing@novell.com>
30062 * src/runtime.cpp: clear the background in more cases.
30064 2007-10-23 Larry Ewing <lewing@novell.com>
30066 * src/runtime.cpp: make the eventbox windowless and remove the
30067 stale event code. Let gtk do the clearing.
30069 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
30071 * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
30072 (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
30073 the correct frame rather than just rendering the first frame we
30076 2007-10-23 Chris Toshok <toshok@ximian.com>
30078 * mplayer.cpp: replace all occurences of av_gettime with
30079 TimeManager::Instance()->GetCurrentTimeUsec().
30081 * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
30083 (render_cb): re-enable the fps on the console. oops.
30085 * runtime.h (RuntimeInitFlags): add
30086 RUNTIME_INIT_TIMESOURCE_MANUAL.
30088 * type.h.in, type.cpp.in: remove BASE (should have happened on my
30089 last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
30092 * type.h, type.cpp: sync to the .in files.
30094 * clock.h, clock.cpp: add the idea of a TimeSource to the
30095 TimeManager. Two are written - SystemTimeSource, which uses the
30096 gtk timeout, and ManualTimeSource, which allows code to set what
30097 the global time should be. Also, add GetCurrentTimeUsec() for use
30098 by mplayer, so we can switch it away from av_gettime and make it
30099 possible for video to sync to the ManualTimeSource.
30101 2007-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
30103 * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
30105 2007-10-23 Larry Ewing <lewing@novell.com>
30107 * runtime.cpp: make sure we unref the surface.
30109 2007-10-23 Larry Ewing <lewing@novell.com>
30111 * runtime.cpp: avoid making gdk calls that pull in the platform
30114 2007-10-22 Jeffrey Stedfast <fejj@novell.com>
30116 * text.cpp: Don't allow Pango rendering if disabled at
30118 (TextBlock::ComputeTransform): Moved the scale logic here from
30119 OnPropertyChanged() so that we catch all transform changes.
30121 * uielement.h: Made ComputeTransform() virtual.
30123 2007-10-22 Chris Toshok <toshok@ximian.com>
30125 * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
30126 we can just cast to Clock here.
30128 * dependencyobject.h, dependencyobject.cpp: remove the Base class,
30129 and make roll EventObject and Base into one class (still called
30132 2007-10-20 Sebastien Pouliot <sebastien@ximian.com>
30134 * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
30135 * stylus.cpp|h: Add some missing functions. Rendering changes
30136 (not active, work in progress).
30138 2007-10-18 Chris Toshok <toshok@ximian.com>
30140 * dependencyobject.h: fix comment.
30142 * animation.h, animation.cpp: use the
30143 Clock::CurrentStateInvalidated event to reset the property value
30144 to baseValue instead of overriding the Clock::Stop method. This
30145 fixes clocks with FillBehavior="Stop" instead of storyboard with
30146 FillBehavior="Fill".
30148 * clock.cpp (Clock::Tick): remove a stupid block of code that was
30149 causing clocks which were Filling to spontaneously end up in their
30150 Active state again.
30152 2007-10-18 Sebastien Pouliot <sebastien@ximian.com>
30154 * geometry.cpp: New code to handle arc segments. No known issues
30155 (except the handling of near zero values which doesn't seems to
30157 * libmoon.h, Makefile.am: Remove reference to rsvg.h
30158 * rsvg.cpp|h: Remove from SVN.
30160 2007-10-17 Andrew Jorgensen <ajorgensen@novell.com>
30162 * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
30163 based on the ones from libgdiplus.
30165 2007-10-17 Chris Toshok <toshok@ximian.com>
30167 * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
30168 created managed dob to the created_elements list so it gets
30170 (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
30171 (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
30173 2007-10-17 Chris Toshok <toshok@ximian.com>
30175 * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
30176 (sizes_LDADD): same.
30178 2007-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30180 * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
30181 OBJECT_TRACKING isn't defined.
30182 * runtime.h: Enable the contextual downloader warning again.
30183 * dependencyobject.cpp: Fix build when DEBUG is defined.
30185 2007-10-16 Jeffrey Stedfast <fejj@gnome.org>
30187 * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
30188 properties changing value, don't fall thru to the rest of the
30189 checks (as then we'd re-emit it to sublisteners which isn't what
30190 we want I don't think). Also, don't change the font scale unless
30191 it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
30193 2007-10-16 Jeffrey Stedfast <fejj@novell.com>
30195 * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
30196 changes and apply the y-scale to the font so that we can more
30197 accurately path the font glyphs at the scale we intend to render
30200 * font.cpp (TextFont): Cache the scale here.
30201 (Kerning): Apply the scale.
30202 (Descender): Here too.
30203 (Ascender): And here.
30205 (GetGlyphInfo): Create and apply the scale/invert matrix. Also
30206 scale the glyph metrics.
30207 (UnderlinePosition): Apply the scale.
30208 (UnderlineThickness): Same here.
30209 (TextFontDescription): Added a scale, default to 1.0
30210 (CreatePattern): Set the scale on the pattern.
30211 (UnsetFields): When unsetting values, restore them to their
30213 (Merge): Merge the scale.
30214 (GetScale): New method.
30215 (SetScale): New method.
30217 2007-10-16 Chris Toshok <toshok@ximian.com>
30219 * dependencyobject.cpp (detach_depobj_values): call
30220 obj->SetParent(NULL) here as well, so we don't reference a
30223 * runtime.cpp (Surface::Surface): use Surface::timeline instead of
30225 (Surface::~Surface): make sure to remove the surface's clock_group
30226 from the time manager. Also, unref the timeline we create in the
30228 (runtime_shutdown): reimplement the oldest 10 alive object
30229 printing stuff in the face of using a hashtable.
30231 * runtime.h: add Surface::timeline, so we can clean it up in
30234 * dependencyobject.h (Base::) use a hash table to track alive
30235 objects instead of a list. this speeds up things immensely.
30237 * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
30238 children so any further GetParent() calls won't return a destroyed
30241 * animation.cpp (Storyboard::~Storyboard): guard against a crash
30242 when a parent clock is freed before the child clock.
30244 * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
30246 2007-10-15 Chris Toshok <toshok@ximian.com>
30248 * animation.[h,cpp]: remove the strong reference from
30249 AnimationStorage to its target object, and instead use the
30250 EventObject::DestroyEvent to implement a weak reference. See the
30251 TODO for a blurb about generalizing this.
30253 * typegen.cs (GenerateTypeCpp): remove the special case code that
30254 makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
30255 EVENTOBJECT as the parent for the DestroyedEvent to line up
30256 properly in the event tables.
30258 * type.cpp.in, type.cpp (types_init_register_events): register the
30261 * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
30262 emitted just before we clean up the EventObject's event list.
30264 2007-10-15 Jeffrey Stedfast <fejj@novell.com>
30266 * text.cpp (Layout): I think I finally figured out the scaling to
30267 apply to the units provided in the Indices property and also
30268 discovered that the Advance is not applied at the uOffset, it is
30269 applied independently of the uOffset.
30270 (Render): Same fixes as in Layout().
30272 2007-10-13 Chris Toshok <toshok@ximian.com>
30274 * animation.cpp (balf): fix bug 325175 by not taking the square
30275 root of a negative number (fixes the flashing in the credits for
30276 Monotone.) Also clean up this code so that we're not using
30277 globals to communicate parameters (through Simpson) between balf
30278 and BezierArcLength, and lower the tolerance (I doubt we need
30279 *that* much precision).
30281 2007-10-12 Chris Toshok <toshok@ximian.com>
30283 * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
30284 dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
30285 transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
30286 which gives the actual object whose property changed. Also, in a
30287 few instances fix the NotifyAttachersOnPropertyChanged call that
30288 some classes used to not use the subprop, but the prop. The
30289 subprop doesn't refer to "this" in those instances, but to @obj.
30290 @prop refers to "this".
30292 * collection.[h,cpp]: use the above change to correctly support
30293 the DependencyObject parameter of OnCollectionChanged (when the
30294 change type is ItemChanged).
30296 * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
30297 move the ZIndex property support from UIElement to Panel, which
30298 makes more logical sense (and is likely the reason MS removed the
30299 property from UIElement in 1.1) -- ZIndex is about what happens to
30300 this UIElement in relation to its siblings.
30302 2007-10-12 Sebastien Pouliot <sebastien@ximian.com>
30304 * shape.cpp: Only set miter limit if line join is set to miter.
30306 2007-10-12 Chris Toshok <toshok@ximian.com>
30308 * collection.cpp: move the panel logic away from VisualCollection.
30309 It belongs in Panel::OnCollectionChanged.
30311 * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
30312 everything the VisualCollection code used to do on its behalf.
30314 * uielement.h, uielement.cpp: introduce a new field for use with
30315 the dirty code - force_redraw_of_new_bounds. Basically, we set
30316 the field according to the parameter passed to UpdateBounds.
30318 * dirty.cpp (UpdateBounds): force an invalidate if
30319 el->force_redraw_of_new_bounds is set.
30321 2007-10-12 Chris Toshok <toshok@ximian.com>
30323 * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
30324 RemoveTimeout) which wrap the glib timeout calls we were making.
30325 This lets us keep track of active timeout ids and remove them all
30326 when the TimeManager shuts down. So, if we leak MediaElements
30327 (which seems to be happening in TopBanana), we don't crash.
30329 * mplayer.cpp: use the new TimeManager timeout call instead of the
30330 glib mainloop directly.
30334 2007-10-12 Jeffrey Stedfast <fejj@novell.com>
30336 * downloader.cpp (downloader_init): Default the DownloadProgress
30339 2007-10-12 Jackson Harper <jackson@ximian.com>
30341 * downloader.h: Add an access to the downloader state. I need
30342 this in the plugin.
30344 2007-10-12 Jb Evain <jbevain@novell.com>
30346 * brush.cpp|h: add image_brush_set_source.
30348 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
30350 * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
30351 where it doesn't handle J-Type picture frames.
30353 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
30355 * panel.cpp|h: Split Render into Render and RenderChildren, so
30356 the later can be overriden in InkPresenter.
30357 * stylus.cpp|h: A quick (see FIXME) implementation to render
30358 ink found in some xaml files.
30360 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
30362 * mplayer.cpp: Updated to use the new Queue class.
30363 (AdvanceFrame): Accessing the queue directly as a linked list
30364 allows us to simplify the loop a little so that we don't have to
30365 keep a reference to the previous packet's decoded frame.
30367 * list.cpp: Added a new Queue class which will replace GAsyncQueue
30370 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
30372 * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
30373 (AdvanceFrame): Keep a reference to the previous frame in case we
30374 reach the end of the queue.
30376 2007-10-11 Jb Evain <jbevain@novell.com>
30378 * dependencyobject.cpp|h: add dependency_object_set_name.
30380 * media.cpp|h: add media_attribute_get_value and
30381 media_attribute_set_value
30383 * playlist.cpp|h: populate MediaAttributeCollection when
30384 a playlist entry is opened.
30386 2007-10-11 Larry Ewing <lewing@novell.com>
30388 * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
30389 areas... have more fun in general.
30391 * src/rect.h: replace Floor function with RoundOut function.
30392 * panel.cpp, dirty.cpp: use RoundOut where appropriate. Fixes
30393 clipping issue in sprawl.
30395 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
30397 * xaml.cpp: Let InkPresenter handle childs like a Canvas (from
30400 2007-10-11 Jb Evain <jbevain@novell.com>
30402 * playlist.cpp: replace C++ casts to plain casts.
30404 2007-10-11 Jb Evain <jbevain@novell.com>
30406 * collection.cpp: replace dynamic_casts with plain casts
30407 as per Miguel suggestion.
30409 2007-10-11 Jb Evain <jbevain@novell.com>
30411 * collection.cpp|h: add, implement and expose the
30412 MediaAttributeCollection::GetItemByName method.
30414 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
30416 * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
30418 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
30420 * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
30421 * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
30422 char/char mismatch warnings.
30423 * visual.cpp: Fix no newline warning.
30424 * runtime.cpp: Fix a initialization warning.
30425 * demo.cpp: Remove unused variable.
30427 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
30429 * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
30430 matches base_unref behaviour.
30431 * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
30434 2007-10-10 Chris Toshok <toshok@ximian.com>
30436 * runtime.cpp (runtime_shutdown): explicitly drain all remaining
30437 pending managed unrefs.
30439 * dependencyobject.cpp: remove the Base::ref/unref implementations
30440 from here. Add the threadsafe base_unref_delayed code, as well as
30441 code to manage a tick call to free up the instances on the next
30442 clock tick. Also provide an external api (drain_unrefs -- bad
30443 name, fix me plz k thx) so that runtime.cpp can explicitly unref
30444 everything when we shutdown (if they haven't already been dealt
30447 * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
30448 we don't have 2 implementations of all these methods. Instead,
30449 just ifdef the relevant portions of the methods, and keep them in
30450 dependencyobject.h. Also, add prototypes for drain_unrefs and
30451 base_unref_delayed, which is called from managed code.
30453 * collection.h, collection.cpp: make Clear take an optional
30454 "emit_event" argument (default = true.) Call Clear instead of
30455 list->Clear(true) in our dtor so we clean up the namespaces and
30458 * debug.cpp: use an extern "C" block. looks nicer.
30460 2007-10-10 Sebastien Pouliot <sebastien@ximian.com>
30462 * brush.cpp: Handle GradientStop with negative offset like
30463 Silverlight (seems to) do.
30465 2007-10-10 Chris Toshok <toshok@ximian.com>
30467 * panel.cpp (Panel::~Panel): no need to clear our Children
30468 collection. the normal dtor stuff will do that for us.
30470 2007-10-10 Larry Ewing <lewing@novell.com>
30472 * media.cpp: Fill with the element extents don't just paint the
30473 surface because if the stretch is specified we may end up painting
30474 outside the proper area.
30476 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
30478 * media.cpp: When updating the MediaElement's progress, get the Downloader's
30479 DownloadProgressProperty.
30481 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
30483 * visual.cpp, visual.h: Added visual_set_surface, and guard against
30484 overwriting a set surface with null.
30486 2007-10-10 Jackson Harper <jackson@ximian.com>
30488 * collection.cpp: Set the surface when adding a visual element.
30490 2007-10-10 Jackson Harper <jackson@ximian.com>
30492 * shape.cpp: We need to do something when line properties are
30493 changed. Fixes test-animation-line.xaml
30495 2007-10-10 Jackson Harper <jackson@ximian.com>
30497 * xaml.cpp: Don't allow the same property to be set twice.
30499 2007-10-09 Jackson Harper <jackson@ximian.com>
30501 * xaml.cpp: When we create custom elements we also need to set the
30502 surface on them and mark them for cleanup.
30504 2007-10-09 Jackson Harper <jackson@ximian.com>
30506 * xaml.cpp: When we are creating objects from a string, set the
30507 encoding to utf8 so that expat doesn't try to determine the
30508 encoding from the ?xml declaration (which will be incorrect
30509 because the string is in utf8).
30511 2007-10-09 Chris Toshok <toshok@ximian.com>
30513 * clock.cpp (ClockGroup::Stop): If the clock group has children we
30514 depend on stopping them first. But if the clock group is without
30515 children, chain up to Clock::Stop here.
30517 2007-10-09 Jb Evain <jbevain@novell.com>
30519 * uielement.h: define new methods RenderClipPath and
30520 IntersectBoundsWithClipPath.
30521 * uielement.cpp: implement them.
30522 * panel.cpp, shape.cpp, media.cpp: use them.
30524 2007-10-09 Chris Toshok <toshok@ximian.com>
30526 * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
30527 frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
30528 brush.cpp, text.cpp: s/Attachee/Attacher.
30530 * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
30531 call that is used at dtor time to call Detach on all
30532 DependencyObject-subclassed Values, and 2) make NULL available in
30533 detach as a wildcard - passing NULL for the property detaches all
30534 properties that the current object might be watching on.
30536 Also, correct a longstanding problem in terminology/api. if A's
30537 code calls B->Attach (..., this), then A is the Attacher, not the
30538 Attachee. Basically s/Attachee/Attacher in all places,
30541 * dependencyobject.cpp: same changes as above. Also, change the
30542 current_values hash table to key off the DependencyProperty, not
30543 off the DependencyProperty name. This allows us to use a direct
30544 hash, as opposed to a string hash.
30546 * collection.cpp (dtor): make sure sure to detach from all the
30547 list elements before we clear the list.
30549 2007-10-09 Jeffrey Stedfast <fejj@novell.com>
30551 * font.cpp (Layout): Only break words on ASCII lwsp, we should not
30552 break on nbsp's for example.
30554 2007-10-09 Jackson Harper <jackson@ximian.com>
30556 * xaml.cpp: Make sure the Surface gets set on custom created
30557 UIElements. Also add them to the created list, so they get freed.
30559 2007-10-09 Jackson Harper <jackson@ximian.com>
30561 * control.cpp: Since controls are UIElements we need to make sure
30562 their surface is set when we create them from XAML.
30564 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
30566 * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
30568 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
30570 * debug.cpp, debug.h: Conditionally compile support for managed stack
30573 * runtime.cpp: add more debug code.
30575 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
30577 * text.cpp (OnPropertyChanged): We may need to relayout even if
30578 the wrapping is set to NoWrap.
30580 2007-10-08 Zoltan Varga <vargaz@gmail.com>
30582 * text.cpp (OnPropertyChanged): Do a relayout if the Width property
30583 changes and text wrapping is enabled.
30585 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
30587 * mplayer.cpp (Open): If the media has video, load the first video
30590 (AdvanceFrame): Fixed to "end" properly.
30592 * media.cpp: Don't manually call DisplayFrame() anymore.
30594 2007-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
30596 * xaml.cpp: Set the surface of newly created objects (where applicable).
30597 * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
30598 * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
30599 brand new CreateDownloader method.
30600 * visual.h: Added a surface field, complete with setters and getters.
30601 * downloader.cpp, downloader.h: Add a context field.
30602 * runtime.h: Add a downloader_context field, and CreateDownloader methods.
30603 * runtime.cpp: Add a downloader_context field.
30605 2007-10-09 Larry Ewing <lewing@novell.com>
30607 * media.cpp: add clipping to shape::DoDraw and to the bounds
30610 2007-10-08 Larry Ewing <lewing@novell.com>
30613 * panel.cpp: intersect the bounds with the clip path to
30614 optimize the invalidated region.
30616 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30619 2007-10-08 Larry Ewing <lewing@novell.com>
30622 * panel.cpp: intersect the bounds with the clip path to
30623 optimize the invalidated region.
30625 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30628 2007-10-08 Larry Ewing <lewing@novell.com>
30631 * panel.cpp: intersect the bounds with the clip path to
30632 optimize the invalidated region.
30634 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30637 2007-10-08 Larry Ewing <lewing@novell.com>
30640 * panel.cpp: intersect the bounds with the clip path to
30641 optimize the invalidated region.
30643 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30646 2007-10-08 Larry Ewing <lewing@novell.com>
30649 * panel.cpp: intersect the bounds with the clip path to
30650 optimize the invalidated region.
30652 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30655 2007-10-08 Larry Ewing <lewing@novell.com>
30657 * runtime.cpp: change previous logic to drop the alpha
30658 completely here until more testing can be done.
30660 2007-10-08 Larry Ewing <lewing@novell.com>
30662 * runtime.cpp: draw the background color blended over white.
30664 2007-10-08 Larry Ewing <lewing@novell.com>
30666 * media.cpp: render clip paths on media elements.
30668 2007-10-07 Larry Ewing <lewing@novell.com>
30673 * array.cpp: use g_utf8_next_char in some places to start making
30674 the parsers more utf8 safe. Make rect/point_from_str more robust
30675 against separator characters
30677 2007-10-07 Chris Toshok <toshok@ximian.com>
30679 * clock.cpp (Clock::Tick): make sure we're reversed before
30680 switching to Fill if the clock is at 0 (and make sure we're not
30681 reversed before switching to Fill on the other end of the
30682 timespan). Some animations were skipping directly to fill without
30684 (ClockGroup::Tick): don't Tick a child clock if it's about to
30685 Stop. the new tick might cause it to fill.. this needs work
30688 2007-10-06 Jb Evain <jbevain@novell.com>
30690 * media.cpp (Image::Render): Deal with clipping.
30692 2007-10-05 Chris Toshok <toshok@ximian.com>
30694 * animation.cpp (KeyFrameComparer): fix airlines (and probably a
30695 host of other keyframe usage besides). The problem was that this
30696 function was treating its args as keyframe*'s, when in actuality
30697 they were keyframe**'s. that explains the intermittent nature of
30698 the bug, as well as the faulty sorting I was experiencing earlier.
30700 * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
30702 2007-10-05 Chris Toshok <toshok@ximian.com>
30704 * clock.cpp (TimeManager::Tick): I have no idea how this is
30705 possible, but the throttle code is *completely* screwing up the
30706 Airlines demo animations.
30708 2007-10-05 Jackson Harper <jackson@ximian.com>
30710 * control.cpp: need to pass this down. Fixes dragging controls in
30713 2007-10-05 Jeffrey Stedfast <fejj@gnome.org>
30715 * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
30718 (SetValue): And here too after a Seek() (altho it won't work if
30719 the media is paused).
30721 * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
30722 update, which is true if any avcodec_decode_video() sets redraw to
30724 (DisplayFrame): New method largely based on JB's work to load the
30725 current video frame into the mplayer surface.
30727 2007-10-05 Jb Evain <jbevain@novell.com>
30729 * media.cpp|h, playlist.cpp|h: Don't open the first entry
30730 when a playlist entry has been stopped before switching to
30733 2007-10-04 Chris Toshok <toshok@ximian.com>
30735 * clock.cpp: fix a couple of compilation warnings, and tighten up
30736 the list_clocks output.
30738 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
30740 * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
30741 since it is not locale dependant.
30743 * rect.cpp (rect_from_str): Same.
30745 * point.cpp (point_from_str): Same.
30747 * xaml.cpp (get_point): Fixed to update *in properly on success.
30749 2007-10-05 Jb Evain <jbevain@novell.com>
30751 * media.cpp: correctly advertise 'Opening' state of MediaElement.
30753 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
30755 * xaml.cpp: (more_points_available): Simplified by looping while
30756 isspace. Also, update our input pointer if we have to scan over
30758 (get_point): Now returns bool based on whether it manages to
30759 extract a point or not.
30760 (geometry_from_str): Updated.
30762 2007-10-04 Jackson Harper <jackson@ximian.com>
30764 * xaml.cpp: Points after the initial two line points should
30765 actually create new line segments, not a polyline, this fixes
30766 relative points on multiple lines.
30768 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
30770 * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
30771 hasn't completely been initialized.
30772 (Glyphs::SetIndices): Do not do scaling here, this seems to be
30773 font size dependant.
30775 * shape.cpp (DoDraw): Use 'delete []' to free dmul.
30777 2007-10-04 Jackson Harper <jackson@ximian.com>
30779 * xaml.cpp: Handle repeated bezier segments properly.
30781 2007-10-04 Chris Toshok <toshok@ximian.com>
30783 * clock.cpp: lots of little changes. fixes clock16.xaml, and
30784 therefor the score animation in dr.popper goes away properly.
30785 also fixes a few other issues with FillBehavior (checked by our
30788 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
30790 * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
30792 (Layout): Use a local TextFont variable.
30794 (text_init): Always call font_init() as Glyphs use it even when
30795 text=pango is specified.
30797 2007-10-04 Sebastien Pouliot <sebastien@ximian.com>
30799 * shape.cpp|h: Shapes that uses their Width and Height must use
30800 them for brush size. Fix brush rendering when used with
30801 UIElement.RenderTransform property.
30803 2007-10-03 Chris Toshok <toshok@ximian.com>
30805 * text.cpp: make Glyphs usable even when text=pango. "usable"
30806 means "don't crash" :)
30808 2007-10-03 Chris Toshok <toshok@ximian.com>
30810 * uielement.h: rename UseAA() to EnableAntiAlias(). it's
30811 arguably a better name, and more importantly it's the name that
30812 media.cpp/h changed it too, which broke the AA hack used in
30815 * dirty.cpp (process_dirty_elements): rename UseAA() to
30818 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
30820 * array.cpp: Move double array allocations back to new/delete.
30822 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
30824 * font.cpp (EmSize): Removed, not needed.
30825 (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
30826 bit of memory that we aren't using.
30828 * text.cpp (TextBlock::SetFontSource): Implemented.
30829 (text_init): Default StyleSimulations to None.
30831 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
30833 * brush.cpp|h: SL and Cairo defaults to different values (end
30834 color versus start color) when a gradiant is restricted to a
30835 single color (e.g. if the start and end points of a linear
30836 gradient are identical).
30838 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
30840 * text.cpp: Implemented the Glyphs element.
30842 * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
30843 with the the Glyphs element implemented in text.cpp.
30844 (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
30845 (GetGlyphInfoByIndex): New method.
30846 (CreatePattern): If the filename is specified, don't call
30847 FcFontMatch(), simply return the constructed pattern.
30849 2007-10-02 Chris Toshok <toshok@ximian.com>
30851 * clock.h, clock.cpp: remove TimeManager::current_fps, it's
30854 2007-10-02 Chris Toshok <toshok@ximian.com>
30856 * runtime.cpp (Surface::UpdateFullScreen): just call
30857 gtk_window_fullscreen instead of setting decorations/above
30858 manually. this puts us on top of the panel.
30860 2007-10-02 Chris Toshok <toshok@ximian.com>
30862 * clock.h, clock.cpp: rip out the old stupid throttling code and
30863 replace it with an exponential moving average of the delays.
30865 2007-10-02 Chris Toshok <toshok@ximian.com>
30867 * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
30868 use them to make test/xaml/clock8.xaml work.
30870 2007-10-02 Larry Ewing <lewing@novell.com>
30872 * shape.cpp (Path::ComputeBounds): use the specified width/height
30873 if stretch is != StretchNone. Fixes rendering issues with halo
30874 and several other sites.
30876 2007-10-02 Chris Toshok <toshok@ximian.com>
30878 * animation.h, animation.cpp: override Stop() on AnimationClocks
30879 so we can reset the property value to the baseValue stored in our
30882 * clock.h, clock.cpp: fix the starting of stopped clockgroups when
30883 there are active children (fixes the storyboards running for 1
30884 tick then stopping). Add more convoluted code in order to get the
30885 expected behavior when FillBehavior=Stop on a storyboard.
30887 2007-10-02 Chris Toshok <toshok@ximian.com>
30889 * clock.h, clock.cpp: a few changes. quit with all the delay
30890 computation in the throttling code, and just deal with fps until
30891 we're ready to switch to delays. it simplifies everything a
30892 bunch. Also, narrow the type for Clock::Get/SetParent to
30893 ClockGroup. Add some rudimentary code for printing out the state
30894 of all clocks (use TimeManager::Instance()->ListClocks() or
30895 time_manager_list_clocks()). Also, remove the TimeManager::Tick
30896 code which started clocks. This commit changes the way
30897 storyboards are registered, so the only things in the
30898 TimeManager's list should be the per-surface ClockGroups, which
30899 are started in Storyboard::Begin (if they aren't already running.)
30901 * collection.cpp (VisualCollection::Add): this is a bug waiting to
30902 happen. Call VisualUpdate (thereby setting the child's parent and
30903 initializing the transforms/opacity) before emitting Loaded on the
30906 * animation.h, animation.cpp: Storyboards now add their clocks to
30907 the per-surface ClockGroup. This involves some groveling to find
30908 the surface, but it's nothing we haven't seen before. There's no
30909 direct TimeManager calls here now - stopping the surface's
30910 ClockGroup will stop all animations running on it.
30912 * runtime.h, runtime.cpp: add the per-surface ClockGroup. all
30913 storyboards attach to this, and this attaches to the TimeManager.
30915 2007-10-02 Jackson Harper <jackson@ximian.com>
30917 * media.cpp: Some default values to avoid nullref exceptions.
30919 2007-10-02 Sebastien Pouliot <sebastien@ximian.com>
30921 * xaml.cpp: Add support for 'F' in the PML parser to enable setting
30922 the FillMode of Geometry objects. Removed default value set as it is
30923 identical to the default property value.
30925 2007-10-02 Jb Evain <jbevain@novell.com>
30927 * playlist.cpp|h: implemented start time for playlist entries.
30929 2007-10-02 Jb Evain <jbevain@novell.com>
30931 * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
30933 2007-10-02 Larry Ewing <lewing@novell.com>
30935 * uielement.cpp (UIElement::Invalidate): Only invalidate if
30937 * dirty.cpp (process_dirty_elements): be sure to invalidate before
30938 and after the opacity change.
30940 2007-10-02 Jb Evain <jbevain@novell.com>
30942 * playlist.cpp: deal with non lowercase file exts.
30944 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30946 * font.cpp: Reduced Glyph table memory usage.
30948 2007-10-01 Chris Toshok <toshok@ximian.com>
30950 * dirty.cpp (process_dirty_elements): remove the special if checks
30951 which kept the ComputeBounds/Invalidate code from running on the
30952 toplevel surface. Canvas::ComputeBounds() does the right thing
30953 for the toplevel surface, so we just trust it. fixes invalidation
30956 * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
30957 (OnSubPropertyChanged): same.
30959 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30961 * brush.cpp|h: Change SetupBrush and SetupGradient signatures to
30962 void (instead of the, now, unused bool);
30964 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30966 * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
30968 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30970 * shape.cpp|h: Remove Path::IsFilled since the property
30971 PathFigure::IsFilledProperty doesn't exists anymore.
30973 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
30975 * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
30978 * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
30980 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
30982 * runtime.cpp: Only show the server as the url in the fullscreen
30985 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
30987 * panel.cpp: Call ComputeBounds before invalidating on Background
30988 changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
30990 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
30992 * fullscreen.h, fullscreen.xaml: Added.
30993 * text.h: Make GetActualHeight and GetActualWidth public.
30994 * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
30995 objects now: the fullscreen message and the toplevle canvas),
30996 SetSourceLocation and Show/HideFullScreenMessage.
30997 * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
30998 Surface::GetTopLevel.
31000 2007-09-30 Zoltan Varga <vargaz@gmail.com>
31002 * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
31005 * text.cpp (text_destroy): Avoid crash if default_foreground_brush
31008 2007-09-28 Chris Toshok <toshok@ximian.com>
31010 * Makefile.am: remove the XRANDR conditional here. it's #defined
31013 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31015 * font.cpp (CreatePattern): If a filename has been specified for
31016 loading a font, don't set family values. Also, call
31017 FcDefaultSubstitute() on the pattern before trying to find a
31020 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31022 Optimization hack that saves time by not recalculating the layout
31023 when the foreground brush changes (since we'd have exactly the
31026 * font.cpp (TextRun): Now takes the address of the brush than the
31027 brush itself, so that when brushes change on the Inline, we get
31028 the brush change for free.
31030 * text.cpp (LayoutSilverlight): Pass the addresses of the
31031 foreground brushes to TextRun ctor and don't bother with the
31032 default foreground brush here, save that for ::Paint-time.
31033 (LayoutPango): Same idea as LayoutSilverlight().
31034 (Paint): Get the default foreground and pass that off to the
31035 pango/silverlight text renderers.
31036 (OnPropertyChanged): Don't force a re-layout if the property that
31037 changed was the TextBlock::ForegroundProperty.
31038 (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
31040 * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
31041 argument so that we don't have to specify it in the creation of
31042 our layout attributes (this saving us a re-layout when a brush
31044 (mango_attr_foreground_new): Now takes the address of the brush
31045 rather than the brush itself, so that when brushes change on the
31046 Inline, we get the brush change for free.
31048 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31050 * text.cpp (TextBlock): We cannot re-use the
31051 default_foreground_brush here because we cannot allow it to be
31052 altered in any way.
31054 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31056 * font.cpp (TextFont::IsScalable): New method.
31057 (TextFont::Path): Paths a glyph but does not stroke or fill. Only
31058 available if the font is scalable.
31059 (TextLayout::Render): Cache each segment's cairo_path_t so that
31060 future renders do not have to do it on a glyph-by-glyph basis
31061 (avoids possible glyph cache misses). May also save time by doing
31062 a single fill rather than a fill per glyph.
31064 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31066 * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
31068 (RenderGlyphPath): Same.
31069 (UnderlinePosition): New method.
31070 (UnderlineThickness): New method.
31071 (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
31074 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31076 * text.cpp (LayoutSilverlight): LineBreaks don't really care about
31077 TextDecorations or Foreground properties.
31079 * font.cpp (TextRun::~TextRun): unref the font.
31080 (TextSegment): now references the original TextRun instead of
31081 copying pointers/values.
31082 (TextLayout::Render): Updated for above change.
31084 2007-09-28 Zoltan Varga <vargaz@gmail.com>
31086 * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
31088 (LoadCode): Change return type to bool to indicate a loading error.
31090 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
31092 * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
31093 (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
31094 false, then it signifies MediaEnded, no need to explicitly check.
31095 (MediaElement::SetSource): Delete the current source here.
31096 (MediaElement::~MediaElement): C++ `delete' operator doesn't
31097 handle freeing NULL pointers.
31098 (MediaElement::DownloaderComplete): No need to delete the source
31099 here, done in SetSource() instead.
31101 * font.cpp: Created my own GlyphMetrics struct which uses doubles
31102 instead of ints for more accurate layout/rendering calculations.
31103 (Layout): When comparing to max_width, add 1.0 to account for
31104 rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
31105 width/height values for the same reason.
31107 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
31109 * xaml.cpp: Free locally allocated Points inside get_point_array.
31111 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
31113 * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
31116 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
31118 * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
31119 thickness == 0 optimization.
31121 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31123 * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
31126 * text.cpp: Merged with custom text layout code - layout algorithm
31127 is chosen at runtime_init() via flags or environment variable.
31129 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31131 * runtime.cpp (runtime_init): Don't check pango version info,
31132 we're just gonna statically link in pango (and/or do
31133 configure-time checks if the user decides to link to a system
31134 pango). Implemented some preliminary environment variable parsing
31135 action to decide if the user wnts to use ffmpeg vs ms codecs,
31136 pango vs my "silverlight" text layout engine, etc.
31138 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31140 * runtime.cpp (runtime_init): Now takes a flags argument for
31141 enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
31142 then make sure pango is recent enough (if not, print a warning
31143 akin to the cairo warning).
31145 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
31147 * array.cpp: Fix issues on double parsing, including bug #328915 and
31148 test cases in /moon/test/xaml/points-torture.xaml
31150 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31152 * animation.cpp: Add a few null checks.
31154 2007-09-27 Larry Ewing <lewing@novell.com>
31156 * media.cpp: Don't mark our download progress as 100% until we've
31157 been notified by the downloader that it is complete. Some
31158 programs check download progress to decide when they can safely
31159 poke at the media element properties.
31160 * downloader.cpp: set the final downloader progress to 1.0 not 100.
31162 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
31164 * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first
31165 line. Fix bug #328907.
31167 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31169 * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
31170 change InitializeFromXaml to take a XamlLoader argument.
31172 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31174 * xaml.cpp: More unrefs.
31176 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31178 * text.cpp: Unref a few newly created objects.
31179 * control.cpp: Remove an unnecessary ref.
31181 2007-09-26 Zoltan Varga <vargaz@gmail.com>
31183 * text.cpp (SetValue): Implement proper handling of the Text property.
31185 (OnPropertyChanged): Force a relayout when the foreground property changes.
31186 (Layout): Remove the laying out of the contents of the Text property, since the
31187 text is now contained in the first inline.
31189 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31191 * font.cpp (Layout): Include the space char on the line before
31192 wrapping, this is noticable when TextDecorations="Underline" is
31194 (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
31195 (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
31196 (TextFont::Render): Implemented.
31198 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31200 * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
31201 (and was removed elsewhere, except here);
31203 2007-09-26 Chris Toshok <toshok@ximian.com>
31205 * clock.cpp (TimeManager::Tick): a few changes. first and
31206 foremost, fix the signs on the FPS_ADJUSTMENTS. oops. also, add
31207 a buffer of 50ms on either side of the timeout before we consider
31208 the Tick either slow or fast. Increase the number of out-of-line
31209 ticks we need and decrease the fps adjustment.
31211 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31213 * text.cpp (OnCollectionChanged): Needs to call Invalidate().
31215 2007-09-26 Chris Toshok <toshok@ximian.com>
31217 * clock.cpp: initialize the min_timeout based on a good default
31218 max fps (60 in our case). Also, calculate the fps adjustments in
31221 * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
31222 it's handled by TimeManager's default.
31224 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31226 * font.cpp: A bunch of fixes/changes to mimic Microsoft's
31227 Silverlight TextBlock layout logic.
31229 2007-09-26 Andrew Jorgensen <ajorgensen@novell.com>
31231 * Makefile.am: Added missing files for dist tarball
31233 2007-09-26 Chris Toshok <toshok@ximian.com>
31235 * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
31236 we just adjust fps by a fixed amount (4fps) either up or down, if
31237 a certain number (5, by default) of ticks in a row take either
31238 less or more time to complete (respectively), than the current
31241 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31243 * moon-path.c: Fix typos.
31244 * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
31246 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31248 * shape.h|cpp: Remove Line (direct path manipulation) hack.
31250 2007-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
31252 * xaml.cpp: Unref collections and matrix transforms we create.
31254 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
31256 * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo
31259 2007-09-26 Zoltan Varga <vargaz@gmail.com>
31261 * text.cpp (TextBlock): Set an empty string as a default Text property.
31262 (InsideObject): Implement this for text blocks.
31264 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
31266 * font.cpp: Fix warning.
31268 2007-09-25 Larry Ewing <lewing@novell.com>
31270 * brush.cpp|h: add image_brush_create_similar to simplify creating
31271 similar surfaces. Use it where appropriate.
31273 * media.ccp: use image_brush_create_similar where possible. In
31274 MediaElement::Render draw with opacity directly rather than
31275 creating a temporary surface for every frame. Rework image opacity
31276 cache so that we don't have to recreate the surface every time.
31278 2007-09-25 Jb Evain <jbevain@novell.com>
31280 * media.cpp|h: let the MediaElement be the only one to trigger
31281 its own events, terminate its friendship with MediaBase.
31283 2007-09-25 Jb Evain <jbevain@novell.com>
31285 * playlist.cpp|h: trigger a parsing error when no href attribute
31286 is found for base and ref elements.
31288 2007-09-25 Jb Evain <jbevain@novell.com>
31290 * playlist.cpp|h, media.cpp: Auto play for playlists.
31292 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31294 * font.cpp (Render): Fixed some y1 offset logic that didn't amke
31295 any sense (and was wrong afaict anyway). We now render exactly
31296 like Microsoft Silverlight.
31298 2007-09-24 Jb Evain <jbevain@novell.com>
31300 * playlist.cpp: close the previous source before playing
31303 2007-09-24 Jb Evain <jbevain@novell.com>
31305 * mplayer.cpp: on Close, reset height and width to zero.
31307 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31309 * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
31310 either the NaturalWidth or NaturalHeight changes.
31312 2007-09-24 Jb Evain <jbevain@novell.com>
31314 * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
31315 only a SingleMedia deals with the MediaPlay directly. A playlist
31316 being a collection of either other playlist or singlemedias,
31317 playing one at a time.
31319 2007-09-24 Jb Evain <jbevain@novell.com>
31321 * media.cpp, playlist.cpp: let the Media Sources change
31322 the state of the MediaElement (Playing/Paused/Stopped).
31324 2007-09-24 Jb Evain <jbevain@novell.com>
31326 * media.h: let the media source change the properties
31327 of the media element. Make MediaSource friend of MediaElement
31329 * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
31331 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31333 * font.cpp: Added kerning.
31335 * mplayer.cpp: Added mutex locking for the target_pts variable.
31337 2007-09-24 Jb Evain <jbevain@novell.com>
31339 * playlist.cpp: Playlist::IsPlaylistFile: return false
31342 2007-09-23 Jb Evain <jbevain@novell.com>
31344 * playlist.cpp: A base element stores the base in
31345 a href attribute, not in its body.
31347 2007-09-22 Chris Toshok <toshok@ximian.com>
31349 * Makefile.am (USE_XRANDR): define USE_XRANDR.
31351 * runtime.cpp (Surface::realized_callback): get the RANDR screen
31352 config info, and set the TimeManager's max refresh to match the
31355 * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
31358 2007-09-22 Zoltan Varga <vargaz@gmail.com>
31360 * xaml.h xaml.cpp: Add support for parsing x:Code elements and
31361 passing them to managed code.
31363 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
31365 * mplayer.cpp (audio_play): Slightly optimized the volume
31368 * font.cpp (Layout): Keep track of the line ascend and pad our
31369 extents with an extra pixel on all sides to account for hinting.
31370 (Render): Starts rendering glyphs 1 pixel in. Also modified the
31371 logic such that we didn't have to treat path/bitmap glyphs
31374 2007-09-21 Jeffrey Stedfast <fejj@novell.com>
31376 * font.cpp: Now handles scalable fonts by rendering their outline
31377 paths rather than rendering bitmaps.
31379 * moon-path.c (moon_path_move_to): Resize the path auto-magically
31380 if we don't have enough room. Same for all of the other
31381 line_to/curve_to/etc.
31383 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
31385 * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
31386 the old width extents).
31387 (Layout): When breaking a long line, the new line height should
31388 not be set to 0 (duh), it should be set to the font height.
31390 2007-09-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
31392 * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
31393 the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
31394 managed code to set them. Keep track of mappings in native code, call
31395 into managed code only if a mapping is not found here. Keep a list of
31396 missing assemblies, allows managed code to request downloading of
31397 several assemblies before trying to parse xaml again. Added
31398 XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
31399 successful (and only then), requests a vm to be loaded, before calling
31400 into managed code to actually create the managed object.
31402 2007-09-20 Chris Toshok <toshok@ximian.com>
31404 * type.cpp, type.cpp.in (types_init_register_events): register the
31405 LostFocus/GotFocus events.
31407 * uielement.h: add LostFocusEvent/GotFocusEvent.
31409 * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
31411 2007-09-20 Jeffrey Stedfast <fejj@gnome.org>
31413 * text.cpp (InsideObject): Removed.
31415 * font.cpp (Layout): Add the horiBearingX value of the last glyph
31416 in each line to the width of said line.
31417 (RenderGlyphBitmap): Cache the surface and use it as a mask when
31418 filling so that the true source pattern shows thru.
31420 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
31422 * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
31424 (mango_renderer_show_layout): Instead of having pango render the
31425 text, do it ourselves using our cached paths from the previous
31426 call to mango_renderer_layout_path().
31427 (mango_renderer_layout_path): Clear our cache paths.
31429 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
31431 * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
31432 foreground changes.
31433 (OnSubPropertyChanged): Same.
31435 * font.cpp (GetFont): No longer need to pass the size to
31437 (TextFont::Load): No longer needs the size argument.
31438 (TextFont::.ctor): We just get the size from the pattern now.
31439 (TextFontDescription::CreatePattern): Call FcFontMatch() on our
31440 generated font pattern here instead of having our lower-level
31441 TextFont::.ctor do it.
31442 (TextFont::Ascender): Use the size metrics so that this always
31443 works properly (at least it seems to).
31444 (TextFont::Height): Same.
31445 (TextLayout::Layout): Changed line-height logic a bit for
31448 2007-09-20 Chris Toshok <toshok@ximian.com>
31450 * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
31451 type event hashes as well if we don't find it in ours.
31453 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
31455 * brush.cpp: Implemented MappingMode for LinearGradientBrush.
31456 Buttons from Dr Popper are now rendered correctly.
31458 2007-09-20 Chris Toshok <toshok@ximian.com>
31460 * typegen.cs (GenerateTypeCpp): add a call to
31461 types_init_register_events.
31463 * type.h.in, type.cpp.in: add Type::RegisterEvent,
31464 Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
31466 * type.cpp.in: add types_init_register_events, which registers all
31467 the events we care about for all the types. we do it here to
31468 guarantee that events have been registered by the time any
31469 instance code is run for any type.
31471 * dependencyobject.h, dependencyobject.cpp: remove the event
31472 registration from EventObject, it's moving to Type. so the Type
31473 will contain the name to id hash, and the EventObject will only
31474 contain an array of GSLists, where the index into that array is
31477 * clock.cpp (clock_init): lookup the static events here.
31479 * runtime.cpp (runtime_init): same.
31481 * animation.cpp (animation_init): same.
31483 * downloader.cpp (downloader_init): same.
31485 * uielement.cpp (uielement_init): same.
31487 * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
31488 src/type.h, src/runtime.h, src/downloader.h: events are static to
31489 the classes now, instead of being per-instance.
31491 * src/types.h src/types.cpp: regen.
31493 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
31495 * geometry.cpp: Avoid re-allocating path memory when possible.
31496 * moon-path.c|h: Added documentation and new moon_path_renew and
31497 moon_path_clear functions to reduce memory re-allocations.
31498 * shape.cpp|h: Avoid re-allocating path memory when possible.
31500 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
31502 * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
31503 Bubbles from bubblemark.com are now rendered correctly.
31505 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
31507 * shape.cpp|h: Remove dead code.
31509 2007-09-19 Jeffrey Stedfast <fejj@novell.com>
31511 * font.cpp: More fixes to make stuff build/work (more or less).
31513 * text.patch: Patch to make text layout/rendering use my new code
31516 2007-09-19 Chris Toshok <toshok@ximian.com>
31518 * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
31520 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
31522 * moon-path.c|h: New. Create simple or complex paths without a
31523 (expensive) cairo_context_t using an API similar to cairo.
31524 * geometry.cpp|h: Use moon_path functions. Added (still inactive)
31525 code to compute bounds for paths.
31526 * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API
31527 for Polylines and Polygons. Still not perfect for large thickness
31528 and steep angles but 8-10x faster and better (no artifact left)
31529 than previous code, see new xaml animation tests).
31530 * rsvg.cpp|h: Adapt to use moon-path functions.
31531 * Makefile.am: Add moon-path.c and moon-path.h to the build.
31533 2007-09-19 Jeffrey Stedfast <fejj@gnome.org>
31535 * font.cpp: More hackery.
31537 2007-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
31539 * panel.cpp: Add a null check.
31540 * xaml.cpp: Created a list that contains most created elements in order to
31541 unref them once parsing is finished (we need to unref all created
31542 elements except the top one, but the parser callback functions don't
31543 know which is the top one, so we delay the unrefing until the end). If
31544 parsing is done manually (*_from_str, etc), just use unref.
31545 * text.h, text.cpp: Add text_destroy to properly destroy the default
31546 foreground brush on shutdown.
31547 * clock.cpp: When we allocate a clock, unref it after adding it to the
31549 * collection.h: Store the parent in the Node, since we can't call
31550 obj->GetParent () in a destructor (it will walk up the hierarchy using
31551 the type system, but since the parent can be in the destructor, the type
31552 system isn't reliable anymore).
31553 * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
31554 foreground brush, not to the element. Add a mango_renderer_get_type_safe
31555 that can reinitialize static variables (after a libmoon reload) from
31557 * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
31559 * collection.cpp: Store the parent in the Node, since we can't call
31560 obj->GetParent () in a destructor (it will walk up the hierarchy using
31561 the type system, but since the parent can be in the destructor itself,
31562 the type system isn't reliable anymore).
31563 * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
31564 * media.cpp: Sprinkle a few unrefs here and there.
31565 * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
31566 Add a null check in the Storyboard destructor. Use Value::CreateUnref
31567 for default values.
31568 * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
31571 2007-09-18 Jeffrey Stedfast <fejj@gnome.org>
31573 Continued fixes to go along with Rolf's other TextBlock leak
31576 * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
31577 (mango_attr_foreground_destroy): Don't unref the fg.
31579 * text.cpp (default_foreground): Make return a static reference.
31580 (Layout): Don't ref the fg.
31582 2007-09-17 Jeffrey Stedfast <fejj@gnome.org>
31584 * font.cpp: more progress on text layout.
31586 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
31588 * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
31590 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
31592 * xaml.cpp: Fix warning.
31594 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
31596 [Removed mono dependency for 1.0 moonlight applications.
31597 We now have a native [Plugin]XamlLoader that is the native counterpart of the
31598 managed Loader object, the native loader handles xaml loading when the
31599 mono runtime isn't loaded.]
31601 * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
31602 Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
31603 was necessary because the callback handler isn't given enough
31604 information (it needs to know the plugin, but this information is not
31605 passed on), and it now also avoids the potential problem of overwriting
31606 static callbacks when several plugins are created simultanously.
31607 * control.cpp, demo.cpp: Update according to API change.
31609 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
31611 * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
31613 2007-09-14 Jeffrey Stedfast <fejj@novell.com>
31615 * font.cpp|h: New font/text rendering engine (e.g. replacement for
31616 pango). Nowhere near complete yet.
31618 2007-09-14 Miguel de Icaza <miguel@novell.com>
31620 * media.cpp (Stop, Pause): Do not dereference source if it is not
31621 yet set (TopBanana does this).
31623 2007-09-13 Jb Evain <jbevain@novell.com>
31625 * media.cpp|h, playlist.cpp|h: Work on playlist integration.
31627 2007-09-10 Jeffrey Stedfast <fejj@novell.com>
31629 * mplayer.cpp (StopThreads): When resetting current_pts and
31630 target_pts, use the audio (or video) initial_pts value rather than
31631 0 since they are meant to be absolute pts values, not
31632 relative. This fixes a bug in the halo3 site where pressing Stop
31633 would cause the current time string to become "59:55" when it
31634 should have been "00:00".
31636 * media.cpp (OnPropertyChanged): Only Invalidate() on
31637 PositionProperty changes if we have video content to render. Fixes
31640 * mplayer.cpp (HasVideo): New method that returns true if the
31641 media source has video content.
31643 2007-09-10 Jeffrey Stedfast <fejj@gnome.org>
31645 * mplayer.cpp (Duration): Only use audio duration as the defacto
31646 duration if we've got a valid pcm handle.
31648 2007-09-10 Chris Toshok <toshok@ximian.com>
31650 * animation.cpp (HookupAnimationsRecurse): make the message
31651 involving failure to hookup a property more verbose. Looks like
31652 MS is treating a TranslateTransform as a ScaleTransform in popfly
31653 - that is, they're trying to animate ScaleX on a
31654 TranslateTransform (which is oddly enough named "scale".)
31656 * media.cpp: Emit ImageFailedEvent if we failed to load the image.
31657 Remove that damn TODO printf.
31659 * media.h: add ImageFailedEvent to Image, and change signature of
31660 CreateSurface so we can return false if there's an error.
31662 * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
31664 * error.h: make these classes instead of structs, and also make
31665 them copy/free the type specific strings. it'll result in more
31666 allocations but it cleans up the code using them.
31668 2007-09-07 Sebastien Pouliot <sebastien@ximian.com>
31670 * shape.cpp: Fixed Polygon "special" case when it only has to draw
31671 a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't
31672 working) which is now 10x faster than calling ComputeBoundSlow (the
31673 working alternative). Started to reuse the same concept for Polyline
31674 and Polygon but the (#def-out) code doesn't yet handle line joins
31675 correctly (so it still use the correct ComputeBoundSlow);
31677 2007-09-06 Chris Toshok <toshok@ximian.com>
31679 * dirty.cpp (process_dirty_elements): some guards against unioning
31680 an empty rectangle.
31682 2007-09-06 Chris Toshok <toshok@ximian.com>
31684 * runtime.cpp (Surface::Invalidate): only invalidate the actual
31685 rectangle. The +1/-2 stuff is done in dirty.cpp, if it needs to
31688 * rect.h (Rect::Floor): drop fractional part of all values.
31690 * media.h,media.cpp: we cheat and turn off AA on MediaElements
31691 when they aren't rotated or skewed.
31693 * uielement.h, uielement.cpp: we need to keep track of 2
31694 dirty_rects. one for the element itself, which is GrowBy(1)'ed in
31695 dirty.cpp if the child uses AA, and one for children who have
31696 passed their invalidation rect up the tree (we don't grow this
31697 one). Also, add the default UseAA method, which returns true, and
31698 the ChildInvalidated method, which mirrors Invalidate(Rect r) but
31699 uses the children_dirt_rect.
31701 * panel.h, panel.cpp (Panel::~Panel): clear our children
31703 (Panel::FindStartingElement): the meat of the optimization hack -
31704 we determine if we can skip parts of the tree if the expose
31705 rectangle exists completely within the bounds of an opaque
31706 element, unrotated, unskewed element.
31708 * dirty.cpp (process_dirty_elements): handle
31709 item->children_dirty_rect as well as item->dirty_rect. Also, Grow
31710 the item's dirty_rect by 1 before combining them, if the item uses
31713 2007-09-05 Jb Evain <jbevain@novell.com>
31715 * playlist.cpp: the asx format is case insensitive, parse it
31718 2007-09-05 Sebastien Pouliot <sebastien@ximian.com>
31720 * animation.h: Make KeySpline::GetObjectType virtual.
31722 2007-09-05 Jb Evain <jbevain@novell.com>
31724 * playlist.cpp, playlist.h: work on playlist parsing.
31726 2007-09-05 Jb Evain <jbevain@novell.com>
31728 * xaml.h: export timespan_from_str.
31730 2007-09-05 Jb Evain <jbevain@novell.com>
31732 * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
31734 2007-09-04 Chris Toshok <toshok@ximian.com>
31736 * media.cpp (Image::Render): unref the backing pixbuf as soon as
31738 (Image::CleanupSurface): guard against double unreffing the
31741 2007-09-04 Chris Toshok <toshok@ximian.com>
31743 * xaml.cpp (xaml_set_property_from_str): delete the color.
31744 (dependency_object_set_attributes): same.
31746 2007-09-04 Chris Toshok <toshok@ximian.com>
31748 * media.cpp (Image::CreateSurface): if we need to create a new
31749 surface, make sure to unref the old one.
31751 * geometry.cpp (PathGeometry::PathGeomtry): use
31752 Value::CreateUnrefPtr (bad name, imo, but eh)
31753 (PathFigure::PathFigure): same.
31755 2007-09-04 Jb Evain <jbevain@novell.com>
31757 * playlist.h, playlist.cpp: Work on the overall design.
31759 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31761 * brush.cpp (image_brush_create_pattern): Revert previous patch as
31762 it broke test suite.
31764 2007-09-04 Jb Evain <jbevain@novell.com>
31766 * list.h, list.cpp: add a List::ForEach method.
31768 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31770 * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
31771 (based on lewings performance patch).
31773 2007-09-04 Sebastien Pouliot <sebastien@ximian.com>
31775 * text.h|cpp: TextBlock actual_[height|width] are already cached
31776 because they're expansive to calculate. Make sure we don't compute
31777 them until they're really required (e.g. when a lot of properties
31778 changes when loading an XAML file).
31780 2007-09-04 Chris Toshok <toshok@ximian.com>
31782 * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
31783 keyframes in reverse order so the sort works.
31785 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31787 * list.cpp (Insert): Fixed.
31789 * runtime.cpp (render_cb): Added some "FPS" debug spew.
31791 * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
31792 timeout id, by returning false, it is removed for us.
31794 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
31796 * media.cpp: fix memory leaks and crashes when a download gets
31799 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
31801 * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
31802 as that seems to be what ffmpeg uses internally. Also added a new
31803 'eof' state so that we can easily tell if we've reached the end of
31804 the media stream (eof is true and no packets queued).
31806 2007-09-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
31808 * media.h, media.cpp: If we get a play request before the media is loaded,
31809 save the request and start playing when the media is loaded. Hopefully
31810 this is what MS is doing.
31812 2007-09-04 Jeffrey Stedfast <fejj@gnome.org>
31814 * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
31815 than comparing the Length() to 0.
31817 * list.cpp: Added more tests.
31819 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
31821 * rect.cpp: Safer IsEmpty (handles negative values)
31822 * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
31823 empty bounds. In Shape::DoDraw avoid call to cairo_set_matrix if
31826 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
31828 * media.cpp: Fix premul and remove confusing macro.
31830 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
31832 * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
31833 canvas.cpp, namescope.cpp: Plug some leaks.
31834 * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
31835 * dependencyobject.cpp: free_attachee: unref the contained dob. Use
31836 base_unref () instead of accessing the pointer in a few places to allow
31838 * debug.cpp: get_stack_trace is now able to get meaningful data for managed
31839 parts of the stack trace as well.
31841 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
31843 * list.cpp: List::Unlink: Link my neighbours to eachother.
31845 2007-09-01 Sebastien Pouliot <sebastien@ximian.com>
31847 * rect.cpp: Fix union with empty rectangles (so x and y are not
31848 assigned to 0 resulting in large bounds). Fix IsEmpty.
31849 * shape.cpp: Fix possible division by 0, resulting in infinite
31850 values (and much too large bounds)
31852 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
31854 *.cpp: Updated for the slightly different List API (list nodes no
31855 longer have Next() or Prev() methods, just access the pointers
31858 * animation.cpp: Made sorted_list a GPtrArray and updated to use
31859 g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
31860 sorted_list) accesses assumed nodes were of type KeyFrameNode,
31861 which they were not. Fixed.
31863 * xaml.cpp: Made XamlElementInstance.dtor virtual.
31865 * collection.h: Made the Collection::Node.dtor virtual.
31867 * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
31868 can no longer guarantee that List::Node->next will have the same
31869 address as the List::Node object and so the list implementation
31870 broke. This rewrite is a bit less fancy, but doesn't rely on that
31873 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31875 * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy
31876 doesn't change the current rectangle (but returns a new one).
31877 However everything seems to work, so they are probably not needed.
31879 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
31881 * text.cpp (OnPropertyChanged): Need to Invalidate() too.
31883 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
31885 * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
31886 now reference either the fullscreen drawing area or the normal drawing
31887 area. Refactored drawing area initialization and destruction into
31888 seperate methods. Modified ConnectEvent to be able to specify whether
31889 the drawing area should attach to realize/unrealize events (fullscreen
31890 drawing area shouldn't). Only emit ResizeEvent if we're not in
31891 fullscreen mode. Added normal_height/width, contains the size of the
31892 surface when not in fullscreen (as opposed to screen_height/width for
31893 fullscreen mode). Height/width now contains the actual size of the area
31894 where we draw, whether in fullscreen mode or not.
31896 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31898 * shape.cpp: #ifdef out an optimization that doesn't work with
31899 ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
31900 wouldn't render at all with it's fill brush). Added same shortcut
31901 (as before) for Shape::ComputeBoundsSlow.
31903 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
31905 * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
31906 are known to be empty (UIElement::SHAPE_EMPTY).
31908 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
31910 * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
31911 apparently a point is inside a shape unregarding to whether it's filled
31912 or not, unlike geometries.
31914 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31916 * shape.cpp: Better degenerate handling for round-rectangles and
31919 2007-08-30 Chris Toshok <toshok@ximian.com>
31921 * collection.h, collection.cpp: change the prototype of
31922 Collection::Add, ::Insert, and ::SetVal to return bool. Make the
31923 subclasses check the return value before doing their type specific
31924 handling of the child. Fixes the crash from invalid xaml in
31927 * animation.h, animation.cpp: track collection api change.
31929 2007-08-30 Chris Toshok <toshok@ximian.com>
31931 * collection.cpp (Collection::Add): make the warning a lot more
31932 useful if the child isn't of the right type.
31934 2007-08-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
31936 * xaml.cpp: Unref the namescope.
31937 * debug.h, debug.cpp: Added. Implemented get_stack_trace and
31939 * clock.cpp: Unref the _instance.
31940 * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
31941 debug purposes. It's able to log to console object creation,
31942 destruction, ref/unrefs with a stacktrace with C++ unmangled function
31943 names, file and line number. Keep a count of created and destroyed
31944 objects, and a list of objects still alive. Ref and unref attached
31945 objects, and free the attachees when we're deleted.
31946 * animation.h, animation.cpp: Add animation_destroy, and destroy the default
31947 dependency property for a few properties.
31948 * type.cpp, type.cpp.in: Initialize Type::types to NULL.
31949 * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
31950 types. Call animation_destroy on shutdown, and add some object tracking
31951 output to runtime_init and runtime_shutdown.
31952 * Makefile.am: Added debug.*.
31954 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31956 * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored
31959 2007-08-30 Jeffrey Stedfast <fejj@novell.com>
31961 * mplayer.cpp (AdvanceFrame): If there is no video stream, return
31962 based on audio state. Also, if current_pts >= target_pts already,
31963 return true rather than false to pretend we advanced a frame (it's
31964 really not that important to our caller, all the value is used for
31965 is updating position).
31967 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31969 * shape.cpp: Handle negative values for Height and Width (not
31970 drawn) and for Radius[X|Y] (absolute values).
31972 2007-08-30 Jb Evain <jbevain@novell.com>
31974 * media.h, media.cpp: introduce a new MediaSource class that a
31975 MediaElement uses, so we can have either a SingleMedia or a Playlist
31977 * playlist.cpp, playlist.h: added
31978 * Makefile.am: add the previous files.
31980 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
31982 * shape.cpp: Fix small rectangle fills when no stroke brush is
31985 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
31987 * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
31988 bounds on TextProperty change explicitly, it should already be
31989 recalculated later in the function in the same place it gets
31990 reclauclated for other property changes.
31991 (ComputeBounds): Updated to work the same as the rest of the
31994 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
31996 * shape.cpp: Fix ComputeBoundsFast to consider the stroke
31999 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
32001 * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify
32002 the path after we get a copy of it. Remove the now unrequired
32003 clipping inside the *::BuildPath for StretchUniformToFill.
32005 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
32007 * media.cpp (Render): Cache the pattern matrix.
32008 (DownloaderComplete): Remove the assert and simply handle that
32009 case by returning (which defers the call until OnLoaded).
32011 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
32013 * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
32014 making things consistent.
32016 2007-08-29 Chris Toshok <toshok@ximian.com>
32018 * merged delayed-rendering-branch branch to head. ChangeLog is:
32020 2007-08-28 Chris Toshok <toshok@ximian.com>
32022 * control.cpp (GetTransformFor): change this to act as
32023 Canvas::GetTransformFor does - we only put in the transform from
32024 parent to child here - don't include the parent's transform as
32025 well. Fixes the airlines demo.
32027 2007-08-28 Chris Toshok <toshok@ximian.com>
32029 * dirty.cpp (process_dirty_elements): use a different method for
32030 checking if against the toplevel canvas, and also use
32031 UIElement::parent instead of DependencyObject::GetParent() to get
32032 controls working a little better than before.
32034 * control.h, control.cpp: remove UpdateTransform. this is handled
32035 by the dirty.cpp code now.
32037 * dependencyobject.h, dependencyobject.cpp: copy over the
32038 event_object_{add,remove}_event_handler change from the trunk so
32039 we can continue to work with HEAD olive.
32041 2007-08-22 Chris Toshok <toshok@ximian.com>
32043 * uielement.cpp (Invalidate): don't actually invalidate the
32044 element unless it's visible.
32045 (OnPropertyChanged): the above change requires us to invalidate
32046 the element before setting the flags (in the case where we're
32047 hiding an element).
32049 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
32051 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
32052 unless unspecified, only then should we use video width/height.
32054 2007-08-21 Chris Toshok <toshok@ximian.com>
32056 * uielement.cpp (DoRender): short-circuit rendering of uielements
32057 when their opacity is 0.
32059 * dirty.cpp (process_dirty_elements): handle controls.
32061 2007-08-21 Chris Toshok <toshok@ximian.com>
32063 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
32064 (cairo_*_extents) codepath for computing bounds. Use this path
32065 for polygons, polylines, and paths. Implement a Line-specific
32066 fast ComputeBounds.
32068 2007-08-20 Chris Toshok <toshok@ximian.com>
32070 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
32071 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
32073 2007-08-20 Chris Toshok <toshok@ximian.com>
32075 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
32077 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
32078 call, and Rect::GrowBy
32080 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
32083 2007-08-20 Chris Toshok <toshok@ximian.com>
32085 * shape.h, shape.cpp: move the ellipse bound computing to shape
32088 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
32090 * clock.h: Implement TimeManager::GetObjectType.
32091 * dependencyobject.h, dependencyobject.cpp: Move all type management down to
32092 Base (GetObjectType, Is, GetType, GetTypeName), and implement
32093 GetObjectType in the classes that don't do it already. Remove
32094 BASE_FLOATS, simplifying ref counting.
32095 * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
32096 that don't already inherit from DependencyObject.
32097 * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
32098 raises events), and implement GetObjectType.
32100 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32102 * shape.cpp: Fix StretchUniformToFill
32104 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32106 * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
32107 (new since refresh?) need to be multiplied with the stroke's
32110 2007-08-28 Jeffrey Stedfast <fejj@novell.com>
32112 * text.cpp (Render): Fixed the "no text to render" optimization:
32113 don't check TextBlock::TextProperty to see if we have any text to
32114 render, instead check TextBlock::layout (which will have any text
32115 from inlines as well).
32116 (OnPropertyChanged): If the TextProperty changes, recalculate the
32119 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32121 * geometry.h: Add a Path* parameter to Draw as we need to know some
32122 stuff (e.g. stroke thickness) in order to detect degenerate cases.
32123 * geometry.cpp: Handle degenerate case for RectangleGeometry.
32124 * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path
32125 element (NULL in the case of clipping).
32126 * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
32127 class. Add GetFillRule method. Handle most cases where a large stroke
32128 thickness change the SL drawing behaviour (wrt Cairo behaviour)
32129 * uielement.h: Add flags for empty/normal/degenerate shapes
32131 2007-08-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
32133 * panel.cpp: InsideObject: The point is only inside us if we have a
32134 background, otherwise we act like if we were transparent (which is what
32135 we are if we aren't painting anything inside us).
32136 * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
32137 it's closer to what it actually does.
32138 * shape.cpp: Changed implementation of Shape::CanFill to return true only if
32139 we're actually filled, and rename CanFill to IsFilled so that it's
32140 closer to what it actually does.
32142 2007-08-27 Jackson Harper <jackson@ximian.com>
32144 * dependencyobject.cpp|h: Don't return Collections when getting
32147 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
32149 * mplayer.cpp (Play): Always add a timeout, even for audio-only
32150 media, so that the callback can check if the media has ended and
32151 emit the MediaEnded event.
32153 * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
32155 * mplayer.cpp (MediaEnded): New convenience function.
32157 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
32159 * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
32160 as this clear any path data in the context (see
32161 test-path-group.xaml)
32163 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
32165 * mplayer.cpp (audio_play): Implement software balance/volume here
32166 rather than using the system's mixer (as that changes the
32167 balance/volume for all applications which is a bad thing). Fixes
32170 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32172 * panel.cpp: InsideObject: only skip checking the children if the
32173 point is not in the clipped area.
32175 * uielement.h, uielement.cpp: Added InsideClip, and moved the
32176 corresponding code from InsideObject to InsideClip.
32178 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
32180 * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
32181 tests/xaml/test-path-smoothquadraticbezier.xaml
32183 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32185 * uielement.h, uielement.cpp: Implement InsideObject here too, the same
32186 implementation as Shape has (for our Clip property).
32187 * frameworkelement.cpp: InsideObject: call new base implementation as well.
32188 * panel.cpp: InsideObject: don't check our children, the mouse may be over
32189 them, but they're not visible for some reason (the parent object might
32192 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32194 * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
32195 motion event even though the mouse isn't over us.
32196 * runtime.h: Add a public Surface::GetCapturedElement.
32198 2007-08-24 Jeffrey Stedfast <fejj@novell.com>
32200 * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
32201 video frames will update if we seek backwards.
32203 * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
32205 * media.cpp (UpdateProgress): Use the downloader progress value as
32206 the buffering progress value as well (since we don't yet stream).
32207 (DownloaderComplete): Call UpdateProgres() here so that we can
32208 flush the 100% progress value.
32210 * downloader.cpp (Write): Update the progress first, so that the
32211 writer callback can query the actual progress (all data read up to
32212 and /including/ this point in time).
32213 (NotifyFinished): Set progress to 100% and emit an event.
32215 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32217 * value.h[.in]: Added AsNPObj.
32218 * type.cpp[.in]: Initialize Type::NPOBJ correctly.
32220 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32222 * media.cpp: (DownloaderCompleted): The initial state of media
32223 elements that aren't autoplayed is 'Paused'.
32225 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32227 * media.cpp (MediaElement): Initialize 'loaded' to false.
32228 (SetSource): Don't call DownloaderComplete() if we haven't been
32230 (GetValue): Convert to position from ms to TimeSpan ticks.
32231 (OnLoaded): Set loaded to true and, if we have a downloader which
32232 has completed the download, call DownloaderComplete() which will
32233 then open the media file and autoplay if appropriate.
32234 (OnPropertyChanged): Protect against creating a downloader for an
32237 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32239 * media.cpp (DownloaderComplete): If we fail to open, emit the
32240 MediaFailedEvent and set some default values.
32241 (OnPropertyChanged): Don't StopLoader() here, do that all in
32242 SetSource (since SetSource needs to do it anyway).
32243 (SetSource): Call StopLoader() here and close the MediaPlayer,
32246 2007-08-23 Jackson Harper <jackson@ximian.com>
32248 * runtime.cpp|h: Make Resize use our event system (so the plugin
32250 * dependencyobject.cpp|h: Rename the add/remove handler functions
32251 to not require dependencyobjects.
32253 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32255 * media.cpp (OnPropertyChanged): Don't autoplay here.
32256 (advance_frame): Do ms->TimeSpan conversion here, too.
32257 (DownloaderComplete): Instead of calling ::Pause(), just set the
32258 pause state since the MediaPlayer already starts out in paused
32261 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32263 * clock.h: Add defines and methods to convert between timespans and
32265 * media.cpp: Create a default (empty) Markers collection. When setting
32266 MediaPlayer time values, convert between ticks (in TimeSpans) and
32267 milliseconds (which is what MediaPlayer expects). Emit MediaOpened
32268 when we're finished downloading a media, and if we're not autoplaying
32269 it, we're pausing it. Update uses of Value (gint64) constructors.
32270 * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a
32271 Value (gint64, Type::Kind) constructor to avoid mixups between
32272 INT64 and TIMESPAN values. Check for null before unref'ing a
32274 * xaml.cpp: Update uses of Value (gint64) constructors.
32276 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32278 * type.[cpp|h].in: Add const's here that were only added manually
32279 to the generated files.
32281 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32283 * mplayer.cpp: Implemented volume/balance
32285 2007-08-23 Sebastien Pouliot <sebastien@ximian.com>
32287 * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
32288 code in Polygon::Draw.
32290 2007-08-22 Chris Toshok <toshok@ximian.com>
32292 * clock.cpp (Tick): guard against division by zero. gets
32293 "monotone" displaying.
32295 2007-08-22 Sebastien Pouliot <sebastien@ximian.com>
32297 * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them
32298 from Rectangle and Ellipse. Monotone requires that on Path and I can't
32299 recall the reason I made this (while all the test cases I made still
32302 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
32304 * mplayer.cpp (MediaPlayer): Init mixer variables.
32306 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
32308 * media.cpp (advance_frame): Don't bother invalidating here, we'll
32309 do that in OnPropertyChanged() for the PositionProperty.
32310 (OnPropertyChanged): Invalidate if Position has changed and
32311 opacity > 0.0f (and we actually have video).
32312 (ComputeBounds): Use the FrameworkElement width/height if set.
32313 (GetTransformOrigin): Same.
32315 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
32317 * mplayer.cpp (Open): Merged both Open() implementations into a
32318 single one. We no longer use Open() without passing a uri (since
32319 Stop() has been implemented in a better way).
32320 (AdvanceFrame): Keep track of our current pts so that we won't get
32321 ahead of the audio if called too often.
32323 2007-08-20 Chris Toshok <toshok@ximian.com>
32325 * rect.cpp (bounding_rect_for_transformed_rect): oops, got
32326 MAX2/MIN2 mixed up.
32328 2007-08-20 Chris Toshok <toshok@ximian.com>
32330 * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
32331 name, I know, but we need this functionality. it's not enough to
32332 use UL and LR corners of the rectangle when computing the bounding
32333 rect for a transformed rectangle. we have to test all 4 points.
32335 * panel.cpp (ComputeBounds): use
32336 bounding_rect_for_transformed_rect.
32338 2007-08-17 Chris Toshok <toshok@ximian.com>
32340 * dependencyobject.cpp (strcase_equal, strcase_hash): new case
32341 insensitive hash functions.
32342 (RegisterFull): the property hash tables (per type, used for
32343 GetDependencyProperty) need to be case insensitive.
32345 2007-08-17 Chris Toshok <toshok@ximian.com>
32347 * xaml.cpp: remove Hidden from the visibility_map.
32348 (enum_from_str): if we don't see a name we recognize, try to parse
32349 it as a number. This could maybe be someplace else.
32351 * enums.h: remove VisibilityHidden
32353 * uielement.h, uielement.cpp: remove
32354 VisibilityHidden/LAYOUT_VISIBLE
32356 * control.h: remove GetLayoutVisible.
32358 * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
32359 item->GetVisible, since there's no need to distinguish between the
32362 2007-08-17 Jackson Harper <jackson@ximian.com>
32364 * clock.h: Add ToSeconds utility functions.
32366 2007-08-16 Jeffrey Stedfast <fejj@novell.com>
32368 * list.cpp (InsertSorted): For the stable evrsion, work backwards
32369 instead of forwards (improves performance in the typical case,
32370 altho we aren't gonna sue this feature anymore - z-sorted lists
32371 will now be GPtrArrays).
32373 * garray-ext.cpp|h: New src file containing an extension to
32374 GPtrArray for inserting an item into a presorted array.
32376 * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
32377 updated all usages of it.
32379 * panel.cpp (Render): Updated now that z_sorted is an array
32380 instead of a linked list.
32382 2007-08-16 Jackson Harper <jackson@ximian.com>
32384 * xaml.cpp: Transforms can be set as attributes, they are just a
32385 matrix in string form, that become a MatrixTransform on the
32387 - Made the debug a little nicer
32389 2007-08-15 Jackson Harper <jackson@ximian.com>
32391 * xaml.cpp: Since the callback setting is now a once per a domain
32392 thing, we don't want to check if they are already set. The 'are
32393 they already set' check only worked when we were setting them at
32394 the beginning of each parsing attempt. With our current setup it
32395 was causing everything to get loaded in the same domain.
32397 2007-08-13 Jeffrey Stedfast <fejj@novell.com>
32399 * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
32400 segfault if there are no packets in the queue.
32402 2007-08-13 Chris Toshok <toshok@ximian.com>
32404 * animation.cpp (*KeyFrame::InterpolateValue): for all the
32405 keyframes, if we don't have a Value defined, don't bother
32406 interpolating anything, just return baseValue.
32408 2007-08-13 Chris Toshok <toshok@ximian.com>
32410 * collection.cpp: fix merging/unmerging of child namescopes.
32412 * namescope.h, namescope.cpp: add a flag (merged) and a list of
32413 child merged namescopes which are searched any time this namescope
32414 is searched. Reimplement merge as list->Append, and unmerge as
32417 * dependencyobject.h: add ClearValue, and make GetParent
32420 * dependencyobject.cpp: add impl for ClearValue, and remove
32421 GetParent. Also, when finding a name we only check non-merged
32422 namescopes. The merged ones in the hieararchy will be checked as
32423 the children of the non-merged ones. Given that the set of names
32424 in merged scopes can't overlap, I'm not strictly sure this is
32425 necessary, except to reproduce Silverlight's faulty lookups after
32428 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
32430 * collection.cpp (Clear): Unregister the object names.
32432 * dependencyobject.h (GetName): uhh... just return the value, lets
32433 not go returning "(null)" in string form.
32435 2007-08-10 Chris Toshok <toshok@ximian.com>
32437 * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
32438 to the silverlight Key and call s->toplevel->HandleKeyDown.
32439 (key_release_callback): same.
32440 (gdk_keyval_to_key): new function, to map between gdk and
32443 * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
32444 just package up the args into a structure and Emit the event.
32446 * enums.h: add the Key enum from the silverlight docs.
32448 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
32450 * dependencyobject.cpp (resolve_property_path): Keep track of the
32451 last '.' so that when we go to get the DependencyProperty, we can
32452 pass the property name component rather than the full path of the
32453 property name. Fixes the color fades in Monotone.
32455 2007-08-09 Chris Toshok <toshok@ximian.com>
32457 * animation.h, animation.cpp: if any keyframe's keytime changes,
32458 we need to re-resolve the collection.
32460 2007-08-09 Jeffrey Stedfast <fejj@novell.com>
32462 * mplayer.cpp (Play): Only start up the io/audio threads if we
32463 aren't simply paused (e.g. if they are already alive).
32464 (IsPlaying): Return true only if playing && !paused.
32465 (audio_loop): Changed the locking logic to lock outside of the
32466 loop rather than inside. We now only release the lock inside the
32467 loop if/when the paused state changes.
32469 2007-08-08 Chris Toshok <toshok@ximian.com>
32471 * animation.h: sprinkle Resolve() methods and resolved flags
32474 * animation.cpp (Storyboard::HookupAnimationsRecurse): call
32475 Resolve() on the animation as we recurse.
32476 (KeyFrameNodeComparer): compare using the keyframe's resolved
32478 (KeyFrameNodeFinder): nuke.
32479 (KeyFrameCollection::Add): just mark the collection as needing to
32480 be resolved. don't muck with the sorted list here.
32481 (KeyFrameCollection::Insert): same.
32482 (KeyFrameCollection::Remove): same.
32483 (KeyFrameCollection::Clear): also mark the collection as
32485 (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
32486 (KeyFrameAnimation_ResolveKeyFrames): implement most of the
32487 algorithm posted at
32488 http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
32489 keytimes of different types. this is all untested, unfortunately,
32490 as I can't get non-TimeSpan keytimes to work on SL.
32491 (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
32493 (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
32494 the key frames before using sorted_list.
32495 (*AnimationUsingKeyFrames::Resolve): override the empty
32496 default, and call KeyFrameAnimation_ResolveKeyFrames.
32498 2007-08-08 Chris Toshok <toshok@ximian.com>
32500 * clock.cpp (Begin): make sure we handle clocks that seek in the
32503 2007-08-08 Chris Toshok <toshok@ximian.com>
32505 * canvas.cpp (Canvas::Canvas): create a temporary namescope
32506 whenever we create a canvas. We need this for animations that are
32507 started before the canvas is attached to the tree, or in any case
32508 where FindName is called on code associated with a subtree before
32509 it's added to the surface.
32511 * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
32512 Storyboard.TargetName can be assigned to the parent storyboard as
32513 well as the animation. Loop up the clock hierarchy when looking
32514 for the targetname.
32516 2007-08-07 Chris Toshok <toshok@ximian.com>
32518 * animation.cpp, animation.h
32519 (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
32520 iterate over all the keyframes looking for the last one - just
32521 look at the last one in the sorted list.
32523 2007-08-07 Jeffrey Stedfast <fejj@novell.com>
32525 * media.cpp (SetValue): Only crop position values if we're not
32526 updating state from the media player (we're allowed to set values
32527 outside of the duration range from the media player). Also, do our
32529 (OnPropertyChanged): Don't do our seeking here because we can't
32530 get the actual seek position as GetValue()'s override will
32531 re-query the media player for its actual position.
32533 * mplayer.cpp (Open): Don't create the threads here anymore,
32534 create them in Play() instead. Also calculate ahead of time the
32535 new audio->pts_per_frame value which allows the video to keep even
32536 better sync with the audio (we used to base this on actual time
32537 spent playing the audio frame rather which could sometimes be off
32539 (AdvanceFrame): If seek_pts is non-zero, then we need to base
32540 target_pts on it rather than video->initial_pts (assuming we have
32541 no audio to sync to).
32542 (Play): Set playing = true and create the audio/io threads.
32543 (Close): A lot of the logic has been moved into a new method,
32545 (StopThreads): Stop the threads and reset minimal state.
32546 (Stop): Call StopThreads() and seek back to the beginning of the
32548 (Seek): Implemented.
32549 (Position): Back to subtracting the initial_pts so that we always
32550 have a range of 0:duration. If seek_pts is set and >target_pts,
32551 use that rather than target_pts so even if we are in a stopped
32552 state, querying the position will return expected results.
32553 (audio_play): Return audio->pts_per_frame rather than the actual
32556 2007-08-06 Jackson Harper <jackson@ximian.com>
32558 * xaml.cpp: add VisualCollections.
32560 2007-08-06 Chris Toshok <toshok@ximian.com>
32562 * clock.cpp, clock.h: this might be completely wrong and break
32563 other demos... but childless clockgroups Stop when they hit their
32564 duration, they don't SkipToFill. fixes the silverlightclr balls
32567 2007-08-06 Larry Ewing <lewing@novell.com>
32569 * dependencyobject.h:
32570 * dependencyobject.cpp:
32573 * type.cpp: add const to the various string apis.
32575 2007-08-06 Jeffrey Stedfast <fejj@novell.com>
32577 * mplayer.cpp: Fixes to make it work with media files w/ no audio
32578 (or where we are unable to play the audio).
32580 2007-08-04 Chris Toshok <toshok@ximian.com>
32582 * brush.h, brush.cpp: add VisualBrush.
32584 * xaml.cpp (xaml_init): hookup VisualBrush parsing.
32586 * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
32588 2007-08-04 Chris Toshok <toshok@ximian.com>
32590 * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
32591 to work properly, panel needs to call
32592 FrameworkElement::Invalidate, not parent->ChildInvalidated
32595 * uielement.h, uielement.cpp: add an Invalidated event for use by
32598 2007-08-03 Chris Toshok <toshok@ximian.com>
32600 * collection.cpp (Collection::Add, Collection::Insert): reinstate
32601 jackson's merging code, but only do it if @data's namescope is
32604 * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
32606 * xaml.cpp (xaml_create_from_str): set the namescope to be
32607 temporary if create_namescope is false.
32608 (xaml_create_from_file): same.
32610 2007-08-03 Chris Toshok <toshok@ximian.com>
32612 * panel.h, panel.cpp: add an optimization for the 2 updates that
32613 travel down the tree (UpdateTotalOpacity and UpdateTransform).
32614 Since we're already invalidating the panel's bounds (in fact we do
32615 it before traversing), we can ignore the invalidates which come
32616 back up the tree from the children.
32618 * media.cpp, media.h: make NaturalDuration a Duration. this gets
32619 the last of roeder's demos sorta working.
32621 2007-08-03 Jeffrey Stedfast <fejj@novell.com>
32623 * mplayer.cpp: Whenever we change the 'paused' state, signal to
32624 the other thread(s) that it has changed so that they can go on
32625 with their lives immediately rather than waiting for the kernel to
32628 2007-08-02 Chris Toshok <toshok@ximian.com>
32630 * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
32631 you get your panties in a twist, check this out. If you have a
32632 control and set both its Canvas.LeftProperty and that of its root
32633 object (the return value of InitializeFromXaml), the effects are
32634 *additive*, yet GetValue on each object returns exactly what you'd
32635 expect - the value you set on it. The only reasonable explanation
32636 for this is that Control has Canvas's layout algorithm c&p'ed into
32639 2007-08-02 Chris Toshok <toshok@ximian.com>
32641 * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
32642 functions to returning DependencyObjects instead of UIElements.
32643 in javascript you can create arbitrary xaml hierarchies (transform
32644 groups, brushes, etc).
32646 * control.cpp: need a cast here due to the above change.
32648 2007-08-02 Chris Toshok <toshok@ximian.com>
32650 * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
32651 stuff the gtk_widget_queue_draw_area call there.
32653 * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
32654 panel.cpp, control.h, control.cpp: change the way
32655 UIElement::Invalidate works. It used to call GetSurface() which
32656 would recurse up the tree to the root, and return the Surface*
32657 back down. It would then call gtk_widget_queue_draw_area there.
32658 This left little room for optimization. Switch everything over to
32659 using a new method implemented by all container classes,
32660 ChildInvalidated. Basically Invalidate's recurse up to the root
32661 as before, but the actual gtk call happens at the root (well, 1
32662 level above it. at the Surface itself). In the future we can
32663 freeze Invalidates in container elements when they do things like
32664 update their transform so we'll just send 1 Invalidate up the
32665 tree, not N Invalidates for N children.
32667 2007-08-02 Jeffrey Stedfast <fejj@novell.com>
32669 * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
32672 * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
32673 (IsPaused): New method.
32675 * media.cpp (MediaElement::GetValue): If the Position is being
32676 requested, query the MediaPlayer.
32677 (MediaElement::SetValue): Make sure the PositionProperty value is
32678 within bounds and force it to be if not.
32679 (MediaElement::Stop): Do nothing if we aren't playing/paused.
32680 (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
32683 2007-08-02 Chris Toshok <toshok@ximian.com>
32685 * uielement.h, uielement.cpp: propagate opacity changes the way we
32686 do transform changes. Store the total opacity of an item in the
32687 item, as we do with absolute_xform. This keeps us from doing a
32688 walk up to the root of the hierarchy every time we have to draw an
32689 element (which we we were doing before in
32690 UIElement::GetTotalOpacity.)
32692 * panel.cpp, panel.h: when we update our total opacity, loop over
32693 the children telling them to update as well.
32695 * collection.cpp: propagate the panel's total opacity downward
32696 into the newly added subtree.
32698 2007-08-02 Chris Toshok <toshok@ximian.com>
32700 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
32701 GetSurface/SetSurface.
32703 2007-08-02 Chris Toshok <toshok@ximian.com>
32705 * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
32706 handle the property changing.
32708 * control.h, control.cpp: rip out all the proxying behavior.
32709 Control now works as a very specialized container. Imagine if
32710 Panel had only 1 child, and no generalized way of manipulating it
32711 (other than initializing it from a xaml fragment), and you have
32714 2007-08-01 Larry Ewing <lewing@novell.com>
32716 * xaml.cpp: don't ever make the previous point relative.
32718 2007-08-01 Jeffrey Stedfast <fejj@novell.com>
32720 * text.h: Removed deprecated enum values for FontWeights
32722 * media.cpp, mplayer.cpp: Updated to add features newly added with
32723 the July 2007 release of Silverlight 1.1
32725 2007-07-31 Chris Toshok <toshok@ximian.com>
32727 * runtime.cpp (Attach): attach a namescope to the toplevel canvas
32728 if there isn't one when it's attached.
32730 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
32732 * media.cpp: NaturalDuration is actually a TimeSpan, not a
32735 2007-07-31 Chris Toshok <toshok@ximian.com>
32737 * media.h, media.cpp: move the MediaBase events to MediaElement.
32739 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
32741 * text.h: Added StyleSimulations enum values.
32743 * xaml.cpp: Updated the StyleSimulations enum mapping.
32745 2007-07-31 Chris Toshok <toshok@ximian.com>
32747 * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
32748 enum StyleSimulations.
32750 * xaml.cpp: add stylesimulations enum map.
32752 2007-07-30 Chris Toshok <toshok@ximian.com>
32754 * uielement.cpp, uielement.h: add the Tag property.
32756 2007-07-30 Chris Toshok <toshok@ximian.com>
32758 * animation.h, animation.cpp: add the three KeyFrameCollection
32759 subclass types, and switch all references to "KeyFrameCollection"
32760 to the more specific types.
32762 * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
32763 with Color/Double/PointKeyFrameCollections as subclasses.
32765 * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
32768 2007-07-30 Larry Ewing <lewing@novell.com>
32770 * color.cpp: make sure that we size expand 3 digit color
32771 specifications properly.
32773 2007-07-30 Chris Toshok <toshok@ximian.com>
32775 * uielement.h, uielement.cpp: remove InsideObject from here, and
32776 move its warning to Visual::InsideObject instead.
32778 * visual.h, visual.cpp: add visual.cpp, and move implementation of
32779 InsideObject there.
32781 * Makefile.am (libmoon_la_SOURCES): add visual.cpp
32783 2007-07-30 Larry Ewing <lewing@novell.com>
32785 * xaml.cpp: correct smooth path segments to use the correct value for
32786 cp1 and don't try to make it relative because all the sources are
32787 absolute. Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
32789 2007-07-30 Chris Toshok <toshok@ximian.com>
32791 * clock.h, clock.cpp: add very naive, probably broken first pass
32794 2007-07-30 Chris Toshok <toshok@ximian.com>
32796 * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
32798 2007-07-30 Chris Toshok <toshok@ximian.com>
32800 * brush.h, brush.cpp: track breaking change of the
32801 Brush.Transform/RelativeTransform properties - they're speced to
32802 be Transforms, not TransformGroups.
32804 2007-07-29 Chris Toshok <toshok@ximian.com>
32806 * collection.h, collection.cpp: change "ResourceCollection" to
32807 "ResourceDictionary".
32809 * uielement.cpp: same.
32811 * type.cpp, type.h, value.cpp, value.h: same.
32815 2007-07-27 Chris Toshok <toshok@ximian.com>
32817 * xaml.cpp (xaml_set_property_from_str): look up the enum map from
32818 the property name, not the value.
32820 2007-07-27 Chris Toshok <toshok@ximian.com>
32822 * transform.h, transform.cpp: cache the transformation matrix once
32823 we recompute it. This gives us the responsiveness of delayed
32824 updating without the cost of calculating the matrix once per
32825 object associated with it. a property change just sets the
32826 "need_update" flag, which causes a recompute on the next
32829 2007-07-27 Larry Ewing <lewing@novell.com>
32831 * uielement.cpp: implement initial support for OpacityMask.
32833 2007-07-26 Miguel de Icaza <miguel@novell.com>
32835 This implements support for relative MediaElement sources and
32836 makes all of them go through the downloader, like we do for
32839 * media.cpp (MediaElement): Do an implementation of SetSource
32840 similar to the one in Image. Although there is some code that
32841 could be shared, the problem is that some parameters get in the
32844 (MediaElement::DownloaderComplete): Move the playback here.
32846 (StopLoader): Utility routine, factor this out also on the Image
32847 case, and hook this up to the destructor of Image and
32851 2007-07-25 Chris Toshok <toshok@ximian.com>
32853 * media.h, media.cpp: add the MediaElement events,and emit
32854 DownloadProgressChanged and CurrentStateChanged.
32856 2007-07-25 Chris Toshok <toshok@ximian.com>
32858 * media.h, media.cpp: register the 3 MediaBase events. now we
32859 need to figure out where to emit them.
32861 2007-07-25 Jackson Harper <jackson@ximian.com>
32863 * value.cpp: Assign the kind for NPOBJs.
32865 2007-07-25 Miguel de Icaza <miguel@novell.com>
32867 * openfile.cpp (open_file_dialog_show): Change this method to
32868 return an array with all the selected files.
32870 2007-07-24 Chris Toshok <toshok@ximian.com>
32872 * runtime.h, runtime.cpp: permit setting of the the surface's
32873 background color, which is used to fill the widget before we
32874 render the toplevel canvas. only do this, though, if the canvas
32875 is not transparent.
32877 2007-07-24 Chris Toshok <toshok@ximian.com>
32879 * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
32880 of making the assignment.
32882 * canvas.h, canvas.cpp: make surface private, and add SetSurface
32883 for runtime.cpp to use.
32885 2007-07-24 Chris Toshok <toshok@ximian.com>
32887 * brush.h, brush.cpp: make ImageBrush::SetSource take a const
32890 2007-07-24 Jackson Harper <jackson@ximian.com>
32892 * type.h.in: Add the NPOBJ type.
32893 * value.h.in: Add the npobj value, it's just stored as a pointer
32894 so that we don't become dependent on mozilla.
32895 * value.cpp|h,type.h: sync.
32897 2007-07-24 Jackson Harper <jackson@ximian.com>
32899 * typegen.cs: Kind.cs lives in agmono now.
32902 2007-07-24 Chris Toshok <toshok@ximian.com>
32904 * media.h, media.cpp: const-ify the PartName argument of the
32905 SetSource methods. also, ref the new downloader before unreffing
32906 the old one in Image::SetSource. they could be the same object.
32908 2007-07-24 Chris Toshok <toshok@ximian.com>
32910 * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
32911 is NULL, return early.
32913 2007-07-23 Chris Toshok <toshok@ximian.com>
32915 * Makefile.am (libmooninclude_headers): add some missing headers.
32917 * error.h: split out the error classes here.
32919 * libmoon.h: include error.h
32921 * xaml.h: remove the error classes from here.
32923 * xaml.cpp: include error.h
32925 2007-07-23 Miguel de Icaza <miguel@novell.com>
32927 * runtime.cpp: Removed the timer code from here, move to plugin.
32929 2007-07-20 Chris Toshok <toshok@ximian.com>
32931 * xaml.cpp (custom_add_child): this method is what's called when
32932 we add a child to an element of a custom namespace. Trouble is,
32933 it might be a panel subclass. If it is, and the child is a
32934 UIElement subclass, go ahead and add the child using
32935 panel_child_add. This gets the Loaded events working properly in
32936 the chess demo (the trouble was that the custom children weren't
32937 even added to the tree, so their OnLoaded methods weren't being
32940 2007-07-20 Miguel de Icaza <miguel@novell.com>
32942 * collection.cpp: Add support for RemoveAt.
32944 * runtime.cpp (html_timer_timeout_add): Added helper routine to
32945 setup Html timeouts.
32947 2007-07-20 Chris Toshok <toshok@ximian.com>
32949 * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
32950 from Canvas to Panel. I consider this cleaning up the source, as
32951 it's entirely possible to write Panel subclasses that aren't
32952 Canvas subclasses, but if you did that you'd have no
32953 rendering/event handling.
32955 Now pretty much all logic that involves iterating over the list of
32956 children is in Panel. This also greatly simplifies Canvas. It is
32957 now just a Panel with 2 interesting things about it: 1) it
32958 provides 2 attached properties to lay out its children, and 2) it
32959 allows the surface to dictate its bounds if it's the toplevel
32962 2007-07-20 Chris Toshok <toshok@ximian.com>
32964 * downloader.cpp (Open): set the uri of the downloader.
32966 2007-07-20 Chris Toshok <toshok@ximian.com>
32968 * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
32969 so the potentially large number of objects which don't register
32970 events don't allocate them.
32972 2007-07-20 Chris Toshok <toshok@ximian.com>
32974 * clock.h, clock.cpp: lock around access to the tick_call list, so
32975 tick calls can be added from other threads.
32977 2007-07-16 Miguel de Icaza <miguel@novell.com>
32979 * media.cpp (SetSource): Also handle Completed.
32981 * downloader.cpp (Send): If a send operation is performed on an
32982 object that has completed its operation, immediately emit the
32983 finished event or error event.
32985 (Open): During open invalidate the state, to
32986 ensure that new downloads are properly triggered.
32988 2007-07-16 Chris Toshok <toshok@ximian.com>
32990 * frameworkelement.h, frameworkelement.cpp: we need
32991 framework_element_new so managed subclasses of FrameworkElement
32994 * uielement.h, uielement.cpp: same for this type.
32996 2007-07-13 Chris Toshok <toshok@ximian.com>
32998 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32999 normally we'd only update the bounds of this element on a
33000 width/height change, but if the render transform is someplace
33001 other than (0,0), the transform needs to be updated as well.
33003 2007-07-12 Chris Toshok <toshok@ximian.com>
33005 * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
33006 capturing. This should be on Visual and not UIElement, but we
33007 don't dispatch events that way.
33009 2007-07-12 Chris Toshok <toshok@ximian.com>
33011 * downloader.h, downloader.cpp: make the Downloader object a bit
33012 more C++ friendly, and make all the private data private.
33014 Also, take this opportunity to switch to using RegisterEvent/Emit
33015 to generate events, instead of the custom listeners. This will
33016 let JS hook up to the events.
33018 * media.h, media.cpp: track the downloader changes.
33020 2007-07-11 Jackson Harper <jackson@ximian.com>
33022 * collection.cpp: Comment out the namescope merging stuff for now,
33023 it causes some regressions.
33025 2007-07-12 Jackson Harper <jackson@ximian.com>
33027 * xaml.cpp: Restart the whole attribute parsing loop when the
33028 reparse flag is set, otherwise the first attribute will be
33031 2007-07-11 Chris Toshok <toshok@ximian.com>
33033 * uielement.cpp (UIElement::UIElement): the event names need to
33034 match those used by microsoft. makes it easier to handle the
33035 event hooking up in the plugin, where the event names are used.
33037 2007-07-11 Chris Toshok <toshok@ximian.com>
33039 * xaml.cpp (xaml_set_property_from_str): the plugin does its own
33040 resolution of properties now, so it doesn't need to pass the
33041 property name. Change this to take the DependencyProperty*
33044 * xaml.h: change prototype for xaml_set_property_from_str.
33046 2007-07-11 Jackson Harper <jackson@ximian.com>
33048 * collection.cpp: When new objects are added to a collection, try
33049 to merge them into the containers namescope.
33051 2007-07-11 Jackson Harper <jackson@ximian.com>
33053 * xaml.cpp: We need to stop parsing if there is an error while
33054 resolving a custom namespace type.
33056 2007-07-10 Chris Toshok <toshok@ximian.com>
33058 * dependencyobject.cpp (resolve_property_path): we need to reset
33059 "expression_found" when we hit a '.' so that we'll lookup what
33062 2007-07-10 Chris Toshok <toshok@ximian.com>
33064 * dependencyobject.cpp (resolve_property_path): we need to be able
33065 to handle more than just single digit indexers. use strtol and
33066 recompute 'i' afterward.
33068 * canvas.cpp (Canvas::InsideObject): revert the change that helped
33069 dr.popper because it breaks lunareclipse.
33071 2007-07-09 Chris Toshok <toshok@ximian.com>
33073 * demo.cpp: don't pass the parser callbacks to the individual xaml
33076 * control.h, control.cpp: don't pass the parser callbacks to
33077 initialize_from_xaml.
33079 * xaml.h, xaml.cpp: remove the parser callbacks from the
33080 individual parsing methods, and add xaml_set_parser_callbacks.
33082 2007-07-09 Jeffrey Stedfast <fejj@novell.com>
33084 * mplayer.cpp (audio_loop): If we break out of the loop because
33085 the media player was stopped, don't forget to unlock the pause
33087 (Close): Don't free the uri here.
33088 (~MediaPlayer): Free it ehre, though.
33090 2007-07-09 Chris Toshok <toshok@ximian.com>
33092 * uielement.h, uielement.cpp: we need to register the
33093 KeyUp/KeyDown events (even if we aren't emitting them) to keep
33094 from getting a warning when running aglayoutdemo.
33096 * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
33097 method (and remove all error handling, which should likely go back
33098 in) and replace the previous implementation. It was failing to
33099 parse timespans like this: 0:0:0.20000000 because it was treating
33100 it as if I wanted "20000000" tenths of a second, instead of 2.
33101 This makes the 'pop' animation in dr.popper actually show up.
33103 2007-07-09 Chris Toshok <toshok@ximian.com>
33105 * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
33107 (Storyboard::Begin): This is a dubious change. Remove the check
33108 to see if we weren't already Active. This fixes the calendar view
33109 in airlines, since there's a window where the start animation is
33110 startable when we enter a day, but the end animation isn't (since
33111 it's still active) when we leave. So we're left with a selected
33114 * clock.cpp: instead of Stopping clocks that come to the end of
33115 their active period, move to the Filling state. ClockGroups with
33116 automatic duration and no Active children still stop correctly.
33118 2007-07-08 Chris Toshok <toshok@ximian.com>
33120 * many-files (again!): another, smaller change to the event stuff.
33121 stop using strings for everything that we can. Register events at
33122 object construction time, and use those id's for everything else.
33123 The string interface is still around because of
33124 EventTrigger::Set/RemoveTarget, as well as the managed code.
33126 One further change that's needed - the id's are per-instance now,
33127 which is stupid. they should be static.
33129 This further cuts down the work (in terms of hash functions) that
33130 needs to be performed in order to dispatch an event.
33132 2007-07-08 Chris Toshok <toshok@ximian.com>
33134 * many-files: fairly big change. Stick the EventObject class
33135 between Base and DependencyObject in the hierarchy, and get rid of
33136 DependencyObject's "events" field. Get rid of all the registered
33137 events on surface, and emit them directly from the elements where
33138 they occur. This allows us to remove the Surface* parameter to
33139 all the event methods. Also, change the EventHandler signature to
33140 include the sender of the event as well as a "calldata" pointer,
33141 which is where we stuff the unmanaged MouseEventArgs (and later
33142 will the KeyboardEventArgs).
33144 Next step is to add RegisterEvent in EventObject and use that
33145 integer id everywhere instead of the string name when we Emit
33148 2007-07-07 Chris Toshok <toshok@ximian.com>
33150 * dependencyobject.h: add GetName() instance method.
33152 * dependencyobject.cpp (dependency_object_get_name): and call it
33155 * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
33156 implementation here since FrameworkElement just goes by
33159 * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
33160 same element" optimization. it's stupid and doesn't work. what
33162 (Canvas::ComputeBounds): simplify this by using
33163 item->GetLayoutVisible instead of item->GetValue.
33164 (Canvas::Render): enable the rendering optimization where we only
33165 bother rendering elements whose bounds intersect those of the
33166 rectangle we're repainting. This seriously speeds up airlines.
33168 * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
33169 another flag. now the three VisibilityProperty states are
33170 represented by two flags.
33172 Also, remove the implementation of GetSizeForBrush (not all
33173 UIElements are stroked) and warn callers.
33175 * control.cpp: Attach to the real object, and report back its
33176 property changes to our parents. Also, control_initialize_from_xaml
33177 should call Control::InitializeFromXaml.
33179 * control.h: override the 3 Get*Visible methods from UIElement,
33180 and return our real_object's state.
33184 2007-07-07 Jeffrey Stedfast <fejj@gnome.org>
33186 * demo.cpp (FileDownloadState::Send): Only notify complete if uri
33187 != NULL (if uri is NULL, then it means it couldn't be opened).
33188 (FileDownloadState::Open): notify error if we can't open the file.
33190 * mplayer.cpp: Fix to make sure we have
33191 AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
33192 before calling decode to prevent an ffmpeg warning.
33194 2007-07-07 Chris Toshok <toshok@ximian.com>
33196 * brush.cpp: make sure to use GetSizeForBrush for everything
33197 instead of cairo_stroke_extents, which won't work for non-stroked
33198 elements like canvases. Also, notify changes to the
33199 GradientStopCollection up the hierarchy properly.
33201 * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
33202 implementation for FrameworkElement so Canvases (and other
33203 uielement subclasses) can have brushes assigned to them (canvas
33204 uses it for its background.)
33206 * canvas.cpp (Canvas::Render): remove the unused label.
33208 2007-07-06 Miguel de Icaza <miguel@novell.com>
33210 * media.cpp: Do not pass the filename as the result now on the
33211 calls. Code must use the downloader_get_response_text or
33212 downloader_get_response_file to get the contents from the download
33213 (as the request will include the part name).
33215 * downloader.cpp: Add a cache for zip file parts.
33217 * media.h (Image): track the part name that was requested on the
33220 2007-07-06 Chris Toshok <toshok@ximian.com>
33222 * canvas.cpp (Canvas::ComputeBounds): if the width/height
33223 framework element properties haven't been set (their default is
33224 0.0), then don't union it with the rest of our bounds.
33226 2007-07-06 Chris Toshok <toshok@ximian.com>
33228 * runtime.h, runtime.cpp: continue the marginalization of
33229 Surface-as-general-data-dumping-ground by passing the cairo
33230 context to all the event handlers that need it (all but Leave, but
33231 should we make this distinction?).
33233 Make tons of stuff private that doesn't need exposing. Add
33234 accessors for the easier things, and leave the callbacks public
33235 for now. Also clean up the partially C/partially c++
33236 implementation in runtime.cpp. Now the C api is a thin wrapper
33237 around instance method calls, and all the gtk/clock event
33238 callbacks are static methods so they can still access the private
33241 * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
33242 uielement.cpp: fallout from the event signature changes - add
33243 cairo_t* to a lot of places, basically.
33245 * demo.cpp: no need to use the C api for Surface here. just use
33248 2007-07-06 Jeffrey Stedfast <fejj@novell.com>
33250 * media.cpp (OnPropertyChanged): Oops, be consistant with other
33251 implementations - only chain up if it wasn't a property owned by
33254 * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
33255 to save object size.
33257 * media.cpp (OnPropertyChanged): Fixed to always notify property
33258 listeners and chain up to our parent impl.
33260 2007-07-06 Miguel de Icaza <miguel@novell.com>
33262 * downloader.cpp: Implement the zip file support for the
33263 downloader using miniZip, from:
33265 http://www.winimage.com/zLibDll/minizip.html
33267 The implementation is in C++, so there are no needs to delegate
33268 this to the managed side as previously planned.
33270 There are two APIs: one returns a filename, the other returns the
33271 file loaded into memory, with the size of the memory blob.
33273 2007-07-06 Chris Toshok <toshok@ximian.com>
33275 * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
33276 track of the visibility (boolean, not three-state) and hit test
33277 visibility state in our flags. implement GetVisible() and
33278 GetHitTestVisible() using the flags.
33280 * canvas.cpp (Canvas::CheckOver): use GetVisible and
33281 GetHitTestVisible to avoid property lookups when dispatching
33284 2007-07-06 Chris Toshok <toshok@ximian.com>
33286 * runtime.cpp (measuring_context_create): we keep a singleton
33287 measuring context now.
33288 (measuring_context_destroy): do nothing here. it's freed in
33290 (runtime_shutdown): free up our measuring context.
33292 * canvas.cpp, canvas.h, control.cpp, control.h,
33293 frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
33294 text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
33295 InsideObject to take the cairo_t* instead of the Surface.
33297 2007-07-06 Chris Toshok <toshok@ximian.com>
33299 * runtime.cpp (Surface::SetCursor): new method, used in the event
33300 code to update the cursor as we enter/leave elements.
33302 * runtime.h: add method, cursor_instance field, and move the body
33303 of the Surface ctor (and initializations) to the .cpp file.
33305 * xaml.cpp: fix name of Cursor property enum mapping.
33307 * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
33308 control.cpp: add MouseCursor* arg to HandleMotion so we can report
33309 back cursor changes on elements.
33311 Also, in canvas.cpp, implement IsHitTestVisible checking in
33314 * enums.h: add the MouseCursor enum.
33316 2007-07-05 Chris Toshok <toshok@ximian.com>
33318 * Makefile.am (libmooninclude_headers): remove cutil.h
33319 (libmoon_la_SOURCES): remove cutil.cpp
33321 * cutil.h, cutil.cpp: remove. no longer necessary.
33323 * text.cpp (TextBlock::ComputeBounds): load the identity matrix
33324 before stroke/fill_extents to work around a cairo bug that was
33325 giving us enormous bounds on rotated elements. also, -1 from x/y
33326 and +2 to width/height of our bounds.
33328 * media.cpp (MediaElement::ComputeBounds): load the identity
33329 matrix before stroke/fill_extents to work around a cairo bug that
33330 was giving us enormous bounds on rotated elements. also, -1 from
33331 x/y and +2 to width/height of our bounds.
33332 (Image::ComputeBounds): same.
33334 * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
33335 no stroke, we drew it, and do_op was true.
33336 (Shape::ComputeBounds): load the identity matrix before
33337 stroke/fill_extents to work around a cairo bug that was giving us
33338 enormous bounds on rotated elements. also, -1 from x/y and +2 to
33339 width/height of our bounds.
33341 * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
33342 subproperty changes on RenderTransformOrigin, since it's a point
33343 and not a dependency object.
33345 2007-07-05 Chris Toshok <toshok@ximian.com>
33347 * runtime.cpp, runtime.h: store the last mouse position of events
33348 so that we can continue to update after the clock tick (and
33349 provide motion/enter/leave events to elements that might have
33350 moved under the pointer).
33352 The "update-input" event isn't presently emitted (see clock.cpp)
33353 because it results in this code calling HandleMotion on every
33354 tick, which ends up emitting the C# event (which is wrong).
33356 * clock.h, clock.cpp: add a (presently unused) phase to the clock
33357 tick to update the current mouse over after we've updated our
33358 clocks (and therefore possibly updated the transforms on
33361 2007-07-05 Chris Toshok <toshok@ximian.com>
33363 * dependencyobject.cpp (dependency_object_get_name): change this
33364 to return the x:Name value if there is one (and "(null)" if not).
33365 (dependency_object_get_type_name): and make this function do the
33366 job originally done by _get_name.
33368 * dependencyobject.h: add dependency_object_get_type_name
33371 2007-07-05 Chris Toshok <toshok@ximian.com>
33373 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
33374 mouse event code so that the Handle* calls return void, like the
33375 Enter/Leave calls do. Also, all checks for "inside"-ness happen
33376 in the canvas/parent object. Also factored out the loop over
33377 children to "FindMouseOver", with the checks happening in
33380 This needs more testing to make sure that we're still emitting
33381 events in the right order/amount as silverlight.
33383 In uielement.cpp, also add support for showing the bounding
33386 * control.h, control.cpp: track event refactoring.
33388 * frameworkelement.cpp (FrameworkElement::InsideObject): remove
33389 the bounding rect check. that's handled in the parent object now.
33391 2007-07-04 Chris Toshok <toshok@ximian.com>
33393 * media.cpp, media.h: rework our caching for images. we now
33394 properly refcount things, don't leak the filename (or the
33395 surface), share 1 xlib surface amongst all Image's, and don't
33396 crash. improvements all around!
33398 2007-07-04 Miguel de Icaza <miguel@novell.com>
33400 * value.cpp (Value): Add a couple of extra cases I had missed
33401 where we should be using g_new instead of new as FreeValue always
33404 2007-07-03 Jackson Harper <jackson@ximian.com>
33406 * xaml.cpp: Add the stylus types and some missing collections,
33407 this brings us up to sync with everything implemented in
33410 2007-07-03 Chris Toshok <toshok@ximian.com>
33412 * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
33413 filled), we need to call cairo_new_path.
33415 2007-07-03 Jackson Harper <jackson@ximian.com>
33417 * xaml.cpp: Some post parsing memory cleanup and a little extra
33420 2007-07-03 Chris Toshok <toshok@ximian.com>
33422 * text.h: add prototype for text_block_set_font_source.
33424 2007-07-03 Chris Toshok <toshok@ximian.com>
33426 * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
33427 brush property changes. Property chain up to
33428 Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
33429 (Shape::ComputeBounds): we need to do the fill, so pass true as
33430 consider_fill to DoDraw. otherwise a stroke-less filled shape
33431 gets bounds with w == h == 0.0.
33433 2007-07-03 Chris Toshok <toshok@ximian.com>
33435 * collection.cpp (VisualCollection::Clear): force the invalidate
33436 when we update our bounds. Also, don't do anything if the length
33437 of the collection is 0.
33439 2007-07-03 Chris Toshok <toshok@ximian.com>
33441 * canvas.cpp (Canvas::ComputeBounds): we need to always include
33442 our FrameworkElement::Width/Height in our bounds computation,
33443 instead of only consulting them if we have no children.
33445 2007-07-03 Chris Toshok <toshok@ximian.com>
33447 * media.cpp, media.h: add an image surface cache. we don't cache
33448 the xlib surface unfortunately, so there's still a slowdown from
33449 generating 1 per Image for shared pixbufs.
33451 2007-07-03 Miguel de Icaza <miguel@novell.com>
33453 * collection.cpp: Add support for reporting errors if the iterator
33454 gets out of sync with the collection.
33456 * demo.cpp: Updated to the new downloader interface.
33458 * downloader.cpp: Eliminates the in-memory buffer during
33461 We still do the progressive updates as those are necessary for the
33462 progress indicators, and if we ever need to hook up during
33463 progressive downloads again.
33465 But now downloads on completion must notify the downloader of the
33466 local file where the download contents have been placed (necesary
33467 for implementing the Zip-file support).
33469 (Downloader): eliminate our in-memory buffer byte_array_contents
33471 (downloader_notify): takes a new extra argument, overloaded
33472 depended on the operation.
33474 (get_response_text): currently not implemented, it needs to be
33475 implemented by a callback into managed code so we can use ZipLib
33476 (unless we can find a suitable unmanaged version).
33478 * media.cpp: Remove the stale code for progressive image
33480 2007-07-02 Miguel de Icaza <miguel@novell.com>
33482 * media.cpp (SetSource): If we had a previous downloader, unref
33485 2007-07-02 Chris Toshok <toshok@ximian.com>
33487 * collection.cpp (VisualCollection::Remove): punt on the optimized
33488 behavior for now. invalidating just the item should work if the
33489 item's bounds are correct, but for some reason the map path
33490 segments in the airline demo aren't redrawing properly. So, for
33491 now we just invalidate the parent container when an item is
33494 * control.h, control.cpp: override GetValue to report back values
33495 from our real_object if there is one, from us otherwise. and
33496 override SetValue to set values both on us and the real_object if
33499 Also, do nothing in our ComputeBounds call. Our GetBounds always
33500 returns the right thing (the bounds of the real_object), so
33501 there's no need to do any computation.
33503 lastly, remove the OnChildPropertyChanged. This is only invoked
33504 for attached properties, so we shouldn't ever be called.
33506 2007-07-02 Chris Toshok <toshok@ximian.com>
33508 * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
33509 updatebounds/invalidate here. UpdateTransform will take care of
33512 2007-07-02 Chris Toshok <toshok@ximian.com>
33514 * shape.cpp (Shape::OnPropertyChanged): turns out we need to
33515 update our bounds on the FillProperty changing as well, for shapes
33516 that aren't stroked.
33518 2007-07-02 Miguel de Icaza <miguel@ximian.com>
33520 * collection.cpp: Guard for cases where we are not attached to
33521 anything (closure is set to NULL).
33523 2007-07-02 Chris Toshok <toshok@ximian.com>
33525 * collection.cpp (collection_iterator_move_next): rework the logic
33526 here so we don't do the "current = next" assignment if
33527 iterator->first is true.
33528 (VisualCollection::Add): fix g++ warning.
33529 (TriggerCollection::SetVal): return the old element.
33531 2007-07-02 Jackson Harper <jackson@ximian.com>
33533 * xaml.cpp: Convert char data into Runs and set them on
33534 TextBlocks, also flush the char data when starting elements, so
33535 things like: <TextBlock>line one<LineBreak />line two</TextBlock>
33536 work properly. <TextBlock><TextBlock.Inlines>text... is illegal
33539 2007-07-02 Miguel de Icaza <miguel@novell.com>
33541 * value.cpp: Use g_malloc/g_free as the managed code is not able
33542 to use C++ new operator, so we have a potential error when we
33543 mismatch g_new with new and g_free with delete.
33545 Reported by Valgrind.
33547 * uielement.cpp: Add new helper method needed by Alan.
33549 2007-07-01 Chris Toshok <toshok@ximian.com>
33551 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
33552 notify attachees here.
33554 * text.cpp (TextBlock::OnPropertyChanged): need to notify on
33555 Actual Width/Height property changes, even if we don't recalc
33558 2007-07-01 Chris Toshok <toshok@ximian.com>
33560 * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
33561 guidelines here. need to chain up to FrameworkElement. fixes
33564 2007-07-01 Chris Toshok <toshok@ximian.com>
33566 * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
33567 (Polygon::OnPropertyChanged): same.
33568 (Path::OnPropertyChanged): same.
33569 (Shape::OnPropertyChanged): same.
33570 (Rectangle::OnPropertyChanged): same.
33572 * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
33574 (PathGeometry::OnPropertyChanged): same.
33575 (PathFigure::OnPropertyChanged): same.
33577 * brush.cpp (Brush::OnPropertyChanged): use the recommended
33579 (SolidColorBrush::OnPropertyChanged): same.
33580 (GradientBrush::OnPropertyChanged): same.
33581 (LinearGradientBrush::OnPropertyChanged): same.
33582 (RadialGradientBrush::OnPropertyChanged): new method.
33585 * brush.h: add RadialGradientBrush::OnPropertyChanged.
33587 * animation.cpp (animation_init): mark the storyboard TargetName
33588 and TargetProperty properties as attached.
33590 * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
33592 (Run::OnPropertyChanged): same.
33593 (Inline::OnSubPropertyChanged): add to handle the inline's
33594 foreground brush changing.
33596 * text.h: add Inline::OnSubPropertyChanged.
33598 * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
33599 background brush, and invalidate whenever it changes.
33601 2007-06-30 Chris Toshok <toshok@ximian.com>
33603 * shape.cpp (Shape::OnPropertyChanged): when need to update our
33604 bounding rectangle when a number of the stroke properties change.
33605 Also update them when the stroke itself is changed.
33607 2007-06-29 Chris Toshok <toshok@ximian.com>
33609 * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
33610 we need it for the foreground property. Make this explicit.
33611 also, add an OnSubPropertyChanged method for Glyphs, to handle the
33614 2007-06-29 Chris Toshok <toshok@ximian.com>
33616 * uielement.cpp (UIElement::UpdateBounds): oops. really only do
33617 that invalidate if the flag is true.
33619 2007-06-29 Chris Toshok <toshok@ximian.com>
33621 * text.cpp: Do CalcActualWidtHeight on any property that might
33622 cause a change. This is going to be a performance hit, but we
33623 need to take this step backward to get things working with the new
33624 ComputeBounds stuff. we'll need to reoptimize this so that it
33625 still works. Make sure to listen to OnCollectionChanged so we'll
33626 update our bounds (and recompute our actual width/height) on
33627 Inlines collection changes.
33629 * text.h: remove OnSubPropertyChanged (since it's not used.) Add
33630 OnCollectionChanged.
33632 2007-06-29 Chris Toshok <toshok@ximian.com>
33634 * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
33635 can actually read it, and notify attachees of our property
33636 changes. this makes ZIndex setting resort the parent panels list.
33638 * uielement.h: add an arg to UpdateBounds (a bool that defaults to
33639 false) to force an invalidation of the new bounds.
33641 2007-06-29 Chris Toshok <toshok@ximian.com>
33643 * panel.h, panel.cpp: okay, i'm stupid. it's not
33644 OnChildPropertyChanged either. it's OnCollectionChanged. we
33645 seriously need to clean this stuff up.
33647 2007-06-29 Chris Toshok <toshok@ximian.com>
33649 * panel.h, panel.cpp: child ZIndex property changes are reflected
33650 via OnChildPropertyChanged, not OnSubPropertyChanged.
33652 2007-06-28 Chris Toshok <toshok@ximian.com>
33654 * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
33656 * collection.cpp (VisualCollectoin::Clear): update the panel's
33657 bounds after the clear so we redraw everything.
33659 2007-06-27 Chris Toshok <toshok@ximian.com>
33661 * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
33662 instead. Also, rename getbounds to ComputeBounds(), and add a new
33663 GetBounds which returns the bounding rectangle.
33665 * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
33666 Simplify it a bit by using Rect's instead of the 4 doubles. Note
33667 that the calls to item->GetBounds do *not* cause item's bounds to
33669 (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
33670 child when its Left/Top properties change.
33671 (Canvas::HandleMotion): use Rect.PointInside to clean up the
33673 (Canvas::HandleButton): same.
33674 (Canvas::Render): remove the local "item_rect" and just use the
33677 * uielement.cpp (UIElement::UpdateBounds): remember the old
33678 bounds, compute the new bounds, and (if they're different)
33679 invalidate both and chain up to the parent's UpdateBounds method.
33680 (UIElement::UIElement): init the bounds.
33681 (UIElement::OnPropertyChanged): when switch away from a lot of the
33682 FullInvalidate calls. If the clip or OpacityMask is changed, just
33683 Invalidate. If the RenderTransform or RenderTransformOrigin is
33684 changed, called UpdateTransform.
33685 (UIElement::UpdateTransform): all UpdateBounds, since it's
33686 uncommon that our transform will change without our bounds
33688 (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
33689 but again switch away from FullInvalidate to other more targeted
33690 methods. If the transform properties change, call
33691 UpdateTransform, for clip and OpacityMask just call Invalidate.
33692 (UIElement::Invalidate): add a Rect taking one that just
33693 invalidates the rect, and make the default variety call it with
33695 (UIElement::ComputeBounds): rename GetBounds().
33697 * shape.cpp (ComputeBounds): don't use GetSurface. use a
33698 measuring cairo context.
33699 (Shape::OnPropertyChanged): if the Stretch property changed,
33700 UpdateBounds. also, change from FullInvalidate to just Invalidate
33701 for everything. Remove the UpdateTransform call as that gets
33702 handled by UIElement::OnPropetyChanged.
33703 (Rectangle::OnPropertyChanged): we only need to invalidate on a
33705 (Polygon::OnPropertyChanged): if the Points property changes we
33706 need to UpdateBounds and force an Invalidate. otherwise, just
33707 Invalidate. no need for FullInvalidate always.
33708 (Polygon::OnCollectionChanged): new method.
33709 UpdateBounds+Invalidate to catch changes to the points collection.
33710 (Polyline::OnPropertyChanged): analogous changes as were made to
33711 Polygon::OnPropertyChanged.
33712 (Polyline::OnCollectionChanged): same as
33713 Polygon::OnCollectionChanged.
33715 * text.cpp (TextBlock::TextBlock): move the SetValue call to the
33716 end, past all the initialization of things that might be needed in
33717 ComputeBounds, which gets called.
33718 (TextBlock::ComputeBounds): don't use GetSurface. use a measuring
33720 (TextBlock::CalcActualWidthHeight): use a measuring context here.
33721 (TextBlock::OnPropertyChanged): remove unnecessary call to
33722 FrameworkElement::OnPropertyChanged from the end of the method.
33723 (Glyphs::ComputeBounds): return Rect (0,0,0,0).
33725 * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
33726 use a measuring context.
33727 (Image::ComputeBounds): same.
33728 (OnPropertyChanged): just Invalidate here, no need for
33730 (DownloaderEvent): just Invalidate here, not FullInvalidate.
33732 * frameworkelement.cpp (FrameworkElement::InsideObject): use
33735 * control.cpp (Control::GetBounds): use a Rect here.
33736 (Control::ComputeBounds): forward on to the real_object.
33738 * collection.cpp (VisualCollection::VisualUpdate): when adding an
33739 element, we need to force its invalidation, but not the parent's.
33740 we just update the parent's bounds and UpdateBounds will do the
33741 invalidating if it needs to.
33743 * runtime.cpp (surface_attach): we don't need to do a full
33744 invalidate. just update the bounds of the toplevel (which sets
33745 the width and height to the widget's) and force an invalidate
33746 (just in case the user set the width/height to exactly the same
33747 thing before attaching).
33748 (surface_size_allocate): same thing here - no need for
33749 FullInvalidate. Just update the bounds.
33750 (measuring_context_create): create a tiny surface and a cairo_t
33751 for use in measuring things.
33752 (measuring_context_destroy): destroy the surface and cairo_t.
33754 * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
33757 2007-06-28 Miguel de Icaza <miguel@novell.com>
33759 * runtime.cpp (expose_event_callback): Introduce a new
33760 "transparent" field in the Surface. If set, we clear the
33761 region with a transparent region.
33763 2007-06-27 Miguel de Icaza <miguel@novell.com>
33765 * runtime.cpp: Event handlers will work with or without GdkWindows
33766 on the GtkWindows in preparation to support Larry later.
33768 Paint the surface with alpha transparency for now, this breaks the
33769 F-Spot embedding but will be fixed later when we can paint at an
33770 offset, wonder if this will affect performance for now.
33772 Call gtk_event_box_set_visible_window () with TRUE, so that we
33773 have a window, for now we require this to get the events working
33776 * canvas.cpp: Drop the translate transform on the topmost canvas
33777 as that was breaking all the code that depended on the inverse
33778 matrix transform to work for doing coordinate mapping based on the
33781 Instead we need to draw the cairo context at the given offset
33782 in the repaint routine. This is left as an excercise for Larry.
33784 Tests to validate that the mouse input is working:
33786 * test/demo.exe: enter/leave
33788 * silverlight airlines
33789 * LunarEclipse designer.
33791 * value.cpp (FreeValue): New method that does the actual releasing
33792 of the value. We do this here so the managed code can release
33793 things in the same way.
33795 (value_free_value): helper method.
33797 2007-06-27 Chris Toshok <toshok@ximian.com>
33799 * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
33800 calls to RaiseAccumulatedEvents.
33802 2007-06-27 Chris Toshok <toshok@ximian.com>
33804 * clock.cpp (get_now): turns out we really do want this extra *10
33805 in there, so that it matches up with mono's TimeSpan.Tick values.
33807 2007-06-27 Chris Toshok <toshok@ximian.com>
33809 * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
33810 take part in bounds computation.
33811 (Canvas::HandleButton): !Visible elements don't take part in hit
33813 (Canvas::HandleMotion): same here.
33815 2007-06-27 Jackson Harper <jackson@ximian.com>
33817 * xaml.cpp: Use Type to lookup the property owner, because it
33818 might be a "ghost" type that the xaml parser can't lookup.
33820 2007-06-27 Miguel de Icaza <miguel@novell.com>
33822 * control.cpp: When handling events, we also need to pass the
33823 event notification to the control, not only to the "real_object"
33824 that we are proxying for. This is what cause the calendar to
33827 * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
33828 the canvas, instead use the point at (0,0) and the width, height
33829 with its absolute transformation.
33831 Otherwise canvases with children would end up with
33832 (0,0,0,0) and when compounded would extend the bounding box of
33833 containing ones to include this region even when not needed.
33835 2007-06-26 Chris Toshok <toshok@ximian.com>
33837 * uielement.h: add virtual GetSurface() method.
33839 * uielement.cpp: implement UIElement::GetSurface to just chain up
33840 to the parent element if we have one, and return NULL otherwise.
33841 Also, make item_get_surface call this method. removes the
33842 dependency on canvas.h from this file.
33844 * canvas.h: we override UIElement::GetSurface ()
33846 * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
33847 return our surface. otherwise call our base class's GetSurface.
33849 * media.h: rename Image::GetSurface here to GetCairoSurface to
33850 avoid name collision.
33852 * brush.cpp, media.cpp: track media.h change.
33854 2007-06-26 Miguel de Icaza <miguel@novell.com>
33856 * collection.h: Change of course. The actual public interface
33857 implements IList<T> and ICollection<T> not IList nor ICollection
33858 which means that Add does not need to return an index, and Remove
33859 must return whether it actually removed the object.
33861 * collection.h (Add): Make this method return the index of the
33862 object just created, so we can implement int IList.Add(...).
33864 Removed all the empty Add/Remove methods from collections that
33865 were not doing anything interesting with them, the remaining
33866 chunks of old hacks.
33868 * (SetVal): This method is used to replace a value at a given
33869 index with another one. For the C# IList.this [int] indexer.
33871 2007-06-26 Chris Toshok <toshok@ximian.com>
33873 * clock.cpp: make a copy of the child clocks lists before
33874 traversing them calling callbacks that could result in the lists
33877 2007-06-26 Chris Toshok <toshok@ximian.com>
33879 * dependencyobject.h: add OnCollectionChanged to allow
33880 propertychange notifications from elements in collections to
33881 bubble up to their parent.
33883 * collection.h: make the closure a DependencyObject*, just to be
33884 explicit. also, add OnSubPropertyChanged to Collection so we can
33885 generate OnCollectionChanged notifications.
33887 * collection.cpp: hook things up on elements in collections, and
33888 generate proper notifications from the collection to its closure.
33890 * enums.h: add CollectionChangeType for use in
33891 OnCollectionChanged.
33893 * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
33894 collection notification stuff to bubble changes up the hierarchy.
33896 2007-06-26 Jeffrey Stedfast <fejj@novell.com>
33898 * list.cpp (Replace): Added.
33900 * dependencyobject.cpp (dependency_object_get_value_no_default):
33901 New binding function.
33902 (dependency_object_get_object_type): Renamed from get_kind() which
33903 didn't mirror the native API at all.
33905 2007-06-26 Sebastien Pouliot <sebastien@ximian.com>
33907 * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
33908 * shape.cpp: Remove debugging output.
33910 2007-06-26 Chris Toshok <toshok@ximian.com>
33912 * uielement.h: change render/dorender to take a cairo_t* instead
33915 * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
33916 uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
33917 media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
33920 2007-06-25 Jeffrey Stedfast <fejj@gnome.org>
33922 * brush.cpp (LinearGradientBrush::SetupBrush): Use
33923 uielement->get_size_for_brush() because the framework width/height
33926 * text.cpp: Implement text wrapping and clipping to Width/Height
33927 bounds if specified.
33929 2007-06-25 Miguel de Icaza <miguel@novell.com>
33931 * runtime.cpp: Cope with the fact that we are now windowless and
33932 we will be sharing the parent's window. Fixes mouse events.
33934 * collection.cpp (collection_get_value_at, collection_count): Add
33937 2007-06-25 Jeffrey Stedfast <fejj@novell.com>
33941 * text.cpp: Rewritten to use the new MangoRenderer and
33942 MangoAttrForeground classes.
33944 * mango.cpp: New source file implementing a PangoRenderer and
33945 providing a new PangoAttribute for brushes.
33947 2007-06-25 Chris Toshok <toshok@ximian.com>
33949 * runtime.h: add decl for Panel::OnSubPropertyChanged.
33951 * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
33952 zIndex by invalidating the item's rectangle.
33953 (UIElement::OnSubPropertyChanged): add braces around all the if
33954 blocks for consistency.
33955 (Panel::OnSubPropertyChanged): if a child changes its z index we
33956 need to resort our visual collection.
33957 (Canvas::render): loop over the z sorted list of children instead
33958 of the default collection list.
33959 (item_init): just to be anal, cast the Zindex default value to
33962 x2007-06-25 Chris Toshok <toshok@ximian.com>
33964 * collection.cpp: keep a z-sorted list in VisualCollection,
33965 adding/removing elements from it when needed, and clearing it when
33966 the collection is cleared.
33968 * collection.h: add a virtual clear method so VisualCollection can
33969 override it. Also, add a z_sorted_list member to
33970 VisualCollection, so we can deal with the ZIndices of children.
33972 2007-06-24 Alan McGovern <amcgovern@novell.com>
33974 * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
33976 2007-06-24 Larry Ewing <lewing@novell.com>
33978 * runtime.cpp: rework size allocation and make toplevel Canvas
33979 items read the allocation->x and allocation->y offsets from the
33980 surface widget when computing their position.
33982 2007-06-24 Chris Toshok <toshok@ximian.com>
33984 * Makefile.am (libmooninclude_HEADERS): add collection.h
33985 (libmoon_la_SOURCES): add collection.cpp
33987 * collection.h, collection.cpp: new files. split out Collection
33988 and all the collection-related code from runtime.h/runtime.cpp.
33989 arguably the collections specific to certain elements should exist
33990 completely in those .cpp/.h files, instead of here.
33992 * runtime.h, runtime.cpp: remove collection stuff.
33994 * clock.h, animation.h, transform.h: #include collection.h
33996 * value.h, value.h.in: #include <string.h> here so we can stop
33997 requiring it for everyone else. really, though we should be using
33998 g_strcmp or something that's already pulled in from glib.
34000 2007-06-24 Chris Toshok <toshok@ximian.com>
34002 * Makefile.am (libmoon_la_SOURCES): add array.cpp
34003 (libmooninclude_HEADERS): add array.h
34005 * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
34007 * array.h, array.cpp: new files, split them out from
34010 2007-06-24 Chris Toshok <toshok@ximian.com>
34012 * Makefile.am (libmooninclude_HEADERS): add xaml.h
34014 * xaml.h: split this out from...
34016 * runtime.h: ... here.
34018 * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
34020 2007-06-24 Chris Toshok <toshok@ximian.com>
34022 * Makefile.am (libmooninclude_HEADERS): add control.h
34024 * control.h: split out class Control stuff...
34026 * runtime.h: .. from here.
34028 * runtime.cpp: #include control.h
34030 * control.cpp: same.
34032 2007-06-24 Chris Toshok <toshok@ximian.com>
34034 * runtime.h: add OnLoaded methods to UIElement, Panel, and
34037 * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
34039 (VisualCollection::Add): only invoke OnLoaded on the item if the
34040 closure (the parent of the collection) has been loaded.
34041 (VisualCollection::Insert): same.
34042 (Panel::OnLoaded): call OnLoaded on all our children, then chain
34044 (surface_attach): call canvas->OnLoaded instead of
34045 emit_loaded_events(canvas). also, don't use a special IS_CANVAS
34046 flag - just use the type system.
34047 (item_get_surface): get rid of the IS_CANVAS flag and just use the
34050 * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
34051 the real object before chaining up.
34053 2007-06-24 Larry Ewing <lewing@novell.com>
34055 * runtime.cpp: disable transparent surfaces while fixing the
34056 drawing offset problem.
34058 2007-06-24 Larry Ewing <lewing@novell.com>
34060 * brush.cpp: use cairo_create_similar rather than using an image
34063 2007-06-24 Chris Toshok <toshok@ximian.com>
34065 * runtime.cpp (VisualCollection::Add): only emit Loaded if the
34066 tree we're adding it to has already been loaded.
34068 2007-06-24 Larry Ewing <lewing@novell.com>
34070 * demo.cpp: add -trans flag to demo to make the toplevel transparent.
34072 2007-06-24 Larry Ewing <lewing@novell.com>
34074 * runtime.cpp: add comments to the new gtk functions.
34076 * runtime.h: expose surface_paint.
34078 2007-06-23 Miguel de Icaza <miguel@novell.com>
34080 * runtime.cpp: Since unrealize does not seem to be called when our
34081 widget is destroyed by Mozilla, we need to cleanup on destroy the
34082 tick event. This takes care of one of the plugin crashers.
34084 There are still others that I have to find out, I added some
34085 debugging prints for now.
34087 2007-06-24 Larry Ewing <lewing@novell.com>
34089 * runtime.cpp: derive from EventBox not drawing area so that we
34090 can use it as a quick method of switching back and forth between
34091 transparent and not. Add a method to let external code paint to a
34094 2007-06-23 Jeffrey Stedfast <fejj@gnome.org>
34096 * text.cpp (SetValue): Overridden to enforce Text strings not
34097 preserving any leading nor trailing whitespace (as defined in the
34100 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
34102 * xaml.cpp (matrix_value_from_str): use delete[] to free the array
34103 of doubles instead of g_free() as it was allocated with new, not
34106 * text.cpp (Layout): D'oh, make sure to always init text/block
34107 width/height values. This fixes VideoBrush again.
34109 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
34111 * mplayer.cpp: Initialize 'opened' state variable.
34113 * text.cpp (GetValue): Override DependencyObject::GetValue() so
34114 that we can special-case getting TextBlock::Actual[Width,Height]
34115 properties (this allows us to prolong re-calculating these values
34116 until after the user has set the values he's going to set -
34117 re-calculating on ever property change is too expensive.
34119 * runtime.h: Make DependencyObject::GetValue() virtual.
34121 2007-06-22 Jeffrey Stedfast <fejj@gnome.org>
34123 * text.cpp: Stubbed out the required virtual methods for Glyphs
34124 and attempted to make ActualWidth and ActualHeight calculated
34125 immediately in an attempt to get DrPopper working better.
34127 2007-06-22 Sebastien Pouliot <sebastien@ximian.com>
34129 * shape.cpp: Small hack to avoid calling Draw 2 times during render.
34131 2007-06-22 Chris Toshok <toshok@ximian.com>
34133 * xaml.cpp (key_spline_from_str): free up the point arrays from
34134 point_array_from_str after we use them.
34135 (xaml_set_property_from_str): same.
34137 2007-06-22 Chris Toshok <toshok@ximian.com>
34139 * value.cpp (Value): the copy ctor is definitely corrupting memory
34140 in the MATRIX case - we need to allocate the destination matrix.
34142 2007-06-21 Chris Toshok <toshok@ximian.com>
34144 * Makefile.am: not that anyone should be installing this yet,
34145 install the headers to $(includedir)/libmoon.
34147 2007-06-21 Jeffrey Stedfast <fejj@novell.com>
34149 * text.cpp: Reworked text layout/rendering logic - we now cache
34150 width/height info for each text string as well as the overall
34151 block width/height. This info is then used to align text strings
34152 on each line along the bottom edge (rather than along the top
34153 edge) of the line of text.
34155 * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
34157 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34159 * stylus.h|cpp: Add InkPresenter.
34160 * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
34161 * value.h, type.h|cpp: Updated.
34163 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34165 * animation.cpp: Register *KeyFrame::Value properties as nullable.
34166 * clock.cpp: Register TimelineMarker properties.
34168 2007-06-21 Jackson Harper <jackson@ximian.com>
34170 * xaml.cpp: When setting the x:Name also set the name property.
34172 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34174 * stylus.cpp|h: Added Stroke and DrawingAttributes.
34175 * runtime.h: All collections can now implement GetElementType.
34176 * value.h, type.h, type.cpp: Updated.
34178 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34180 * stylus.cpp|h: Added.
34181 * runtime.cpp|h: Define and call stylus_init.
34182 * Makefile.am: Add stylus.cpp|h.
34183 * value.h, type.h, type.cpp: Updated.
34185 2007-06-21 Jackson Harper <jackson@ximian.com>
34187 * xaml.cpp: Add a global set of callbacks, so that all of the
34188 custom callbacks for a given parsing instance use the same
34189 methods. This needs to be encapsulated properly, but for now is
34192 2007-06-20 Chris Toshok <toshok@ximian.com>
34194 * animation.cpp, animation.h: KeyFrameCollection overrides
34195 Collection::Clear to clear its sorted list.
34197 * runtime.cpp, runtime.h: add overrideable Collection::Clear
34198 method, and move collection_clear's body into it.
34200 2007-06-21 Jackson Harper <jackson@ximian.com>
34202 * runtime.cpp|h: Don't return false on single element collections
34205 2007-06-21 Jeffrey Stedfast <fejj@gnome.org>
34207 * text.cpp: Use absolute font sizes, makes the fonts not so huge.
34209 2007-06-20 Jackson Harper <jackson@ximian.com>
34211 * xaml.cpp: Set namecopes earlier, and make sure to copy the
34212 namescope when we recreate a class using x:Class.
34213 - When we use x:Class reparse the element's attributes, so it can
34214 hook up to events and set properties.
34215 * runtime.cpp|h: When the Name property is set, register it with
34216 the proper NameScope.
34218 2007-06-20 Chris Toshok <toshok@ximian.com>
34220 * runtime.cpp, runtime.h: add rudimentary Visibility support. we
34221 only support Visible/Hidden really, and treat Collapsed as Hidden.
34223 * xaml.cpp (enum_from_str): use g_strcasecmp here.
34225 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34227 * shape.cpp|h: Implement caching of Path (this could be extended to
34229 * geometry.cpp|h: Notify on changes.
34231 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34233 * xaml.cpp: Don't allocate (and free) a copy of the PML before
34234 calling geometry_from_str.
34236 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34238 * shape.cpp: Fix some Stretch modes for paths. This can get very
34239 expansive, next step is to cache the cairo_path_t* in the Path and
34240 recompute it only on changes.
34242 2007-06-20 Chris Toshok <toshok@ximian.com>
34244 * xaml.cpp (is_valid_event_name): new function.
34245 (dependency_object_hookup_event): only allow valid events to be
34248 2007-06-20 Jackson Harper <jackson@ximian.com>
34250 * runtime.cpp|h: New method for finding an objects namescope.
34251 - Call an objects loaded event when it is added to a Collection
34252 - Some bits of namescope merging, these functions aren't called
34255 2007-06-20 Chris Toshok <toshok@ximian.com>
34257 * xaml.cpp (dependency_object_hookup_event): we need more than
34258 just the Loaded event.
34260 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34262 * text.cpp (Run): Don't set default font values here... we need
34263 them to be unset if they aren't explicitly set by the user so that
34264 we can inherit font properties from our parent TextBlock.
34265 (Draw): Fixed to make Runs inherit unset font properties from the
34266 TextBlock at render-time. Also fixed to make sure we have a
34267 foreground brush to draw with... if unset, use the default brush.
34269 2007-06-20 Chris Toshok <toshok@ximian.com>
34271 * runtime.cpp (UIElement::render): make this print the classname
34272 like UIElement::getbounds() does.
34274 * runtime.h, runtime.cpp: make control_initialize_from_xaml take
34275 the xaml parser custom element callbacks.
34277 2007-06-20 Chris Toshok <toshok@ximian.com>
34279 * runtime.cpp (runtime_shutdown): set inited to false, since we
34280 want people to be able to call runtime_init again after this.
34282 * type.cpp.in (Type::RegisterType): allocate types if we need to.
34283 (Type::Shutdown): free types.
34285 * type.h.in (private): make the types array dynamically allocated.
34287 * type.h, type.cpp: sync
34289 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34291 * text.cpp (TextBlock): Need to actually set ActualWidth and
34292 ActualHeight values.
34294 2007-06-20 Chris Toshok <toshok@ximian.com>
34296 * clock.cpp (Clock::Tick): if we hit our natural duration but our
34297 duration is Automatic, go to Fill mode, since we may have child
34298 clocks that started after us and need a chance to run their last
34301 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34303 * runtime.cpp (collection_iterator_move_next): If we can't iterate
34304 to the next item, don't set current = NULL.
34305 (dependency_object_get_name): New function needed for the binding.
34307 2007-06-20 Larry Ewing <lewing@novell.com>
34309 * runtime.cpp: use gdk_cairo helper functions and clip to the
34310 expose event region.
34312 * runtime.h: remove unused members.
34314 * media.cpp: use cairo_get_target rather than keeping track of
34317 2007-06-20 Jackson Harper <jackson@ximian.com>
34319 * xaml.cpp/runtime.h: Add one more callback, this one will hookup
34320 events to methods. So things like Loaded=CanvasLoaded will work.
34324 2007-06-20 Jackson Harper <jackson@ximian.com>
34326 * xaml.cpp: More verbose debug output with namespace lookup
34328 - Map in the default namespaces if we are unable to lookup the
34329 proper namespace name.
34331 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34333 * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
34334 or the mouse moving won't work.
34336 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34338 * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
34339 assigned, in that case we get the extents of the fill.
34341 2007-06-20 Chris Toshok <toshok@ximian.com>
34343 * animation.cpp: um.. "oops".
34345 * xaml.cpp (xaml_init): enable the parsing of the color/point
34348 2007-06-20 Chris Toshok <toshok@ximian.com>
34350 * animation.cpp: guard against division by zero in the double
34351 keyframe GetCurrentValue method. I'll fix this method up some
34352 more and then report it to the other animation types.
34354 Also, add the Spline(Color,Point)KeyFrames.
34356 * clock.cpp, clock.h: fixes to get all this working again while
34357 still supporting the needed things from the last patch (like
34360 * transform.cpp (GetTransform): i hate like hell to have to do
34361 this, but if we scale by 0.0 cairo can't invert the matrix and
34362 then everything goes belly up. 0.00002 is the smallest number I
34363 found (0.00001 doesn't work, for instance) where cairo doesn't
34364 complain about the inverse stuff.
34366 * media.cpp (media_element_set_buffering_time): we have to use the
34367 hacky Value ctor here.
34368 (media_element_set_position): and here.
34370 * runtime.cpp (emit_loaded_events): new function to walk the tree
34371 and emit loaded events.
34372 (surface_attach): call emit_loaded_events here - the docs specify
34373 that Loaded is emitted after it's associated with the host but
34374 before it's rendered.
34375 (Canvas::render): don't emit Loaded here.
34376 (runtime_init): output a nice message here if you run cairo
34377 against a verion of cairo that you shouldn't be using.
34379 * type.h, type.cpp, value.h: resync.
34381 2007-06-20 Jackson Harper <jackson@ximian.com>
34383 * xaml.cpp: Improve the way we handle x:Class attributes failing
34386 2007-06-20 Jackson Harper <jackson@ximian.com>
34388 * xaml.cpp: Hookup attached properties in the property_from_str
34391 2007-06-19 Chris Toshok <toshok@ximian.com>
34393 * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
34394 (media_element_get_position): same.
34395 (media_init): mark BufferingTime and Position as TimeSpan's.
34397 2007-06-19 Chris Toshok <toshok@ximian.com>
34399 * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
34400 but this was necessary to get BeginTime's to be supported. It
34401 reintroduces the "popping" in the surface demo, though, and
34402 honestly I'm unsure how we can ever guarantee that enough ticks
34403 will have occured to be sure we won't see the initial state of the
34406 * animation.cpp: track clock api changes.
34408 * runtime.h: decl for FramworkElement::OnPropertyChanged.
34410 * runtime.cpp (EventObject::Emit): make a copy of the list before
34411 we start emitting, to keep us crashing if the list is modified
34412 while we're traversing it.
34413 (FramworkElement::OnPropertyChanged): invalidate on width/height
34416 * xaml.cpp: when parsing a TIMESPAN property, use
34417 timespan_from_str. This fixes the parsing of BeginTime
34420 * type.cpp.in: register TIMESPAN.
34422 * value.h.in: add a AsTimeSpan method, and special hacky
34423 constructor so the parser can construct a value of type TIMESPAN
34424 (which is problematic since it's typedef'ed to gint64.) Move the
34425 TimeSpan typedef here.
34427 * value.cpp: add the impl for that hacky ctor.
34429 * type.h.in: add a TIMESPAN kind.
34431 * type.h, value.h, type.cpp: sync.
34433 2007-06-19 Jackson Harper <jackson@ximian.com>
34435 * xaml.cpp: we need to new the points.
34437 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34439 * geometry.cpp: Add safety to ensure the number of points are
34440 valid before iterating on them.
34442 2007-06-19 Jackson Harper <jackson@ximian.com>
34444 * xaml.cpp: make sure to get all the points.
34445 - sneak peek at the exciting new attached property setting code.
34446 - improve error message
34447 - dont step off the end of the string when the trailing characters
34450 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
34452 * *.cpp: Updated to use the new List type.
34454 * runtime.cpp|h (Collection): Modified to use List instead of
34455 GList which made some code simpler, we get to take advantage of
34458 * demo.cpp (main): Removed surface_destroy() and
34459 runtime_shutdown() out of the delete_event callback (gtk timeouts
34460 could still fire after the gtk_main_quit() call it seems).
34462 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34464 * runtime.cpp: Enforce UIElement::ClipProperty when rendering
34467 2007-06-19 Jackson Harper <jackson@ximian.com>
34469 * xaml.cpp: Content properties can be inherited.
34471 2007-06-19 Jackson Harper <jackson@ximian.com>
34473 * xaml.cpp: Make sure that we have a previous figure.
34475 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34477 * geometry.cpp|h: Revert previous changes. That didn't work well
34478 with groups/collections.
34479 * shape.cpp: Path::Draw now process the path (find and susbtract
34480 origin) when Stretch requires it.
34482 2007-06-19 Jackson Harper <jackson@ximian.com>
34484 * xaml.cpp: Set the namescope right away, so FindName will work in
34485 element constructors.
34487 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
34489 * animation.cpp: Switched to use List instead of GList.
34491 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34493 * geometry.cpp|h: Change API so the Strech value is propagated from
34494 the shape to all the geometry figures. Fixed Stretch for LineGeometry,
34495 EllipseGeometry and RectangleGeometry.
34496 * shape.cpp: Path::Draw now supply the Stretch property value to
34497 all Geometry objects drawing methods.
34499 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34501 * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
34502 the caller responsbility to do so, if required (e.g. it isn't for
34505 2007-06-19 Jackson Harper <jackson@ximian.com>
34507 * xaml.cpp: Implement all the optional points on path markup.
34509 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34511 * shape.cpp: Fix Stretch for Polyline and Polygon.
34513 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
34515 * xaml.cpp: Updated to use a real linked list implementation.. for
34516 added uberness. Also reduces memory leakage.
34518 * mplayer.cpp: Stubbed out a few more things and can now return
34519 the video duration.
34521 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34523 * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
34524 property to fill inside Rectangle and Ellipse ctors.
34526 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
34528 * runtime.cpp (Insert): Make this use SharedAdd too, which I
34529 presume was the whole point.
34531 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34533 * shape.cpp: Fix Strech support for Rectangle (it behave more like
34534 Ellipse but that shows only with non squares).
34536 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
34538 * mplayer.cpp (audio_loop): Fixed muting to advance the correct
34539 number of pts and not hang forever in a g_usleep() (gah, the timer
34540 was a huge negative value).
34542 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34544 * clock.h: Added TimelineMarker.
34545 * type.h, type.cpp, value.h: Updated.
34547 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34549 * shape.h: Fix filling for Polyline. MS supports filling polylines,
34550 even unclosed ones.
34552 2007-06-19 Chris Toshok <toshok@ximian.com>
34554 * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
34555 s->cairo_xlib after recreating the xlib stuff. avoids a crash
34556 when resizing surfaces.
34558 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34560 * shape.cpp: Add Strech support for Ellipse.
34562 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34564 * shape.cpp: Add Strech support for Rectangle (only None is different).
34565 Add comments to Line as Stretch doesn't apply for this Shape.
34567 2007-06-19 Miguel de Icaza <miguel@novell.com>
34569 * runtime.cpp (Collection): Add new Insert method, and update all
34570 the callers that overwrote it. We probably need to cleanup
34571 everything that is doing virtual overrides and is a no-op
34573 2007-06-19 Chris Toshok <toshok@ximian.com>
34575 * runtime.cpp (clear_drawing_area): this method doesn't need to
34576 clean up the xlib cairo context/surface and the pixmap.
34578 There are two possibilities:
34580 1) the drawing area has been realized, which means we have xlib
34581 surface/context + pixmap. We're guaranteed to hit
34582 unrealized_callback before this method is called, so they will
34583 have already been freed.
34585 2) the drawing area has not been realized, which means we have no
34586 xlib surface/context + pixmap, and this method doesn't need to do
34589 2007-06-19 Jackson Harper <jackson@ximian.com>
34591 * runtime.h/shape.cpp: Fix typo.
34593 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
34595 * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
34596 implementation and if one of our properties changed, notify our
34598 (Inline::OnPropertyChanged): Same.
34599 (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
34600 (TextBlock::Draw): Use our foreground brush directly and the same
34601 for run's foreground brush.
34603 2007-06-19 Miguel de Icaza <miguel@novell.com>
34605 * runtime.cpp: Implement collection iterators.
34607 2007-06-19 Chris Toshok <toshok@ximian.com>
34609 * xaml.cpp (timespan_from_str): don't walk off the end of the
34612 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34614 * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
34616 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34618 * animation.h|cpp: Add *_key_frame_new.
34620 2007-06-19 Jackson Harper <jackson@ximian.com>
34622 * xaml.cpp\runtime.h: Add a public function for setting
34623 properties, from strings. Basically a copy and paste of my
34624 set_attributes code. Eventually I should be able to merge the
34625 two, but they use different name lookup mechanisms right now.
34627 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
34629 * animation.cpp (Remove): Remove the KeyFrame from the sorted list
34630 before removing it from the collection (since it may be freed by
34631 Collection::Remove).
34633 2007-06-19 Miguel de Icaza <miguel@novell.com>
34635 * runtime.cpp: Add support for notifying the consumer that the
34636 surface has resized.
34638 Add support for resizing objects.
34640 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
34642 * brush.cpp (~VideoBrush): We want to detach from the media
34643 element, not ourselves. Doh.
34645 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
34647 * shape.h: Update comments about which shapes needs, or not, to
34648 provide a getxformorigin method.
34650 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34652 * media.h|cpp: Add media_base_new.
34654 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34656 * value.cpp|h|in: Inline the non-DependencyObject
34657 As* functions as well.
34659 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34661 * typegen.cs: Removed some dead code.
34662 * value.cpp.in: Deleted, not needed anymore.
34663 * runtime.cpp, value.cpp, type.cpp.in: Moved
34664 implementation of Value and Type into their own files.
34665 * type.cpp: Updated.
34667 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34669 * type.h, type.h.in: Created, moved declaration of Type here.
34670 * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
34671 references. Move the Value::As* into the header.
34672 * typegen.cs: Updated to cope with Kind changes.
34674 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
34676 * runtime.cpp|h, value.h.in: Remove current nullable code,
34677 it's easier to store an is_nullable flag in the registered
34678 property, and store NULL values in the objects hashtable.
34679 * xaml.cpp: Revert unnecessary fixes.
34680 * value.h: Updated.
34682 2007-06-19 Chris Toshok <toshok@ximian.com>
34684 * runtime.h: get rid of the specialized surface callbacks for
34685 mouse events. we can dispatch them directly to the UIElements.
34686 Change the EventObject signatures to permit an event/call data as
34687 well as the closure. add the sender object for kicks while we're
34690 * runtime.cpp: dispatch element events through the
34691 DependencyObject's events object.
34693 * animation.h, animation.cpp: update signatures for event
34696 * control.cpp (handle_button): track signature change.
34700 2007-06-18 Chris Toshok <toshok@ximian.com>
34702 * clock.cpp (TimeManager::Tick): add a lot of timing foo.
34703 (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
34704 we switching to the stopped state and our progress is 1.0 (that
34705 is, if we've finished).
34707 * animation.h, animation.cpp (Storyboard::Begin): rather heavy
34708 handed (but bulletproof) approach to making Begin work on a
34709 storyboard that has run its course - destroy the clock hierarchy
34710 and recreate it. Also, add a handler for the ClockGroup's
34711 "Completed" event so we can reflect that back to managed land.
34713 * runtime.h: add C functions to add/remove handlers from the
34714 EventObject inside a dep object.
34716 2007-06-18 Jackson Harper <jackson@ximian.com>
34718 * xaml.cpp: Set text context properties from char data. This
34719 allows you to do things like <Run>Hi I am some text</Run>. As far
34720 as I can tell, Run is the only element that allows this.
34722 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34724 * shape.cpp|h: Fix Line and Ellipse getxformorigin.
34726 2007-06-18 Jackson Harper <jackson@ximian.com>
34728 * xaml.cpp: Now implement the smooth beziers correctly, much
34729 thanks to spouliot for figuring out the formula to reflect control
34732 2007-06-18 Chris Toshok <toshok@ximian.com>
34734 * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
34735 what the timemanager should do on a given tick, and add some
34736 #defines/logic to calculate the gtk delay from the desired
34737 framerate. Set the desired framerate to 20fps.
34739 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
34741 Instead of attaching to Brush::ChangedProperty, connect to NULL.
34743 * media.cpp (render): If the width/height are 0.0, then use the
34744 video's natural width/height.
34745 (OnPropertyChanged): chain up.
34747 * shape.cpp (OnPropertyChanged): Always chain up to our parent.
34749 2007-06-18 Chris Toshok <toshok@ximian.com>
34751 * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
34752 fixes setting of nullable property values.
34754 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34756 * runtime.cpp: Store NULL again in the property hashtable,
34757 but use the lookup_extended function to detect this and return
34758 a correct NULL value instead of the default value.
34760 2007-06-18 Chris Toshok <toshok@ximian.com>
34762 * runtime.cpp (RemoveHandler): more cleanups.
34764 2007-06-18 Chris Toshok <toshok@ximian.com>
34766 * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
34769 2007-06-18 Jackson Harper <jackson@ximian.com>
34771 * xaml.cpp: Implement path closing and ArcSegments.
34773 2007-06-18 Miguel de Icaza <miguel@novell.com>
34775 * runtime.cpp (SetValue): This looks painful, now
34776 DependencyObjects are stored inside the hash but they might
34777 contain a NULL. This seems bad.
34779 (Value): Do not delete null dependency objects.
34781 Remove this patch, and try demo.exe, enter/leave/enter, this
34782 crashes now, because the leave sets the fill to "null" and the
34783 enter then tries to access it
34785 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
34787 * brush.cpp: Do proper OnPropertyChanged proagation.
34788 (ImageBrush::OnPropertyChanged): Notify using the generic
34789 Brush::ChangedProperty.
34790 (VideoBrush::OnPropertyChanged): Same.
34791 (VideoBrush::OnSubPropertyChanged): Same.
34793 * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
34794 so we can listen for change notification.
34796 * runtime.cpp (UIElement): Same.
34799 * text.cpp (TextBlock): Same here (need to do it for Inlines too
34802 * media.cpp (media_base_new): Removed, you can't instantiate a
34804 (advance_frame): Optimization hack: don't invalidate if our
34806 (MediaElement::render): Respect opacity and stretch properties.
34808 2007-06-18 Jackson Harper <jackson@ximian.com>
34810 * xaml.cpp: We need to create new figures if we get a Move
34813 2007-06-18 Chris Toshok <toshok@ximian.com>
34815 * demo.cpp: use TimeManager::AddTickCall for the async file
34816 loading. This makes the image visible immediately for me, instead
34817 of requiring the animations be paused to see it.
34819 * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
34820 sorts to TimeManager. This way we can better control when the
34821 cross thread downloader calls happen, and keep them from affecting
34822 the frame rate, and also keep them from being starved by an
34823 overzealous demo.cpp.
34825 2007-06-18 Chris Toshok <toshok@ximian.com>
34827 * runtime.cpp (unrealized_callback): remove the render handler.
34828 (realized_callback): attach the render handler.
34829 (render_surface): a very simple render handler. We just force gtk
34830 to process all pending updates.
34832 * clock.cpp (TimeManager::Tick): as a temporary hack, have
34833 TimeManager emit the "render" event after every animation tick.
34834 We should add tuning to this method to achieve usable framerates
34835 without killing the cpu.
34837 * clock.h: make TimeManager subclass from EventObject so we can
34838 hook up to events on it.
34840 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34842 * shape.cpp: getbounds gets bad results if stroke (or fill) isn't
34843 called. We create a new path so the bounds, for an invisible object,
34846 2007-06-18 Chris Toshok <toshok@ximian.com>
34848 * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
34850 2007-06-18 Jackson Harper <jackson@ximian.com>
34852 * xaml.cpp: Fix smooth quadratic bezier's.
34854 2007-06-18 Chris Toshok <toshok@ximian.com>
34856 * media.cpp, media.h (Image::render): on our first rendering,
34857 convert to using an xlib surface to speed up future redraws.
34859 2007-06-18 Chris Toshok <toshok@ximian.com>
34861 * runtime.cpp (UIElement::dorender): add this, and make everything
34862 that calls ->render call ->dorender.
34864 * control.cpp (render): call dorender on the realobject.
34866 * runtime.h: add STARTTIMER/ENDTIMER macros, and add
34867 UIElement::dorender which can be used to wrap render calls with
34868 debug info (in this case timer info.)
34870 * clock.h: add prototype for get_now().
34872 * clock.cpp (get_now): make this public, so we can use it for
34875 2007-06-18 Jackson Harper <jackson@ximian.com>
34877 * xaml.cpp: Implement Path Geometry parsing.
34879 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
34881 * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
34882 MediaElement if we don't already have one.
34883 (VideoBrush::OnPropertyChanged): SourceName does not refer to a
34884 uri, instead SourceName refers to a MediaElement.
34886 * media.cpp: Implemented some more helper "setters", defaulted
34887 some more MediaElement property values to correct values, and
34888 implemented updating of both the CurrentState property and the
34891 * mplayer.cpp (Position): Implemented.
34893 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34895 * media.cpp: Close the path after rendering the image.
34896 * shape.cpp: Avoid the filling operation in calls to getbounds. Also
34897 open and close a path before drawing normal (square) rectangles.
34899 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34901 * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
34902 C-style methods to access Type and DependencyProperty fields.
34903 In Type::IsSubclassOf don't take into account nullability.
34904 * animation.cpp, clock.cpp: Register nullable properties as such.
34906 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34908 * media.h|cpp: Add media_base_new.
34910 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34912 * value.h.in: Make checked_get_subclass handle null values. Include the
34913 Kind::*Null* values in the C# Kind.cs, and change their values to fit
34915 * value.h: Updated.
34917 2007-06-18 Miguel de Icaza <miguel@novell.com>
34919 * media.cpp (DownloaderEvent): If the Width/Height have not been
34920 set explicitly, provide them from the images (demo works, but it
34921 takes a while, due to the idle handler being too busy to be
34924 * runtime.cpp (Canvas::render): Cope with rounding from floats to
34925 ints, add 2, fixes the droppings in the surface.
34927 Include some of my debugging helpers (you sprinkle
34928 draw_grid in key places to see whats going on, useful to debug the
34929 bounding boxes and visually inspect if things are right.
34931 * media.cpp (getbounds): use the framework width/height not the
34932 pixbuf image size, this shrinks the size of the bounding box.
34933 (getxformorigin): Use it here too.
34935 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34937 * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
34938 indicates if their use would be visible or not (e.g. opacity > 0.0).
34939 * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE).
34940 Don't Fill or Stroke if the brush is invisible (opacity == 0).
34942 2007-06-18 Marek Habersack <grendello@gmail.com>
34944 * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
34947 * ffvideo.cpp (ALIGN): as above.
34949 2007-06-18 Chris Toshok <toshok@ximian.com>
34951 * clock.cpp: simplify pausing and stopping a clock that has
34952 children by keeping track of the new state (the one the clock will
34953 take at the end of this tick). This is necessary because the
34954 parent clock doesn't actually stop until the end of the tick, so
34955 we still need to update child clocks after we've determined the
34956 parent clock should stop.
34958 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
34960 * runtime.cpp: properly remove items from the doubly-linked list.
34962 2007-06-18 Chris Toshok <toshok@ximian.com>
34964 * animation.cpp (AnimationStorage::~AnimationStorage): delete the
34966 (Storyboard::Begin): force a TimeManager tick after we've hooked
34967 up the clock, so that all the animations have proper values before
34968 the next render. Fixes the "popping" in the surface demo.
34970 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34972 * runtime.cpp: Changed DependencyObject::SetValue to never store
34973 a null value in the hashtable.
34975 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
34977 * brush.cpp: Refactor the pattern creation to allow caching.
34978 * media.cpp|h: Add caching of cairo_pattern_t to Image.
34980 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
34982 * runtime.cpp: use motion hints for smoother motion event handling.
34984 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
34986 * text.cpp|h: Runs now cache their own PangoFontDescription and
34987 PangoLayouts as an optimzation (seems to be very slight for simple
34988 us-ascii text, but might help enormously for more complex
34989 languages). Also added some FIXME thoughts.
34991 2007-06-18 Everaldo Canuto <ecanuto@novell.com>
34993 * downloader.cpp: Add missing downloader_notify_finished.
34995 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
34997 * downloader.cpp: Only set dummy downloader functions if they
34998 aren't already set.
35000 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35002 * runtime.cpp: Add a few null checks.
35003 * downloader.cpp: Add initial dummy downloader functions to get
35004 meaningful messages if the downloader functions aren't initialized.
35006 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35008 * typegen.cs: Special case a few things for DependencyObject,
35009 and make a few messages more informative.
35010 * runtime.h|cpp: Add a value_type field to Type, and a constructor
35011 to specify the value. Add a constructor to DependencyProperty that
35012 can specify default value and type (in the case the default value
35013 doesn't have the same type as the property). Changed
35014 DependencyObject::SetValue to never store a null value in the
35015 hashtable. In Value destructor check for null pointers in a few
35016 cases. Update all uses of Value.k to Value.GetKind.
35017 * type.cpp.in: Update to specify value_type information.
35018 * value.h.in: Implement nullable type handling in Value.
35019 * value.cpp, type.cpp, value.h: Updated.
35021 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
35023 * text.cpp (get_size_for_brush): Calculate width/height if they
35025 (Draw): Don't use the brush if we aren't going to render (this is
35026 needed so that we don't get into a recursive loop since we have to
35027 manually calculate width/height).
35029 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
35031 * text.cpp (get_size_for_brush): Implemented (since
35032 cairo_stroke_extents() won't work for us).
35034 * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
35035 (ImageBrush::SetupBrush): Same.
35037 * runtime.cpp (UIElement::get_size_for_brush): New method to get
35038 width/height needed by Brushes for scaling.
35040 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35042 * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
35045 2007-06-17 Atsushi Enomoto <atsushi@ximian.com>
35047 * text.cpp : added text_block_set_font_source().
35049 2007-06-17 Miguel de Icaza <miguel@novell.com>
35051 * brush.cpp (brush_init): Create a BRUSH property called
35052 "FrameChange", it is internal and the sole use of it is so that
35053 upper layers that care about brush changes act on it by updating
35056 * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
35057 brushes only trigger an invalidate, there is no need to recompute
35060 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35062 * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
35063 delete for a void pointer, it can only delete known class types.
35065 2007-06-17 Jackson Harper <jackson@ximian.com>
35067 * xaml.cpp: Implement x:Class, we can now load the Surface demo's
35068 XAML file, and it's custom Canvas class (things still don't work
35069 though because the custom canvas uses a downloader.)
35071 2007-06-17 Miguel de Icaza <miguel@novell.com>
35073 The surface rotate and translate controls should both work, and
35074 the enter/leave events are now correct.
35076 * runtime.cpp (UIElement::handle_motion, handle_button): Change
35077 the semantics to better match Silverlight. Now these methods
35078 should check if the mouse is inside their region before calling
35081 This is necessary because children of the canvas (and panel) are
35082 within the confines of the bounding box, but the canvas can be
35083 smaller than that. The canvas is a container whose boundaries
35084 are only used for paiting, children might be outside of these
35087 It is necessary in these cases to pass the events to all the
35088 children within the canvas bounding box and for each child to
35089 determine if the event was within its range.
35091 (inside_object): replaced the default implementation for
35092 FrameworkElements with a more performing version: instead of
35093 mapping the point and using cairo_in_stroke and in_fill operations
35094 on a rectangle with mapped coordinates, we map the coordinates and
35095 check against the rectangle.
35097 (Canvas::getbounds): if we are the topmost canvas, the boundaries
35098 are those from the Surface, not the ones that include the maximum
35099 extent from the children. Used to do precise mouse enter/leave.
35101 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35103 * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
35104 when its not our property.
35106 * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
35108 * mplayer.cpp (GetSurface): Added.
35110 * text.cpp (text_init): Fixed to use RegisterFull for Froeground
35111 so we can specify Value::BRUSH as the default value type instead
35112 of it using SolidColorBrush as the type.
35114 2007-06-17 Chris Toshok <toshok@ximian.com>
35116 * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
35119 2007-06-17 Chris Toshok <toshok@ximian.com>
35121 * clock.cpp (Clock::TimeUpdated): remove a special case for the
35122 clock's duration being Automatic. Fixes infinite animation in
35125 * runtime.cpp (crossing_notify_callback): return type is gboolean,
35126 and make sure we always return something.
35128 2007-06-17 Miguel de Icaza <miguel@novell.com>
35130 Propagate changes from children of the transform up to our
35131 containers, this is done in several steps:
35133 * runtime.cpp (DependencyObject::Attach, Detach): New methods that
35134 are used to attach an object to a container and detach it. They
35135 were previously inlined inside SetValue.
35137 (Collection::Add, Remove): Attach and detach objects when they are
35140 * transform.cpp (Transform::OnPropertyChanged): if any class
35141 derived from Transform has one of its properties changed, it
35142 has a visual effect, propage this to the attacchees.
35144 (TransformGroup::OnSubPropertyChanged): Escalate here as well,
35145 this will catch the messages coming from anyone in the collection
35148 (TransformCollection::OnSubPropertyChanged): Buble the event up
35151 * runtime.cpp (handle_motion): Change the order in which we send
35152 the events to the UIElement, we should start at the topmost
35153 element, and have the toplevel canvas be last.
35155 2007-06-17 Sebastien Pouliot <sebastien@ximian.com>
35157 * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
35158 inside Image::render.
35159 * media.cpp: Use code from ImageBrush to render image with it's
35160 properties (e.g. Stretch)
35161 * transform.cpp: Update (commented) debug output.
35163 2007-06-17 Miguel de Icaza <miguel@novell.com>
35165 * runtime.cpp (GetValueNoDefault): This is necessary so we can
35166 distinguish a value that has been explicitly set from one that has
35170 * media.cpp (Image): use Framework::Width,Height for the image
35171 dimensions instead of the pixbuf width/height, used in extents and
35172 rotation computation.
35174 * runtime.cpp (Canvas::render): Set the clipping path on the
35175 identity matrix so we do not miss-clip.
35177 Render the canvas from 0, 0, fwidht, fheight, not the expose
35180 2007-06-16 Miguel de Icaza <miguel@novell.com>
35182 * runtime.cpp (Cairo::render): The canvas also needs to set the
35183 matrix and clear its background.
35185 (surface_resize): convenience entry point to resize a surface.
35186 Notice that this will resize the surface, but not the toplevel
35189 2007-06-16 Jackson Harper <jackson@ximian.com>
35194 * xaml.cpp: Use a callback for setting custom attributes in
35197 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
35199 * media.cpp: Implemented all the needed virtual methods for
35200 MediaElement to work, using my new MediaPlayer class.
35202 * mplayer.cpp|h: New class for playing media sources.
35204 * ffvideo.cpp: Removed from the build.
35206 2007-06-16 Miguel de Icaza <miguel@novell.com>
35208 Observation: either it is the surface, or something else is very
35209 slow, but entering the surface is quite slow right now to show the
35210 handles. Not sure what it could be.
35212 * runtime.cpp (OnPropertyChanged): We probably should catch the
35213 property changes here, and not in the Sub* variant of this thing,
35214 this will update the canvas properly now.
35216 (dump_hierarchy): useful bit to debug what is going wrong.
35218 (Canvas::get_xform_for): Do not apply extra
35219 transformations to the child other than the absolute_xform.
35221 (surface_attach): On attach we need to do a full invalidate, so
35222 the transformations are computed, otherwise it uses the defaults
35223 for the toplevel (zero), this fixes the atom.xaml issue.
35225 * control.cpp (get_xform_for): This is not proxied to the real
35226 object, this is proxied to the parent.
35227 (control_initialize_from_xaml): Set the parent link here.
35229 2007-06-16 Chris Toshok <toshok@ximian.com>
35231 * transform.cpp, transform.h, runtime.cpp, runtime.h,
35232 geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
35233 at removing all cached instance collections and using GetValue
35236 2007-06-16 Chris Toshok <toshok@ximian.com>
35238 * media.cpp (Image::SetSource): we want events even if we attach a
35239 downloader that's been started.
35241 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35243 * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
35244 will mess with the earlier filling.
35246 2007-06-16 Chris Toshok <toshok@ximian.com>
35248 * runtime.h, runtime.cpp: remove the instance cached
35249 Panel::children, use accessor to get it when we need it.
35251 * brush.h, brush.cpp: same for the GradientBrush::children
35254 2007-06-16 Chris Toshok <toshok@ximian.com>
35256 * runtime.h: make these const Rect&'s.
35258 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35260 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35261 the Value::Kind of the object that was created so the managed side do
35264 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35266 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35267 the element as the managed side needs (and defines) it.
35269 2007-06-16 Miguel de Icaza <miguel@novell.com>
35271 * control.cpp: Implement Control.
35273 * downloader.cpp: Implement a system to send various notifications
35274 as Chris wants his notifications and managed world wants the
35275 notifications as well.
35277 Should they ahve been separate? For now I just added a list of
35278 them. This code is turning uglier every minute.
35280 2007-06-16 Jackson Harper <jackson@ximian.com>
35282 * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
35284 - Handle expat errors a little better.
35286 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35288 * runtime.h: Implement missing IntersectsWith and Intersection to fix
35291 2007-06-15 Chris Toshok <toshok@ximian.com>
35293 * runtime.cpp (Canvas::render): small optimization. only call the
35294 item's render method if its bounds actually intersects with the
35295 rectangle we're rendering. Also, clip to the bounding rectangle
35298 2007-06-16 Chris Toshok <toshok@ximian.com>
35300 * clock.cpp, clock.h: don't use a constant for the timeout in
35301 gtk_timeout_add, and add methods to add/remove the timeout.
35303 (ClockGroup::TimeUpdated): if we're paused or stopped,
35304 don't call child clock TimeUpdated methods at all. they always
35305 generate CurrentTimeInvalidated even when the time hasn't changed,
35306 which triggers redraws that don't need to happen.
35308 2007-06-16 Jackson Harper <jackson@ximian.com>
35310 * runtime.cpp|h: We still need C style base_ref/unref.
35312 * xaml.cpp: Takle a callback for the from_file method also.
35314 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
35316 * ffvideo.cpp (Stop): Implemented.
35317 (.ctor): init paused to false (maybe this is why video
35318 didn'talways work?).
35319 (.dtor): Stop() the video and unhook the timeout.
35321 * runtime.cpp: Implement Base::ref and Base::unref instead of
35322 doing it the c way.
35324 * *.cpp: Updated for above change.
35326 * shape.cpp (shape_set_stroke): Don't unref the old stroke.
35327 (shape_set_fill): Same.
35329 * text.cpp (text_init): Use a separate brush for TextBlocks and
35331 (text_block_set_foreground): Don't unref the old brush.
35332 (inline_set_foreground): Same.
35334 2007-06-15 Chris Toshok <toshok@ximian.com>
35336 * xaml.cpp: little leak fixes here and there.
35338 2007-06-15 Chris Toshok <toshok@ximian.com>
35340 * demo.cpp (delete_event): destroy the surface and shutdown the
35341 runtime before we quit, just to make finding leaks a little
35344 * ffvideo.cpp (MediaElementFfmpeg): re-order the
35345 close/g_io_channel_close calls to quiet down glib.
35347 * media.cpp: don't close the loader in DownloaderEvents. do it in
35348 the dtor for now, to keep from getting that stupid gdk warning.
35349 this is wrong, but at least it's quiet.
35351 * text.cpp: delete the color we initialize the solid color brush
35354 * animation.cpp, animation.h: remove the cached key_frames
35357 * runtime.h, runtime.cpp: clean up our cleanup a lot.
35359 in the copy constructor we actually need to make a copy (or
35360 ref in cases where we can) everything we store as a pointer in
35361 our union. This is to facilitate us destroying it in the
35364 in surface_destroy just delete the surface. move all the destroy
35365 code to the destructor. Also, in the destructor unhook from the
35366 gtk events, since we get an unrealize event as part of widget
35367 destruction, apparently.
35369 Add DependencyObject::Shutdown which destroys our properties
35370 hashtable. Create all the hashtables with _new_full so we can
35371 give free functions for keys/values. actually make use of them,
35372 and clean up the relevant destructors.
35374 Add a destructor for Type, and have the Type ctor take its
35375 arguments. free the name in the dtor. Same deal with _new_full
35376 for hashtable creation, and also add Type::Shutdown.
35378 (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
35379 and DependencyObject::Shutdown to free all our stuff.
35381 * clock.h, clock.cpp: add TimeManager::Shutdown.
35383 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
35385 * demo.cpp (gettime): Improved fps reporting.
35387 2007-06-15 Miguel de Icaza <miguel@novell.com>
35389 * media.cpp (SetSource): Make it so we use the data from a
35390 downloader that might have already finished.
35392 2007-06-15 Chris Toshok <toshok@ximian.com>
35394 * runtime.cpp: simplify refcounting a little more. we now have 3
35397 1. Value() holds a ref to its contained dependency object.
35398 This means we don't have to do anything special for
35399 anything stored in a DP.
35401 2. Collections hold a ref to their constituents.
35403 3. If you *must* cache an DO pointer in an instance field, you
35404 must ref/unref it properly. But really, you shouldn't need
35405 to cache it, and I'll likely go through and remove all the
35408 * media.cpp (media_element_set_markers): remove the ref/unref
35411 * animation.cpp: comment out some spew, and follow a safer pattern
35412 in OnPropertyChanged.
35414 * brush.cpp (OnPropertyChanged): safer pattern.
35416 * geometry.cpp (OnPropertyChanged): safer pattern.
35418 * runtime.h: make all these dtors virtual.
35420 * clock.cpp, clock.h: remove the cached child_timelines instance
35421 field to clean up some of the ref counting problems.
35423 2007-06-15 Miguel de Icaza <miguel@novell.com>
35425 * media.cpp (SetSource): Make it so we use the data from a
35426 downloader that might have already finished.
35428 We now accumulated data as we go.
35430 * downloader.cpp (downloader_get_response_text): Return
35433 2007-06-15 Jackson Harper <jackson@ximian.com>
35437 * xaml.cpp: Callback into managed code to create custom element
35440 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
35442 * media.cpp (media_base_new): Removed, not instantiable.
35443 (Image::getbounds): Need to set the absolute_xform matrix :)
35445 2007-06-15 Miguel de Icaza <miguel@novell.com>
35447 * media.cpp (Image::getxformorigin): Implement getxformorigin, so
35448 rotations are correct.
35450 (Image::getbounds): Implement getbounds correctly, the coordinates
35451 should be in device coordinates with the transform applied.
35453 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
35455 * demo.cpp (main): Add some Inlines to the TextBlock to test
35456 bounding box calculations.
35458 * text.cpp (OnPropertyChanged): If the property that changed is
35459 the Actual width/height, then don't invalidate anything - simply
35460 return (these are just cache values that only we can set
35462 (Draw): Keep track of the pixel width/height of the entire
35463 rendered TextBlock+Inlines.
35464 (getbounds): Use the cached width/height of the TextBlock+Inlines
35465 and draw a rectangle instead to improve performance.
35467 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
35469 * media.cpp|h: Add media_base_new.
35471 2007-06-15 Miguel de Icaza <miguel@novell.com>
35473 * Add destructors to classes that are caching DO collections and
35474 keeping refs to those, thanks to Chris Toshok for the pattern to
35477 2007-06-15 Chris Toshok <toshok@ximian.com>
35479 * media.cpp (Image::render): use the uielement's opacity when
35480 painting. Fixes the DrPopperSilverlight Bubble.xaml file.
35482 2007-06-15 Miguel de Icaza <miguel@novell.com>
35484 * runtime.cpp (UIElement): The problem was that:
35486 The ~UIElement destructor was setting the collection
35487 properties to NULL in an attempt to unref stuff (these
35488 are now automatically unrefed).
35490 This caused the hash table destructor to unref the values
35491 that were held in the collection.
35493 At a later point, since "triggers" was cached and
35494 OnPropertyNotify was called, we attempted to unref the
35495 value, but that cached value pointed to an object that had
35496 already been released.
35498 * Everywhere: remove duplicated code that got copy/pasted
35499 everywhere for tracking collections and caching values.
35501 This should help fixing the crashing problem, but I still need to
35502 review the rules for reference counting and keeping a cache of
35503 variables in instance fields.
35505 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
35507 * text.cpp (Draw): Now renders inlines.
35509 2007-06-15 Chris Toshok <toshok@ximian.com>
35511 * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
35514 * demo.cpp: notify the downloader of the image file size so that
35515 it'll generate a COMPLETED event for the Image.
35517 * media.h, media.cpp: make image downloading non-progressive (we
35518 only create the surface when the downloader notifies the download
35519 is complete), but gain something in return: images with alpha
35522 * downloader.h, downloader.cpp: add closure to event_notify, and
35523 expose the Event kind.
35525 2007-06-15 Miguel de Icaza <miguel@novell.com>
35527 * runtime.cpp (UIElement, Canvas): send events to the objects as
35528 well. My original test on orcas was buggy.
35530 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
35532 * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
35534 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
35536 * xaml.cpp (dependency_object_add_child): If the col_v collection
35537 value is NULL, create a new collection and add it to the
35540 * runtime.cpp: Added a generic collection_new() function which
35541 takes a Value::Kind to specificy which collection-type it should
35544 2007-06-15 Miguel de Icaza <miguel@novell.com>
35546 * downloader.cpp: Implement DownloadProgress property and event
35549 * runtime.h (DependencyObject::Is): new method, similar to C# is.
35551 * runtime.cpp (surface_repaint): We clear the background here
35552 again, to allow canvases to have transparent brushes.
35554 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
35556 * runtime.cpp: Panel.Background is NULL by default, which means it's
35557 transparent. This fixes Canvas inside Canvas.
35559 2007-06-15 Jackson Harper <jackson@ximian.com>
35561 * runtime.cpp|h: Implement some Inlines stuff that the parser will
35563 * xaml.cpp: Add some of the pieces for creating textblock inlines.
35564 - Added some TODO areas for creating late bound collections (maybe
35565 this should just be illegal??).
35567 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
35569 * text.cpp: Have inlines cache their PangoFontDescription and
35570 added logic to render textblock inlines.
35572 2007-06-15 Alan McGovern <amcgovern@novell.com>
35574 * runtime.cpp|h: Added DependencyProperty.NameProperty
35576 2007-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
35578 * transform.cpp|h: Add Transform C constructor.
35579 * runtime.cpp: Better warning message.
35581 2007-06-15 Miguel de Icaza <miguel@novell.com>
35583 * runtime.cpp (surface_attach): Only hook up the events when we
35584 get a toplevel attached.
35586 * downloader.h: Drop the C++ API with a C proxy API, switch to a
35587 pure C API as we need this from the managed side anyways.
35589 * downloader.h: Move downloader defs into .h file
35591 Add a notification system for reporting the size of a stream, so
35592 we can do progress indication.
35594 * downloader.cpp: Move downloader to its own file.
35596 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
35598 * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
35599 (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
35600 * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
35601 will be removed in 1.0.
35602 * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
35603 * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
35606 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
35608 * text.cpp (text_init): Set more default values.
35610 * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
35611 we iterate thru them) and set the resulting list to NULL (in case
35612 we don't hold the last ref) before unreffing the children object
35613 (in case we do own the last ref).
35614 (EventTrigger::OnPropertyChanged): Same.
35615 (UIElement::OnPropertyChanged): Same.
35617 * transform.cpp (OnPropertyChanged): Same.
35619 * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
35620 (PathGeometry::OnPropertyChanged): Same
35621 (PathFigure::OnPropertyChanged): Same.
35623 * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
35626 (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
35627 (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
35628 (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
35630 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
35632 * brush.cpp: Complete ImageBrush.Transform
35633 * shape.cpp: Please at least one side of the lines.
35635 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
35637 * text.cpp (text_init): No longer should ref the foreground brush
35640 * xaml.cpp: Added support for Runs/LineBreaks
35642 * text.cpp: Implemented Run/LineBreak classes.
35643 (inline_new): Removed (can't instantiate this class).
35645 2007-06-15 Miguel de Icaza <miguel@novell.com>
35647 * runtime.cpp (~DependencyObject, free_value): unref all the
35648 values that are stored in the object on destruction
35650 * runtime.cpp: Add support for enter/leave events.
35652 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
35654 * text.cpp (getbounds): Set the actual width/height values to keep
35657 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
35659 * text.cpp (getbounds): Revert prior change.
35660 (getxformorigin): Same.
35662 * shape.cpp (getbounds): Revert prior change.
35664 * ffvideo.cpp (getbounds): Revert prior change.
35666 * runtime.cpp (update_xform): Revert my last change.
35667 (item_update_bounds): Same.
35669 2007-06-14 Jackson Harper <jackson@ximian.com>
35671 * xaml.cpp: Set content properties when adding child elements. We
35672 now no longer need to special case any elements except panel.
35674 2007-06-14 Jackson Harper <jackson@ximian.com>
35676 * xaml.cpp: I must have been very tired when I wrote that.
35678 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35680 * media.h: Expose Image's Height and Width (required for ImageBrush)
35681 * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
35682 (yet) force an update of the drawing once the image is available.
35684 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
35686 * demo.cpp: Updated s/textblock/text_block/g
35688 * xaml.cpp: Don't register TextBlock twice.
35690 * ffvideo.cpp (getbounds): Can now depend on surface being set.
35692 * text.cpp: s/textblock/text_block/g
35693 (getbounds): Can now depend on surface being set.
35694 (getxformorigin): Same.
35696 * shape.cpp (getbounds): Can now depend on surface being set.
35698 * runtime.cpp (item_update_bounds): Don't update bounds if the
35699 surface hasn't been set yet.
35700 (update_xform): Same.
35702 2007-06-14 Jackson Harper <jackson@ximian.com>
35704 * xaml.cpp: Add keyspline parsing.
35706 2007-06-14 Jackson Harper <jackson@ximian.com>
35708 * value.h: This guy doesn't exist anymore, he is a
35709 DependencyObject now.
35711 2007-06-14 Jackson Harper <jackson@ximian.com>
35714 * runtime.cpp|h: We also need to update the DependencyObject when
35715 resolving PropertyPaths.
35717 2007-06-14 Jackson Harper <jackson@ximian.com>
35719 * runtime.cpp|h: New function that follows PropertyPath's to
35720 DependencyProperties.
35721 * animation.cpp: Use new function to resolve animation target
35724 2007-06-14 Jackson Harper <jackson@ximian.com>
35726 * runtime.cpp (GetDependencyProperty): If there is no table for a
35727 property, we still need to lookup the property in the parent
35728 chain (assumming inherit is true).
35729 - Fix some typos with types_by_name
35731 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35733 * demo.cpp (main): Rotate our demo text inside a filled rectangle
35734 around the center of the text.
35736 * text.cpp (TextBlock.ctor): Initialise a cached
35737 PangoFontDescription that we will update when properties change.
35738 (TextBlock.dtor): Free our font/layout.
35739 (getbounds): Implemented correctly.
35740 (getxformorigin): Implemented.
35741 (Draw): Simplified since we don't need to create our layout/font
35742 anymore (just use the cached ones).
35743 (OnPropertyChanged): Implemented.
35745 2007-06-14 Miguel de Icaza <miguel@novell.com>
35747 * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
35748 RadialGradientBrush): Notify owners when changes happen in the
35751 This makes the demo test-color-animation.xaml work without fps.
35753 * runtime.cpp: Make Canvas use the Background property to render
35756 2007-06-14 Chris Toshok <toshok@ximian.com>
35758 * demo.cpp (main): create a namescope to attach to the canvas, and
35759 also make sure to add the storyboard to the tree someplace so that
35760 it can find the names of things.
35762 * xaml.cpp: create a namescope to attach to the top_element.
35764 * runtime.cpp (FindName): rework this to walk up the tree. Drop
35765 the global namescope.
35767 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35769 * brush.cpp|h: Add ImageBrush functions, which delegates most of its
35770 work to Image (downloader).
35771 * media.cpp|h: Expose the cairo_surface_t that contains the image.
35773 2007-06-14 Chris Toshok <toshok@ximian.com>
35775 * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
35776 size from 1024 to 8192 (and make it an instance instead of stack
35777 variable). Also, add a return statement that will cause the idle
35778 handler to no longer be called when we get a write of 0 length.
35779 This might be wrong in the long term.
35781 * media.cpp, media.h: add cleanup methods for the Image class, and
35782 add a dtor as well.
35784 2007-06-14 Chris Toshok <toshok@ximian.com>
35786 * media.cpp (LoaderSizePrepared): fill in the initial state of the
35787 image to gray with black border.
35788 (LoaderAreaUpdated): invalidate the item.
35790 * media.h: fix the progressive image loading.
35792 2007-06-14 Chris Toshok <toshok@ximian.com>
35794 * demo.cpp: use the MediaBase::SourceProperty to set the image's
35797 * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
35798 for changes in MediaBase::SourceProperty and kick off the download
35799 and stop the currently running one.
35801 2007-06-14 Chris Toshok <toshok@ximian.com>
35803 * demo.cpp: track downloader api change.
35805 * media.cpp: track downloader api change.
35807 * runtime.h, runtime.cpp: the downloader's write function needs an
35808 offset as well as a length to work with mozilla's streaming api.
35810 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35812 * demo.cpp (main): Draw some text
35814 * text.cpp (text_init): Set a default solid black brush for
35815 foreground properties on Inline/TextBlock objects.
35816 (Draw): Setup the Brush stuff before drawing.
35818 2007-06-14 Jackson Harper <jackson@ximian.com>
35820 * xaml.cpp: Add support for loading all implemented (and semi
35821 implemented) dependency object types.
35822 * text.cpp|h: C style constructors.
35824 2007-06-14 Chris Toshok <toshok@ximian.com>
35826 * animation.cpp (KeySpline): default should be 1,1 for
35829 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35831 * xaml.cpp: Add support for Matrix (non-DO) type.
35833 2007-06-14 Chris Toshok <toshok@ximian.com>
35835 * runtime.cpp (downloader_write): add C-style downloader_write
35836 method so we can call into it from the binding.
35838 2007-06-14 Chris Toshok <toshok@ximian.com>
35840 * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
35841 type.cpp.in, value.h.in: make KeySpline subclass from
35842 DependencyObject like it should, and fix resulting fallout.
35844 2007-06-14 Miguel de Icaza <miguel@novell.com>
35846 * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
35847 catch cases of Top/Left being set on a child, this makes changes
35848 to the object after it has been created (adding/removing the
35851 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35853 * brush.cpp|h: Much closer results for RadialGradients (but I still
35854 have a test case that fails). Also added Transform support for
35857 2007-06-14 Jackson Harper <jackson@ximian.com>
35859 * animation.h: C style constructors.
35860 * clock.cpp|h: C style constructors.
35861 * runtime.cpp|h: Follow proper naming convention for
35862 TimelineMarker C style constructors.
35864 2007-06-14 Chris Toshok <toshok@ximian.com>
35866 * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
35867 here, and made Downloader pluggable with a set of functions.
35869 * demo.cpp: use the pluggable nature of Downloader to put
35870 UnmanagedDownloader here (and call it FileDownloadState).
35872 * value.cpp, value.h, type.cpp: resync.
35874 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35876 * text.cpp: Fixed Brush accessors for the NULL case.
35878 * media.cpp: Fixed accessors that could return NULL
35879 (media_init): init MediaBase and MediaElement items.
35881 2007-06-14 Jackson Harper <jackson@ximian.com>
35883 * animation.cpp: C style constructor.
35884 * media.cpp|h: Add some C style constructors.
35885 * xaml.cpp: Add parsing hooks for new components.
35887 2007-06-14 Chris Toshok <toshok@ximian.com>
35889 * demo.cpp: make one of the videos an image instead.
35891 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
35893 * xaml.cpp: Fixed the font_widths and font_stretches maps to
35894 reflect the numeric enum values defined in text.h (and msdn docs).
35896 * text.h: Sync enum values to documented numeric values.
35898 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
35900 * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
35901 Make all classes that inherit from DO constructable, and add
35902 missing C-style constructors.
35904 2007-06-14 Jackson Harper <jackson@ximian.com>
35906 * runtime.cpp|h: Hookup the resource collection.
35907 * xaml.cpp: Parse resource collections.
35909 2007-06-14 Chris Toshok <toshok@ximian.com>
35911 * type.cpp, value.h, type.h: resync these.
35913 * media.h, media.cpp: add naive Image class.
35915 * runtime.h, runtime.cpp: add some Downloader methods, and
35916 subclass Downloader with a *very* hackish UnmanagedDownloader
35917 class that just loads from files. Also add a "write_func"
35918 callback that the downloader can call when it has new data to hand
35921 2007-06-14 Chris Toshok <toshok@ximian.com>
35923 * animation.cpp: import an arc length calculator I found on the
35924 net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
35925 and use that for KeySpline::GetSplineProgress. The results don't
35926 match MS's exactly, though.
35928 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
35930 * geometry.cpp, geometry.h: Add collection constructors.
35931 * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
35932 * runtime.cpp|runtime.h: Implement collection add/remove methods.
35933 Add Downloader DPs.
35934 * media.cpp: Add MediaAttribute DP.
35936 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35938 * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
35939 (as it cannot be globally applied). Added DP, and related functions,
35942 2007-06-14 Miguel de Icaza <miguel@novell.com>
35944 * Improve the destruction scenario to release the resources that
35945 we have acquired, we are now up to the point of stopping clocks
35946 properly, but more work is going to be needed in the long term to
35947 properly track refs and objects.
35949 Ensured that all virtual GetObjectType are flagged with virtual.
35951 * Makefile.am: Put runtime.cpp at the top, to improve
35952 compile/test cycle.
35954 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
35956 * brush.cpp|h: One step closer for RadialGradientBrush
35957 * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now
35958 render (shape-wise) correctly.
35959 * shape.cpp: Draw before setting the brush. This allows the brush
35960 setting code to ask for the extents to stroke/fill.
35962 2007-06-13 Chris Toshok <toshok@ximian.com>
35964 * animation.cpp (KeySpline::GetSplineProgress): reimplement this
35965 to return a percentage of the arc length of the bezier that is
35966 traversed when t = linearProgress, taking the algorithm from
35967 http://steve.hollasch.net/cgindex/curves/cbezarclen.html
35969 2007-06-13 Chris Toshok <toshok@ximian.com>
35971 * brush.h, geometry.h, animation.h, clock.h: add GetElementType
35972 collection overloads.
35974 * type.cpp: resync to track UIElement : Visual relationship.
35976 * runtime.h: add Collection::GetElementType, and add overloads
35977 (some commented out) for the collections listed. Also, fix
35978 UIElement's superclass to be Visual.
35980 * runtime.cpp (Add): make sure we're only adding subclasses of our
35983 2007-06-13 Chris Toshok <toshok@ximian.com>
35985 * clock.cpp (AddChild): just pass the child, unwrapped.
35987 * runtime.h: remove the Value* overloads for Collection::Add and
35988 Collection::Remove.
35990 * xaml.cpp (dependency_object_add_child): just pass the dependency
35993 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
35995 * text.cpp: Implemented a ton of stuff...
35996 (text_init): Added.
35998 * runtime.cpp (runtime_init): Call text_init().
36000 2007-06-13 Miguel de Icaza <miguel@novell.com>
36002 * runtime.h (Collection): Since it seems that everything we have
36003 so far are collections of dependency objects, the code is now
36004 simplified and will also take refs and remove refs on destruction.
36006 The only reason to implement the Add/Remove methods is if you must
36007 do something as a hook during add/remove
36009 * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
36012 (OnPropertyChanged): Allow the value to be NULL, cope with that,
36013 we use this to clear all of our objects.
36015 2007-06-13 Chris Toshok <toshok@ximian.com>
36017 * xaml.cpp (xaml_create_from_str): make the from_str a little
36018 closer to from_file. fixes hooking up names when loading from
36021 2007-06-13 Chris Toshok <toshok@ximian.com>
36023 * runtime.cpp (runtime_init): start the time manager here.
36025 * demo.cpp (main): instead of here.
36027 2007-06-13 Jackson Harper <jackson@ximian.com>
36029 * xaml.cpp: Gracefull handling of error conditions. Being
36030 intentionally non strict about some things while we are
36031 developing (like unknown elements, and attributes, and missing
36034 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36036 * brush.cpp: Better, but still imperfect, RadialGradientBrush
36038 2007-06-13 Jackson Harper <jackson@ximian.com>
36040 * runtime.h: Add some of the error event handler args, so i can
36041 use these in the parser.
36043 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36045 * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
36046 (soptimsation, woot).
36048 * text.cpp: Implemented c wrappers for Inline
36050 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36052 * brush.cpp: Implemented LinearGradientBrush::SetupBrush
36053 * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
36054 support for LinearGradientBrush.
36056 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36058 * text.cpp: Stubbed out TextBlock and Glyphs
36060 2007-06-13 Jackson Harper <jackson@ximian.com>
36062 * xaml.cpp: GradientBrush is a Brush.
36064 2007-06-13 Miguel de Icaza <miguel@novell.com>
36066 * runtime.cpp (dependency_object_find_name): Add new wrapper
36068 2007-06-13 Chris Toshok <toshok@ximian.com>
36070 * animation.cpp, animation.h: add public storyboard methods for
36071 begin/pause/resume/seek/stop. also start in on the spline
36072 keyframe/KeySpline stuff.
36074 * type.cpp: resync.
36076 * value.cpp: resync.
36080 * value.h.in: add keyspline stuff.
36082 * type.cpp.in: add keyspline stuff.
36084 2007-06-13 Chris Toshok <toshok@ximian.com>
36086 * demo.cpp: a few changes - none of the animations run forever
36087 now. also, add some gtk events (button press/release/motion). we
36088 pause animations on press, resume them on release.
36090 * clock.cpp: keep track of the offset caused by pausing/resuming
36091 the clock from our parent's time.
36093 * animation.cpp: split out all the logic for finding the current
36094 (and previous) keyframes into
36095 KeyFrameCollection::GetKeyFrameForTime. Also, make the key frame
36096 collection maintain a separate sorted list of keyframes.
36098 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36100 * media.cpp (media_base_get_source): Implemented; use char*
36101 instead of Uri - we'll make the binding convert between the types.
36102 (media_base_set_source): Same.
36104 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36106 * runtime.cpp: Xlib and we are both defining Visual,
36107 so implement a workaround.
36109 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36111 * brush.cpp|h: Added code for LinearGradientBrush and partial setup
36112 for all gradient-related brushes (needs testing). Add all color
36113 definitions supported by XAML.
36114 * mkcolor.cs: Tool to generate colors from System.Drawing (as they
36117 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36119 * runtime.h: Add Visual.
36120 * value.cpp, value.h, type.cpp: Updated.
36122 2007-06-13 Jeffrey Stedfast <fejj@gnome.org>
36124 * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
36126 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36128 * media.h: Added MediaAttribute.
36129 * runtime.h: Added Downloader.
36130 * value.cpp, value.h, type.cpp: Updated.
36131 * typegen.cs: Copy Kind.cs to the correct directory.
36133 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36135 * brush.cpp, brush.h, geometry.cpp: Fix property registration
36138 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36140 * brush.cpp|h: Fix Brush::RelativeTransformProperty and
36141 Brush::RelativeTransformProperty types.
36143 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36145 * brush.cpp|h: Complete DependencyProperties for GradientBrush and
36146 add GradientStopCollection.
36147 * runtime.cpp|h: Remove code for GradientStopCollection.
36148 * xaml.cpp: Register new brush classes.
36150 2007-06-13 Miguel de Icaza <miguel@novell.com>
36152 * runtime.cpp: Various new events are now sent.
36154 2007-06-13 Jackson Harper <jackson@ximian.com>
36156 * xaml.cpp: When using the xaml_create_from_str we automatically
36157 add the default and x: namespaces.
36159 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
36161 * ffvideo.cpp: Fixed to subclass the new MediaElement class.
36163 * video.cpp: Removed.
36165 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36167 * brush.cpp|h: Added DependencyProperty for GradientBrush and
36168 GradiantStop. Added new brush-related enums. Add [g|s]etter functions
36169 for RadialGradient and BrushGradiantStop.
36171 2007-06-12 Jackson Harper <jackson@ximian.com>
36173 * xaml.cpp: Repsect namespaces.
36174 - Clean up code a little
36176 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36178 * brush.h: New. Brush related stuff.
36179 * brush.cpp: DependencyProperty for RadialGradientBrush
36180 * runtime.h: [Re]move brush stuff.
36181 * shape.h: Add include for brush.h
36182 * type.cpp, value.h, value.h: Add RadialGradientBrush type.
36183 * Makefile.am: Add brush.h to the build.
36185 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
36187 * media.cpp|h: Added to the build
36189 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36191 * transform.cpp|h: Complete MatrixTransform.
36192 * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
36195 2007-06-12 Miguel de Icaza <miguel@novell.com>
36197 * runtime.h (UIElement::inside_object): new routine that should
36198 return true if the given absolute x, y is inside the given object
36201 (UIElement::handle_motion): new routine that is called when a
36202 motion event happens, it should determine if it can handle the
36203 given event at x, y.
36205 (Surface): new callbacks, these are callbacks that will pass the
36206 notification of the event to managed code.
36208 * runtime.cpp (FrameworkElement): provide a default implementation
36209 for inside object that works for "squares" (things with widths and
36212 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
36214 * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
36215 simply disable audio for that video. Temporary hack.
36217 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36219 * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
36221 2007-06-12 Jackson Harper <jackson@ximian.com>
36223 * xaml.cpp: Implement enums. This implementation is very naive,
36224 but works with the current Silverlight object model. Basically,
36225 we just index property names to enum maps. So a property name
36226 maps to a single enum type regardless of the type the enum is
36227 declared in. This works fine with the current silverlight object
36228 model, but in the future might need to be changed, if we get
36229 conflicting property names.
36231 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
36233 * ffvideo.cpp: Fixed sound playback to not get that nasty
36234 reverb-like effect. Also switched to using SDL for audio.
36236 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36238 * transform.cpp|h: Implement SkewTransform.
36239 * type.cpp: Register new type SkewTransform.
36240 * value.cpp|h: Add SkewTransform.
36241 * xaml.cpp: Register DO for SkewTransform.
36243 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36245 * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
36248 2007-06-12 Jackson Harper <jackson@ximian.com>
36250 * xaml.cpp: Don't try to add properties to the panel.
36252 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36254 * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
36255 * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
36256 * Makefile.am: Add rsvg.cpp|h to the build.
36258 2007-06-12 Jackson Harper <jackson@ximian.com>
36260 * xaml.cpp: Add parser for KeyTime structures.
36262 2007-06-12 Chris Toshok <toshok@ximian.com>
36265 (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36266 (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36267 (animation_init): make sure to initialize
36268 ColorKeyFrame::ValueProperty.
36270 * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
36272 2007-06-12 Jackson Harper <jackson@ximian.com>
36274 * animation.cpp|h: C style constructor for KeyFrameCollection.
36275 * xaml.cpp: Implement the KeyFrame types
36276 - Make the base types ghosts, despite what the docs say, they
36279 2007-06-12 Miguel de Icaza <miguel@novell.com>
36281 * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
36282 when we have reached someone that handles that property in the way
36285 2007-06-12 Jackson Harper <jackson@ximian.com>
36287 * xaml.cpp: Register the TriggerCollection so that
36288 TriggerCollections can be created using the explicit syntax.
36290 2007-06-12 Jackson Harper <jackson@ximian.com>
36292 * xaml.cpp: No longer need to special case EventTriggers. Remove
36293 some dead code (yippie!)
36294 * runtime.cpp: Unregister the target when removing from the
36297 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36299 * runtime.h: Implement Inlines.
36300 * value.cpp, value.h, type.cpp: Updated.
36302 2007-06-12 Jackson Harper <jackson@ximian.com>
36304 * runtime.cpp|h: Hook up the UIElement::Triggers and
36305 EventTrigger::Actions/RoutedEvent properly.
36306 * xaml.cpp: Remove some of the special casing for event triggers
36307 now that they are proper DependencyProperties.
36309 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36311 * typegen.cs: Now checks if classes that inherits DependencyObject
36312 implement GetObjectType.
36313 * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
36314 missing GetObjectTypes and fix a few that were returning the wrong
36317 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36320 - (DependencyObject::SetValue): Allow assigning an object of a
36321 more derived type than the defined property type. Change the
36322 attached_list code to handle NULL dependency_objects.
36323 - Delete types_init, it's generated now.
36324 - Delete Value:As[DependencyObjects], its generated now.
36325 * runtime.h: Added definitions for a few missing collection classes.
36326 * types.cpp[.in], value.cpp[.in], value.h.in: Added.
36328 * Makefile.am: Add types.cpp and value.cpp
36329 * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp,
36330 value.h and Kind.cs from the headers.
36332 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36334 * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
36336 2007-06-12 Chris Toshok <toshok@ximian.com>
36338 * clock.h, clock.cpp, runtime.cpp, value.h: use a
36339 TimelineCollection to store child collections in TimelineGroup.
36341 2007-06-12 Chris Toshok <toshok@ximian.com>
36343 * animation.h, animation.cpp (animation_init): remove the
36344 clock.cpp property registration.
36345 (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
36346 attempt, calculate our timespan from our key frames.
36347 (Animation::GetNaturalDurationCore): return a 1 second duration,
36349 (UpdatePropertyValue): plug leak.
36351 * runtime.cpp (runtime_init): call clock_init.
36353 * clock.h, clock.cpp: largish pass at implementing support for
36354 Duration::Automatic in ClockGroups (where they query their child
36355 timelines to see how long they should make themselves). Also, add
36358 * xaml.cpp (timespan_from_str): correct math.
36360 2007-06-12 Jackson Harper <jackson@ximian.com>
36362 * xaml.cpp: Add a couple more of the animation elements.
36364 2007-06-12 Jackson Harper <jackson@ximian.com>
36366 * runtime.cpp|h: There is no public Triggers property.
36368 2007-06-12 Miguel de Icaza <miguel@novell.com>
36370 * runtime.cpp (DependencyObject::RegisterFull): Allow for
36371 properties to be flagged as attached, and only propagate the child
36372 notification to those those that care about it.
36374 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36376 * Implement a mechanism to keep track of parents and notify
36377 parents of changes in attached properties.
36379 2007-06-11 Jackson Harper <jackson@ximian.com>
36381 * xaml.cpp: Add content properties, and handle collections that
36382 are content properties, by implicitly adding items to the
36385 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
36387 * runtime.cpp: Remove matrix initialization (to avoid double-inits in
36389 * transform.cpp: Add matrix initialization in TransformGroup::
36390 GetTransform. Makes the API safer :)
36392 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
36394 * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
36396 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
36398 * geometry.cpp|h: Add drawing of [Poly]LinesSegment and
36399 [Poly]BezierSegment. More than half of Sam Ruby's samples can work
36402 2007-06-11 Jeffrey Stedfast <fejj@novell.com>
36404 * ffvideo.cpp: Attempt to get video to be in sync with audio by
36405 using the audio pts as the target_pts.
36407 2007-06-11 Jackson Harper <jackson@ximian.com>
36409 * runtime.cpp: Register the collection types as derived from
36412 2007-06-11 Chris Toshok <toshok@ximian.com>
36414 * xaml.cpp (timespan_from_str): fix reading off the end of digits
36417 2007-06-11 Jackson Harper <jackson@ximian.com>
36419 * xaml.cpp: Implement some more collection loading. A lot of
36420 duplicate code here, so I should probably refactor things a bit,
36421 but will wait until I've seen how more collections are laid out.
36423 2007-06-11 Chris Toshok <toshok@ximian.com>
36425 * animation.h, animation.cpp: use KeyFrameCollection's for the
36426 *AnimationUsingKeyFrames key frame stuff, instead of GLists.
36428 * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
36430 2007-06-11 Jackson Harper <jackson@ximian.com>
36432 * xaml.cpp: Make the parents of collections the Collection ghost
36433 element. This is a first step in cleaning up collection creation
36436 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
36438 * transform.cpp: remove dead code.
36439 * xaml.cpp: Partial collection support for geometry.
36441 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
36443 * transform.cpp: Multiply each matrix in a TransformGroup (fix the
36444 open-clipart sample, at least the correct parts of the sample).
36445 * runtime.cpp: Always initialize the matrix in item_get_render_affine
36446 otherwise we'll end up with bad random results.
36448 2007-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
36450 * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue
36451 overloads that takes strings as well as DP, GetDependencyProperty where
36452 it's possible to specify whether the parent type is searched for the
36453 property or not, and a HasProperty method
36455 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36457 * geometry.cpp|h: Fix function names wrt type.
36458 * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
36459 and call update_xform. This fix the "atom" sample :)
36460 * transform.cpp: Fix Rotate and Scale around a center point.
36462 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36464 * geometry.cpp: Add more precision to types.
36465 * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
36467 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36469 * brush.cpp: Implement Opacity for SolidColorBrush.
36470 * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can
36471 access it's properties (e.g. Opacity in this case). Add uielement_
36472 [g|s]et_opacity functions.
36473 * shape.cpp: Supply the UIElement when setting up brushes.
36475 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36477 * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than
36478 half the width|height.
36480 2007-06-10 Miguel de Icaza <miguel@novell.com>
36482 * shape.cpp (OnPropertyChanged): Implement this property for most
36483 shapes: if the property is set, we need to invalidate and
36486 * runtime.h (FullInvalidate): A method to perform a queue to
36487 redraw the underlying region, update the bounds and queue an
36488 update for the new region.
36490 * runtime.h (Base): make destructor virtual so that base_unref can
36491 call delete (Base *) p. Exposed by the managed code when the
36492 first base_unref ran for the first time :-)
36496 * runtime.cpp (surface_attach): invalidate the areas before and
36497 after, compute the bounds using item_update_bounds, not the
36498 getbounds method directly.
36500 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36502 * xaml.cpp: Add PathFigure[Collection]/Segments support.
36504 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
36506 * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
36507 green unlike other basic colors (red/blue at 0xFF).
36508 * xaml.cpp: Don't assert on an empty collection.
36510 2007-06-10 Miguel de Icaza <miguel@novell.com>
36512 * runtime.cpp, runtime.h (BasicArray): New base struct for
36513 PointArray and double array, puts the count field at the beginning
36514 and avoids an extra block to be allocated (count and values are
36515 now on a single contiguous block).
36517 Introduce a refcount for the arrays, so that we can release those
36518 properly. Due to the nature of how we copied values before we
36519 had to leak the values, when the leak was plugged, we crashed.
36521 The refcount is there just because it was easy, we could clone if
36522 we wanted, but also I would like to keep the refcount there to
36523 ensure that the array of doubles is aligned on an 8 byte
36526 (double_array_new, point_array_new): New methods to create the
36529 (Value): Now free the arrays.
36532 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
36534 * geometry.cpp|h: Add/complete PathFigureCollection and
36535 PathSegmentCollection. Doesn't parse from xaml.
36536 * runtime.cpp, value.h: Add support for new classes.
36538 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
36540 * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
36541 But color rending is not yet correct in demo files.
36542 * runtime.cpp, value.h: Add support for GeometryCollection
36543 * xaml.cpp: Add support for GeometryGroup
36545 2007-06-09 Chris Toshok <toshok@ximian.com>
36547 * animation.h, animation.cpp, value.h, runtime.cpp: add
36548 ColorKeyFrame and it's linear/discrete subclasses, as well as
36549 ColorAnimationUsingKeyFrames.
36551 2007-06-09 Chris Toshok <toshok@ximian.com>
36553 * animation.h, animation.cpp, value.h, runtime.cpp: add the
36554 Discrete keyframes for point and double.
36556 2007-06-09 Chris Toshok <toshok@ximian.com>
36558 * genkindcs.sh: new file, a script to generate
36559 olive/class/agclr/Mono/Kind.cs.
36561 * value.h: add marker comments so that genkindcs.sh works. Also,
36562 remove the explicit value assignments to enum elements <
36563 DEPENDENCY_OBJECT. there's no need for it.
36565 2007-06-09 Chris Toshok <toshok@ximian.com>
36567 * demo.cpp (main): add in another animation, this one using
36568 keyframes, that moves a square around in a square, while animating
36569 its background color the same way as the other rectangles.
36571 * value.h, runtime.cpp: add in the keyframe types.
36573 * runtime.cpp (DependencyObject::DependenceyObject): fix a
36574 valgrind error - we shouldn't be "free"ing Values, since they're
36575 "new"ed. Add free_value and use that for the hash table value
36576 dtor, and delete them correctly.
36578 * animation.h, animation.cpp: add a lot of the keyframe animation
36579 stuff. DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
36580 the only tested configuration, though.
36582 * clock.cpp (everywhere): guint64->TimeSpan fixing.
36583 (TimeUpdated): turns out that not only does the progress go from
36584 1.0 to 0.0 when reversed, but current_time actually goes backward
36585 as well. this has the nice effect of actually simplifying this
36586 method substantially, since we can always compute progress as
36589 * clock.h: typedef TimeSpan to gint64 (switching from guint64
36590 everywhere), and update the api to use this.
36592 2007-06-09 Miguel de Icaza <miguel@novell.com>
36594 * runtime.h (value_color_from_argb): Temporary hack until we
36595 figure out how to marshal Colors properly, we are using the uint32
36596 constructor, we should figure out if this is what we want, or if
36597 we should go down the route of using doubles (C++ stores thinks as
36598 Doubles our managed API as bytes).
36600 2007-06-10 Jackson Harper <jackson@ximian.com>
36602 * xaml.cpp: Handle the TransformGroup default collection.
36603 - Add Value's to the collection
36605 2007-06-09 Jackson Harper <jackson@ximian.com>
36607 * transform.cpp|h: C style constructor for TransformGroup
36608 * xaml.cpp: Implement loading transform groups and transform
36611 2007-06-09 Jackson Harper <jackson@ximian.com>
36615 * transform.cpp|h: Impplement transform groups and transform
36618 2007-06-09 Jackson Harper <jackson@ximian.com>
36621 * runtime.cpp|h: Use the new collection classes for triggers and
36622 actions. These are unsettable, so don't register them as
36623 DependencyProperties.
36625 2007-06-08 Everaldo Canuto <ecanuto@novell.com>
36627 * runtime.cpp: In surface_destroy check for toplevel before unref
36630 2007-06-08 Chris Toshok <toshok@ximian.com>
36632 * animation.h: remove the huge whitespace gap after KeyTime, and
36633 remove the ifdef'ed out Nullable<T> template.
36635 * animation.cpp: remove the unused point_animation C api, and use
36636 the overloaded + operator on Color and Point when initializing
36637 "end" in GetCurrentValue for those animations. They're looking
36638 more and more similar.
36640 2007-06-08 Chris Toshok <toshok@ximian.com>
36642 * globally: move away from all uses of Value::u union. switch
36643 everything to using Value::As* methods, which do typechecking and
36646 * value.h: make the union private to catch anyone accessing it
36649 * runtime.cpp (IsSubclassOf): return true if type == super. Not
36650 strictly "subclass", but it makes this method a little more
36651 useful/efficient. Add As* methods for string, point arrays, and
36652 double arrays, and add nullable As* methods for the types which
36653 don't return pointers already.
36655 2007-06-09 Jackson Harper <jackson@ximian.com>
36657 * xaml.cpp: Parse time spans correctly.
36659 2007-06-08 Miguel de Icaza <miguel@novell.com>
36661 * runtime.h (UIElement): Remove user_xform_origin as a field, now
36662 we pull this from the DependencyObject as it should be.
36664 * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
36665 other properties that would trigger an invalidate/bounds
36668 (item_init): initialize the other properties that the managed code
36671 * shape.cpp, ffvideo.cpp: updated to use the
36672 RenderTransformOriginProperty in the computation of the center for
36673 the transformation.
36675 2007-06-08 Chris Toshok <toshok@ximian.com>
36677 * Makefile.am (libmoon_la_SOURCES): add value.h
36679 * runtime.h, value.h: move the Value structure to value.h, since
36680 it (and its required forward decls) have grown huge.
36682 * runtime.cpp: add all the Value::As* methods, yay for CPP.
36684 2007-06-08 Jeffrey Stedfast <fejj@novell.com>
36686 * ffvideo.cpp (queue_data): Replaced the sound code with my newest
36687 implementation, seems to play sound correctly now.
36689 2007-06-08 Chris Toshok <toshok@ximian.com>
36691 * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
36692 stuff here, to help relieve some of the pressure building up in
36693 animation.h/animation.cpp.
36695 2007-06-08 Chris Toshok <toshok@ximian.com>
36697 * animation.cpp: add some skeleton code for point keyframe
36698 animations, and reduce all the Double/Point/Color Animation
36699 GetCurrentValue() methods to much the same, using LERP and the
36700 operators defined in runtime.h.
36702 * runtime.cpp (types_init): register the new keyframe types.
36704 * runtime.h: add some new animation types to Value, and add
36705 operators for +, -, and * (scalar) for Color and Point to make the
36706 animation code a little more concise.
36708 * animation.h: add some new classes/structs for use in keyframe
36711 2007-06-08 Miguel de Icaza <miguel@novell.com>
36713 * runtime.cpp, runtime.h (Collection): Rework the collection to
36714 use abstract methods (gulp),
36716 (VisualCollection): New collection, derives from Collection, does
36717 the collection thing.
36719 (Panel.OnPropertyChanged): If our children collection is updated,
36720 take care of it here.
36722 (DependencyObject): use free instead of g_free as we are
36723 allocating strings with strdup.
36725 (Value): drop constructor that specified type, type is not part of
36728 * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
36729 track of types correctly.
36731 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36733 * brush.cpp: Fix color formats argb and rgb (too dark).
36735 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
36737 * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
36738 in the integer ranges, and change Type's type hashtable to an array
36739 of types, indexed by Value::Kind. Also add Value::COLLECTION and
36740 update Collection to use it.
36742 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36744 * shape.cpp|h: Add Path::CanFill as it depends on the Geometry
36745 object(s) being used.
36746 * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
36747 Points properties and some basic draw stuff too.
36749 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
36751 * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
36752 Remove the Value (DependencyObject, Kind) constructor,
36753 the type of the DependencyObject can be obtained directly
36754 from the DependencyObject itself now, and update all uses
36755 to the Value (DependencyObject) constructor.
36757 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
36759 * *.h, *.cpp: Remove objectType and SetObjectType from
36760 DependencyObject, make DependencyObject::GetObjectType virtual,
36761 and update all inheritors of DependencyObject to not use
36762 SetObjectType, but override GetObjectType.
36764 2007-06-08 Jackson Harper <jackson@ximian.com>
36766 * xaml.cpp: Add some type checks to ensure we are setting child
36767 properties to legal types.
36768 - explicitly set properties value types, Value now requires this.
36771 2007-06-08 Jackson Harper <jackson@ximian.com>
36773 * runtime.cpp: Initialize the surface to NULL
36774 - use UIElement as the type for flags
36776 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36778 * shape.h: Don't waste time trying to fill lines.
36779 * shape.cpp: Fix dashes support. First reset between shapes and,
36780 second, handle cairo dislike of a single dash value of 0.0.
36782 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36784 * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
36786 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36788 * shape.cpp|h: Implement Polygon::Points aad Polyline:Points
36789 properties as DependencyProperty. Adjust their Draw methods.
36790 * runtime.cpp: Implement point_array_from_str.
36792 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
36794 * shape.cpp|h: Add DP support for StrokeDashArray (double*).
36795 * runtime.cpp|h: Add double* and Point* (array) support to Value.
36796 * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value
36797 kind for brushes to avoid runtime warnings.
36799 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
36801 * runtime.cpp, runtime.h: Implemented a type system that tracks
36802 types' name and parent type.
36804 2007-06-08 Miguel de Icaza <miguel@novell.com>
36806 * runtime.cpp (Panel): Make children a property of the panel so we
36807 can access it from the managed world.
36809 (Value): Add new constructor that takes a full type, need to
36810 discuss this with the team.
36812 2007-06-08 Jackson Harper <jackson@ximian.com>
36814 * animation.cpp|h: Implement BeginStoryboard
36815 * runtime.cpp|h: Implement event triggers
36816 - Fire a loaded event when we first render an element
36817 * xaml.cpp: Implement parsing and loading storyboard and begin
36818 storyboard as well as event triggers and some of the property
36819 types that go with these guys.
36821 2007-06-08 Miguel de Icaza <miguel@novell.com>
36823 * runtime.cpp (runtime_init): Add panel_init
36825 (panel_init): Register Children property (must still create the
36826 collections, that will be a new fight).
36828 2007-06-07 Miguel de Icaza <miguel@novell.com>
36830 * xaml.cpp (start_element_handler): For the top element, track the
36831 type that we loaded, so we can return this to our caller (needed
36832 for the managed interface).
36834 (XamlParserInfo): track also the Value::Kind of the top_element.
36836 (xaml_create_from_file, xaml_create_from_str): Both now can
36837 optionally return the type of the toplevel element.
36839 * runtime.cpp (Value): Switch Value to strdup/free.
36841 Use inited to prevent multiple initializations.
36843 2007-06-07 Chris Toshok <toshok@ximian.com>
36845 * demo.cpp (main): track more of the api axing.
36847 * animation.h, animation.cpp (Storyboard::Begin): return
36848 immediately if we've already got a root clock.
36849 (globally) continue axing unused C api.
36851 2007-06-07 Chris Toshok <toshok@ximian.com>
36853 * demo.cpp: track all the animation changes away from the C api,
36854 and also test out the from/by animation combination by making the
36855 X scaling only go From 1.0 By -0.5 (so it animates in the range of
36858 * animation.h, animation.cpp: lots of changes - get rid of many of
36859 the animation/timeline C api calls, since they're unnecessary for
36860 the binding. Implement the nullable property getter/setters as
36861 #defines since I didn't want to c&p all of them and make the
36862 obvious mistakes. While I'm at it, implement the thing I needed
36863 nullable typed values for - "by" animation support. Now you can
36864 specify any of the following combinations and get a usable
36865 animation: From+By, From+To, By, To. You can actually just put
36866 From as well, but it won't animate (since both start end end will
36867 be the same). The To property overrides the By property, if both
36870 * runtime.h, runtime.cpp: add an overload of
36871 DependencyProperty::SetValue which takes a Value*, to enable
36872 nullable types to be set. the existing SetValue method calls the
36873 new one with &value.
36875 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36877 * brush.cpp: Fix comment.
36878 * shape.cpp: Reduce duplication.
36880 2007-06-07 Miguel de Icaza <miguel@novell.com>
36882 * runtime.h: Store Value.BOOL in an int32, simplifies my life.
36884 * runtime.cpp (dependency_object_set_value,
36885 dependency_object_get_value): Add C# callable method calls to
36886 control the properties.
36888 (dependency_property_lookup): Add a way of find dependency
36891 2007-06-07 Chris Toshok <toshok@ximian.com>
36893 * animation.cpp (TimeUpdated): comment out some spew.
36895 * runtime.cpp (SetValue): use the copy ctor, and fix != check for
36896 current_value and value.
36897 (Value::Value): add a copy ctor, which takes care of the g_strdup
36900 * runtime.h: add copy ctor for Value.
36902 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36904 * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
36906 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36908 * geometry.cpp: #if-out transforms, it crash the xaml samples
36909 * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
36911 2007-06-07 Chris Toshok <toshok@ximian.com>
36913 * animation.cpp: switch all the various linear interpolation
36914 expressions to using the LERP macro, and add the PointAnimation
36917 * animation.h: add PointAnimation.
36919 * runtime.h: add Value::POINTANIMATION.
36921 2007-06-07 Chris Toshok <toshok@ximian.com>
36923 * runtime.h (Value): add COLORANIMATION to the list of types.
36924 Also, add a Kind constructor so we can use that for nullable type
36925 default values in the ::RegisterProperty calls. That is,
36926 initializing the default to Value(Value::COLOR) gives you a null
36927 default value with the COLOR type.
36929 * runtime.cpp (Value): new Kind ctor.
36931 * animation.cpp/.h: add ColorAnimation.
36933 * demo.cpp (main): add a color animation that interpolates between
36934 Red and Blue for the SolidColorBrush.
36936 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36938 * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
36939 without a cairo_save|restore pair (or without resetting it's original
36940 value). Anyway right now it works without any of that :)
36942 2007-06-07 Jackson Harper <jackson@ximian.com>
36944 * runtime.cpp|h: add event triggers.
36945 * xaml.cpp: parse event triggers.
36947 2007-06-07 Chris Toshok <toshok@ximian.com>
36949 * animation.cpp/.h (Clock): initialize duration here.
36950 (TimeUpdated): instead of getting it every time through this
36953 2007-06-07 Chris Toshok <toshok@ximian.com>
36955 * animation.h: make Duration::FromSeconds return numbers of the
36956 same magnitude as get_now().
36958 * animation.cpp (Clock): fix UMR.
36960 2007-06-07 Jackson Harper <jackson@ximian.com>
36962 * xamp.cpp: Oops, not sure how that happened. Set the property
36963 name correctly, not to the type name.
36965 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36967 * geometry.cpp|h: Apply transform. Fix default values.
36969 2007-06-07 Miguel de Icaza <miguel@novell.com>
36971 * animation.cpp (get_now): The time computation was wrong, there
36972 was an extra "10" in there that made all computations go astray
36973 and in particular cause the large values for ScaleY, which made
36974 getboundingbox ridiculously slow.
36976 For debugging purposes: ScaleY was being set to
36977 131472940552.95215, which came from
36978 DoubleAnimation:GetCurrentValue which was computing this value
36979 from a busted clock.
36981 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
36983 * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
36984 Add basic code for the other geometry types.
36985 * runtime.cpp|h: Add basic implementation for point_from_str and
36987 * shape.h: Export some cairo helpers.
36988 * shape.cpp: Refactor drawing to reuse the code from geometry.
36989 * xaml.cpp: Add Point and Rect parsing.
36991 2007-06-07 Chris Toshok <toshok@ximian.com>
36993 * demo.cpp: make all the animation stuff work declaratively, and
36994 test some of the different repeatbehavior and autoreverse
36997 * animation.cpp: huge block of nasty code to determine our
36998 progress given the combinations of autoreverse and repeatbehavior.
37000 * animation.h: Add Duration stucture, add a few C api calls for
37001 getting/setting timeline properties.
37003 * runtime.h, runtime.cpp: add DURATION support to Value.
37005 2007-06-07 Jackson Harper <jackson@ximian.com>
37007 * runtime.cpp|h: Some pieces of the triggers framework.
37009 2007-06-07 Jackson Harper <jackson@ximian.com>
37011 * xaml.cpp: Handle repeat behaviors, lookup attached properties.
37013 2007-06-06 Chris Toshok <toshok@ximian.com>
37015 * animation.cpp, animation.h: add timeline_set_autoreverse.
37017 2007-06-06 Chris Toshok <toshok@ximian.com>
37019 * animation.h: add prototype for timeline_set_repeat_behavior.
37021 * animation.cpp (animation_init): register the RepeatBehavior
37023 (timeline_set_repeat_behavior): new function.
37025 * runtime.h: a better solution to enforcing types in the Value
37026 ctors - make Value (void*) private. this gives compilation errors
37027 at all usage points where you're passing an unrecognized pointer
37028 type. Also, add RepeatBehavior support to Value.
37030 * runtime.cpp: add repeatbehavior support to Value.
37032 * geometry.cpp: change all Value(pointer-to-struct) calls to
37033 Value(struct) calls.
37035 * transform.h: we need do define TransformGroup as a subclass of
37036 Transform, or the functions that SetValue a transformgroup fail to
37037 compile (since it's not a descendent of DependencyObject.)
37039 2007-06-07 Jackson Harper <jackson@ximian.com>
37041 * xaml.cpp: Get object element property setting working.
37043 2007-06-06 Chris Toshok <toshok@ximian.com>
37045 * runtime.h, runtime.cpp: add a special void* ctor to value so
37046 pointers aren't silently converted to bool (bad c++, bad!), and
37047 have that ctor output a warning message to the console, along with
37050 * brush.cpp: need to deref the Color* in the Value ctor.
37052 2007-06-06 Chris Toshok <toshok@ximian.com>
37054 * animation.cpp: new dump of the animation stuff. this is much
37055 closer in spirit and implementation to that of WPF's
37056 timing/animation system. it's not perfect yet, but it's much,
37059 2007-06-06 Chris Toshok <toshok@ximian.com>
37061 * runtime.h: make the point/color/rect copy constructors take a
37062 ref, not a pointer. also, make the value contructors for struct
37065 * runtime.cpp: make the value constructors for struct types
37068 * brush.cpp (brush_init): pass the Color by value.
37070 2007-06-06 Chris Toshok <toshok@ximian.com>
37072 * runtime.h, runtime.cpp: move the Value implementation (for
37073 everything but the operators) to the .cpp file.
37075 2007-06-06 Miguel de Icaza <miguel@novell.com>
37077 * runtime.h, runtime.cpp: Surface is no longer derived from
37078 Canvas, it now instead hosts a canvas, should avoid having two
37079 nested canvases for loading XAML files.
37083 Correct computation of the bounding box for shapes and videos.
37085 * shape.cpp: Do not pop the cairo state after draw and then call
37086 extents as the computation on extents is done with the current
37087 cairo context, not the cairo context that drew the data before
37088 popping (this would show up with thick brushes).
37090 * runtime.cpp: Add 2 instead of 1, as double to integer rounding
37091 can take two values (negative and positive).
37093 * cutil.cpp: Cut and paste cairo code here, it computes the proper
37094 bounding box from the extents using the current absolute matrix.
37096 * ffvideo.cpp (queue_data): Memory leak gone.
37098 2007-06-06 Jackson Harper <jackson@ximian.com>
37100 * xaml.cpp: Set brush attributes.
37102 2007-06-06 Jackson Harper <jackson@ximian.com>
37105 * transform.h: Need to register this base DependencyObject for the
37107 * geometry.cpp: use correct value kind for registering properties
37108 * runtime.cpp: Don't be strict about the type with properties that
37109 derive from DependencyObject, we can't be too strict here, because
37110 of inheritance the registered type BRUSH could be set to
37112 - register some properties with the correct type
37114 2007-06-06 Jackson Harper <jackson@ximian.com>
37117 * runtime.h: Staring to add triggers
37118 * shape.cpp: Use brush as our property kind
37120 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37122 * runtime.h: Add new types and SweepDirection enum.
37123 * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and
37124 LineSegment classes and [g|s]etter functions.
37126 2007-06-06 Miguel de Icaza <miguel@novell.com>
37128 * runtime.h: Move all the types into the Value::Kind enumeration
37129 so that we can have a shared type system.
37131 * demo.cpp (main): Allow loading a XAML file from the command
37132 line, for your testing pleasure.
37134 * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
37137 Move to cairo to render to the screen the contents
37138 of the buffer. ffmpeg and cairo do have the same RGBA format, it
37139 was actually the copy from this format to the screen using
37140 gdk_draw_pixbuf that failed: pixbuf expected the data in another
37141 format and there is no way to configure it.
37143 * runtime.cpp (surface_clear): use the cairo api as the surface is
37144 no longer living on the client buffer.
37146 (surface_destroy): update
37148 (create_xlib, realized_callback, unrealized_callback): When the
37149 widget is realized, create a cairo context
37151 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37153 * runtime.h: Add Value support for Point and Rect
37154 * geometry.cpp: Implement [g|s]etters for Point and Rect properties
37156 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
37158 * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
37160 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37162 * shape.cpp|h, runtime.cpp|h: Remove the (now) useless
37163 set_prop_from_str methods since everything they handled is now
37164 moved into DependencyProperty.
37166 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37168 * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke
37169 brushes. Add getter functions for fill and stroke.
37171 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37173 * runtime.h: Call SetObjectType on Brush and SolidColorBrush
37175 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
37177 * runtime.cpp, runtime.h: Remove the default_values hashtable
37178 from DependencyObject, it's redundant since the default value
37179 is stored inside the DependencyProperty anyway.
37181 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37183 * demo.cpp: Adapted to API changes.
37184 * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
37185 DependencyProperty. Add brush initialization code.
37186 * runtime.cpp|h: Change Brush to inherit from DependencyObject.
37187 Add Color support to Value. Call brush initialization.
37188 * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
37189 * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
37190 from DependencyObject.
37192 2007-06-06 Jeffrey Stedfast <fejj@gnome.org>
37194 * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
37195 non-NULL before trying to scale.
37197 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37199 * brush.cpp: Fix compiler warning.
37201 2007-06-06 Jackson Harper <jackson@ximian.com>
37203 * runtime.cpp/h: initialize xaml
37204 - Add canvas C style constructor
37205 - Make SolidColorBrush's Color public
37206 * shape.cpp: Comment out the set_prop... stuff, this code won't be
37207 used anymore, now that the xaml parser is using dependency objects
37210 * transform.cpp|h: Add some C style constructors
37211 * brush.cpp: Create colors from a string instead of solid brushes
37212 * xaml.cpp: Add in a known element tree, and move property setting
37213 into the xaml code, also added code for setting properties with
37214 property element syntax
37216 2007-06-05 Miguel de Icaza <miguel@novell.com>
37218 Add type checking on SetValue, RegisterProperty to avoid
37221 * runtime.cpp (SetValue): Add simple type checking
37222 (Register): Ensure that no empty values are passed.
37224 * runtime.h (DependencyObject): events, remove unused field.
37226 2007-06-05 Chris Toshok <toshok@ximian.com>
37228 * runtime.cpp: we need to maintain another hash table for
37229 DependencyProperties so we can return the actual property, not the
37230 default value, which is what GetDependencyProperty needs to do.
37231 (DependencyObject::FindName): implement this by either trying to
37232 use the namescope on this object or the global_NameScope (rather
37233 suboptimal, it's supposed to 'walk the logical tree' according to
37236 partially implement NameScope.
37238 * runtime.h: add NameScope, and add a uint64 Value. Also add
37239 FindName on DependencyObject.
37241 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37243 * shape.cpp|h: Add Shape's thickness and some dash support. Add more
37244 [g|s]etters for Shape using DependencyProperty.
37245 * demo.cpp: Add thickness and dashes to the rectangles.
37247 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37249 * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
37250 functions to retrieve the height and width of shapes (values defined
37251 in FrameworkElement).
37252 * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height
37253 and Width properties.
37254 * demo.cpp: Adjust to API changes.
37256 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37258 * shape.cpp: Remove (now) useless properties in Line.
37260 2007-06-05 Miguel de Icaza <miguel@novell.com>
37262 * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
37263 now have an absolute affine set for us beforehand.
37265 * runtim.cpp: on update_xform call the parent ::get_xform_for to
37266 obtain the base affine transform to use.
37268 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37270 * geometry.cpp|h: Use DependencyProperty for properties.
37271 * transform.h: Protect.
37273 2007-06-05 Chris Toshok <toshok@ximian.com>
37275 * runtime.h: call SetObjectType where we need it.
37279 * geometry.h: same.
37281 2007-06-05 Miguel de Icaza <miguel@novell.com>
37283 * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
37286 * runtime.cpp (item_set_transform): This routine was doing nothing
37287 but doing an invalidate of the region, updating the transform,
37288 updating the bounding box and re-invalidating the new area. Move
37289 that logic elsewhere (it was also ignoring the affine parameter
37292 Unify user_xform with the RenderTransform dependency property, now
37293 we always have a static absolute transformation in the UIElement.
37295 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37297 * shape.cpp|h: Update shape_init with correct values and implement
37300 2007-06-05 Chris Toshok <toshok@ximian.com>
37302 * animation.cpp (ClockTimeChanged): use the instance variety of
37303 GetDependencyProperty.
37305 * runtime.cpp (GetDependencyProperty): just call the static
37306 variety with our objectType.
37307 (SetObjectType): method to enable subclasses to set the object
37310 * runtime.h: add DependencyObject::SetObjectType, as well as the
37311 instance version of DependencyObject::GetDependencyProperty.
37313 * transform.h: call SetObjectType to identify this object.
37315 2007-06-05 Chris Toshok <toshok@ximian.com>
37317 * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
37319 2007-06-05 Chris Toshok <toshok@ximian.com>
37321 * runtime.h (Canvas): declare our dependencyproperties here.
37323 * runtime.cpp (canvas_init): actually assign the properties.
37325 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
37327 * runtime.cpp, runtime.h: Implement a DependencyProperty::
37328 GetDependencyProperty.
37330 2007-06-05 Chris Toshok <toshok@ximian.com>
37332 * runtime.cpp (OnSubPropertyChanged): remove the event handler for
37333 the render transform and use OnSubPropertyChange instead.
37334 (item_set_render_transform): clean this up substantially - the
37335 property system handles all the "event" stuff now.
37336 (item_get_render_transform): we need a getter now that this uses
37338 (NotifyAttacheesOfPropertyChange): new method, call
37339 OnSubPropertyChanged with both the attachee's property (the thing
37340 storing 'this') and the subproperty that changed.
37341 (SetValue): complicate the attachee stuff a bit, since we need to
37342 store both the object and the property it's storing the value in.
37343 (item_init): initialize RenderTransformProperty.
37345 * runtime.h: make UIElement subclass from DependencyObject. This
37346 flattens the hierarchy some from SL (which has Visual in between,
37347 but we have no Visual.)
37349 * transform.cpp (OnPropertyChanged): call
37350 NotifyAttacheesOfPropertyChange. Also, reindent some stuff.
37352 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37354 * demo.cpp: Updated to use rectangle_set_radius_[x|y]
37355 * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
37356 * xaml.cpp: Updated for API change.
37358 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37360 * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
37361 from DependencyObject.
37362 * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
37364 2007-06-05 Jeffrey Stedfast <fejj@gnome.org>
37366 * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
37367 we simply cannot play sound (or maybe there is no sound), either
37368 way, don't try to dereference the audio_codec pointer if it is
37369 NULL. Also wrapped audio setup in an #ifdef
37371 2007-06-05 Miguel de Icaza <miguel@novell.com>
37373 Implement the OnPropertySet stuff, builds on Toshok's first pass.
37375 Next stage: discuss with Toshok the migration to this awesome
37376 framework from Events ;-)
37378 * runtime.cpp (SetValue): when adding dependencyobjects track on
37379 the attached object the ownership.
37381 Notify all containers of a property change.
37383 * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
37384 use the property notification system for these.
37386 * runtime.h (DependencyObject): Add a "attached_list" gslist to
37387 keep track of all the objects where this particular
37388 DependencyObject has been attached to, to provide OnPropertyChange
37389 notifications (not hooked up yet).
37391 (Value): Introduce DependencyObject constructor.
37393 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37395 * shape.cpp|h: Started moving properties to DependencyObject. Added
37397 * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
37398 * runtime.cpp: Added calls to shape_init and geometry_init
37399 * runtime.h: Added Rect structure and new DependencyObject types for
37400 shapes and geometry.
37401 * Makefile.am: Added geometry.cpp|h to source files.
37403 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
37405 * runtime.h: initialize Value to zero on construction.
37407 2007-06-05 Chris Toshok <toshok@ximian.com>
37409 * demo.cpp: abstract the cairo transformations away by using
37410 RotateTransforms.. and this is probably going to annoy some
37411 people, but make the normally stationary elements bounce between
37412 smaller and larger.
37414 * animation.h: make Clock subclass from DependencyObject.
37416 * animation.cpp (animation_init): assign the properties, don't
37417 just call Register.
37419 also, track the EventObject method name change.
37421 * runtime.cpp (item_set_render_transform): new method. unhook the
37422 old transform and hook up the new one. also, explicit set our
37423 transformation here.
37424 (SetValue): make this only do the work (and more importantly only
37425 call OnPropertyChanged) if the value is different.
37427 * runtime.h: shorten the names of the EventObject methods. Add
37428 operator== and operator!= to Value. Add an EventObject to
37429 DependencyObject to give us rudimentary event handlers. Add the
37430 render_transform "higher-level" transform into to UIElement.
37432 * transform.h: add the OnPropertyChanged override and rename
37433 transform_get_value to transform_get_transform.
37435 * transform.cpp (transform_init): oops. we need to actually
37436 assign the properties.
37437 (transform_get_transform): indent.
37438 (OnPropertyChanged): override this method to emit
37439 "TransformChanged".
37441 2007-06-04 Chris Toshok <toshok@ximian.com>
37443 * Makefile.am (libmoon_la_SOURCES): add animation and transform to
37446 * runtime.h: flesh out Value some, adding BOOL (has to be C++
37447 bool, not gboolean, or else it conflicts with int32), INT32,
37448 INT64, and STRING (char*).
37450 * runtime.cpp (runtime_init): call animation_init and
37453 * animation.cpp, animation.h, transform.h, transform.cpp: get
37454 these using the new dependency object/value foo, and get them
37457 2007-06-04 Miguel de Icaza <miguel@novell.com>
37459 * runtime.h: Make the "Base" refcounting class the base for
37462 * ffvideo.cpp: Set audio initialization to zero for now, so we can
37463 continue debugging.
37465 * runtime.cpp (Canvas): override render, in preparation for using
37466 attached properties. I get the feeling am going to regret not
37467 keeping the top/left attached properties somewhere else.
37469 (Value): introduce the discriminating union for values as
37472 (DependencyObject): use lower case name for properties.
37473 Take Value * instead of void *, this is so we can represent NULL
37474 values (is this a good idea Chris, or do we want to have a
37475 Value.Type.NULL enumeration value?
37477 Update hash table creation to g_free the result on hash table
37478 update and removal.
37480 (Event): Update indentation to be Linux-like instead of GNU like.
37482 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
37484 * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions
37485 to create them. Replace the "old" C1 constant in Ellipse::Draw with
37486 ARC_TO_BEZIER (now that I know where it comes from ;-)
37488 2007-06-04 Jeffrey Stedfast <fejj@novell.com>
37490 * ffvideo.cpp (queue_data): Got sound kinda sorta working...
37492 2007-06-04 Jackson Harper <jackson@ximian.com>
37494 * xaml.cpp: Give elements a type
37496 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
37498 * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
37500 2007-06-04 Chris Toshok <toshok@ximian.com>
37502 * animation.h, animation.cpp: initial pass at some of the
37503 animation stuff. doesn't build yet.
37505 2007-06-04 Chris Toshok <toshok@ximian.com>
37507 * runtime.cpp, runtime.h: add EventObject, a c++ only base class
37508 for managing events.
37510 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
37512 * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
37513 and added Draw methods to Polygon and Polyline.
37514 * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
37515 and match changes in header file.
37517 2007-06-04 Jackson Harper <jackson@ximian.com>
37519 * shape.cpp/h: width and height are properties of the
37522 2007-06-04 Jackson Harper <jackson@ximian.com>
37524 * shape.cpp/h: add ellipse_new
37525 - set width/height on ellipses (ellipsi ?) and draw them.
37526 * xaml.cpp: create ellipses, get zorder correct
37528 2007-06-04 Jackson Harper <jackson@ximian.com>
37530 * xaml.cpp: put in character data functionality, eventually we
37531 will need to add FrameworkElement methods for setting the default
37532 content element. See
37533 http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
37534 for more info on content properties.
37536 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
37538 * demo.cpp: Include shape.h and use a rounded-rectangle
37539 * runtime.h: Added FillRule and moved out Shapes.
37540 * shape.h: New. Moved all shapes from runtime.h and added new ones.
37541 * shape.cpp: Added Polygon and Polyline.
37542 * xaml.cpp: Include shape.h
37543 * Makefile.am: Add shape.h
37545 2007-06-04 Chris Toshok <toshok@ximian.com>
37547 * transform.cpp, transform.h: initial code for the transform
37548 objects. doesn't compile yet.
37550 2007-06-04 Jackson Harper <jackson@ximian.com>
37552 * demo.cpp: fix typo
37554 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
37556 * demo.cpp: Fix for API changes.
37557 * runtime.h: Add FrameworkElement, other Shape properties and move
37558 around some properties to match the managed definitions.
37559 * shape.cpp: Add setters for new Shape properties and move properties
37560 parsing to match managed definitions.
37561 * xaml.cpp: Fix for API changes.
37563 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
37565 * shape.cpp: Don't typecast doubles into ints.
37567 2007-06-04 Jackson Harper <jackson@ximian.com>
37570 * xaml.cpp: Implement function that allows you to load xaml from a
37572 * demo.cpp: add a very small xaml demo
37574 2007-06-04 Jackson Harper <jackson@ximian.com>
37576 * xaml.cpp: remove old no longer used function.
37577 - track whether or not we are adding to a panel instead of surface
37578 * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
37580 2007-06-04 Jackson Harper <jackson@ximian.com>
37582 * shape.cpp: Add new methods to allow shapes to have their
37583 properties filled in from text values.
37585 * brush.cpp: Start work on allowing solid color brushes to be
37586 created from strings.
37588 * runtime.cpp: stub in methods for setting properties on canvas
37589 and UIElements (these had some meat but I am removing it now that
37590 some of the names are updated, will put back later).
37592 * runtime.h: add some methods and functions for XAML parsing.
37594 * xaml.cpp: Initial implementation of the XAML parser.
37596 2007-06-03 Miguel de Icaza <miguel@novell.com>
37598 * runtime.cpp (Collection, Panel): The beginning of an API to
37599 encapsulate collections that we will expose to the unmanaged
37602 This should be the backend for the base collection class in agclr
37603 for the strongly typed types.
37605 The idea is to have the MS.Internal.Collection<T> be a proxy that
37606 contains an IntPtr pointer to the C++ Collection instance and map
37607 the various add/remove methods to it.
37609 The immediate goal is to be able to do from C#:
37611 Rectangle r = new Rectangle ();
37612 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
37613 Canvas.Children.Add (r);
37615 2007-06-02 Miguel de Icaza <miguel@novell.com>
37617 Implement support for the render origin.
37619 * runtime.cpp (item_invalidate): add one to cope with the rouding
37620 from floats to ints (fixes some trailing junk).
37622 Item: redo the affine transformation setup to support both the
37623 render_transform_origin property and avoid recomputing all of this
37624 on each repaint request.
37626 * ffvideo.cpp: Changed the code to do the actual video decoding on
37627 the main thread so we can put all the video and audio in the
37628 queues before we start rendering.
37630 Failed attempts at getting audio to work.
37632 * Everywhere: renamed Item to UIElement to better match the actual
37633 class hierarchy that we will be exposing.
37635 2007-06-01 Jackson Harper <jackson@ximian.com>
37637 * shape.cpp: Fix typo.
37639 2007-06-01 Miguel de Icaza <miguel@novell.com>
37641 * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
37642 notify a special function (callback_video_inited). Makes me
37643 wonder if I should do the same for the new-frame call
37645 Initialize the cairo surface on the callback_video_inited routine
37646 instead of doing this on the decoder thread (that was a mistake).
37648 This solves the misterious case of the video that randomly did not
37651 2007-05-29 Miguel de Icaza <miguel@novell.com>
37653 * video.cpp (load_next_frame): reimplement the video play back
37654 logic so that it will now properly paint the proper frame on the
37657 Add logic to skip frames if video is playing back too slowly, and
37658 to resume playback when new frames are ready.
37660 Currently its computing the delay using the n_frame_rate field
37661 (which no sample uses, but I could not find any other way of
37662 estimating the frame rate other than this.
37664 It works at least with some sample streams that I have with 30 fps
37667 * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
37668 and handle exposes in the runtime, not in the demo. Show the
37669 widget (thats why I was not getting the expose events on the
37672 2007-05-26 Miguel de Icaza <miguel@novell.com>
37674 * runtime.cpp (Brush, SolidBrush): Introduce brushes.
37676 (Shape): introduce reusable drawing framework for shapes, not
37679 (Line): introduce second user besides rectangles.
37681 Remove agg test code.
37683 (Group::getbounds): implement.